GreatDB作為一款國產化分布式數據庫產品,在金融、運營商、能源等行業已有廣泛應用。其在Mysql8.0MGR的基礎之上做了大量的優化,在分布式可擴展性、數據庫兼容性以及集群高可用層面有自己的優勢,本文將簡單介紹GreatDB的基本架構,并測試快速部署計算存儲分離集群環境。
GreatDB整體架構如下圖所示包括計算層和存儲層、其中計算層部分實現分布式數據庫架構下的整個集群元數據、數據節點和計算節點的管理和維護。
架構特點
計算層和存儲層可以獨立彈性擴展。
計算層和存儲層之間沒有強耦合性,實現計算與存儲的分離。
計算和存儲層的特性重點不?樣,可以針對性的進行開發迭代。
SQL節點(計算層)
SQL節點之間使?MGR的多主模式,組成了?個全同步集群,也作為數據庫集群暴露給應?程序的節點。每個SQL節點 都可以接收?戶的讀寫請求。SQL節點主要負責實現了?研的GreatDB引擎,其功能如下:
維護集群的元數據信息
維護表的分布信息
與數據節點通信,將數據存取任務下發到數據節點
SQL節點擴充了MySQL系統表,會將集群元數據寫?到系統表中,?戶操作任何?個節點改變了集群的元數據,都會通過全同步復制同步到集群其它節點,從?達到元數據強一致的效果。
數據節點(存儲層)
數據節點按照shard進?劃分,?個shard內的數據節點構成?個MGR單主集群,負責存儲集群的一個分?的數據,?個 shard內保證副本數據的強一致性。所有shard共同構成集群的完整數據。數據節點主要負責如下功能:
接收SQL節點的SQL命令并執?。
組建MGR集群,?動故障恢復。數據節點不?具有存儲功能,數據節點?樣具有計算能?,可以進?復雜計算,SQL節點可以將部分計算邏輯下推到計算節點進?計算。
連接方式
應用客戶端可以通過JDBC或者ODBC直接連接到計算節點,也可以經過負載均衡F5或loadbalance或LVS或HAProxy的方式連接到計算節點,達到流量均衡的目的。
GreatDB集群計算存儲分離環境部署至少需要三臺計算節點、三臺數據節點,服務器與端口配置設計如下:
依賴庫安裝 GreatDB Cluster服務器程序依賴libaio庫,用戶可以通過如下命令進?安裝。
▼▼▼
## Yum-based systems
shell> yum search libaio # search for info
shell> yum install libaio-devel # install library
GreatDB Cluster客戶端程序依賴libncurses庫,用戶可以通過如下命令進?安裝:
▼▼▼
## Yum-based systems
shell> yum search ncurses # search for info
shell> yum install ncurses-devel # install library
將greatdb-cluster-5.0.6-2e6cda47fea-Linux-glibc2.17-x86_64.tar.gz軟件安裝包上傳至所有服務器
在所有服務器解壓軟件安裝包至目錄/usr/local/greatdb-cluster
按照下?的指令進?軟件包的安裝:
▼▼▼
shell> groupadd greatdb
shell> useradd -r -g greatdb -s /bin/false greatdb
shell> cd /usr/local
shell> tar -xzvf greatdb-cluster-5.0.6-2e6cda47fea-Linux-glibc2.17-x86_64.tar.gz
shell> ln -s greatdb-cluster-5.0.6-2e6cda47fea-Linux-glibc2.17-x86_64 greatdb-cluster
shell> cd greatdb-cluster
shell> chown greatdb:greatdb -R
為了?便管理,統?將配置?件設置在 /etc/greatdb-cluster ?錄下,數據?錄設置 在 /var/lib/greatdb-cluster ?錄下。
▼▼▼
shell> mkdir /var/lib/greatdb-cluster
shell> mkdir /etc/greatdb-cluster
每個節點和?件及?錄的對應關系如下:
配置?件模板 SQLNode和DataNode的配置?件模板與MySQL配置方式?致,為了簡化?成配置?件的復雜度,針對單機快速部署提供如下bash腳本create_config.sh ,內容如下:
▼▼▼
#!/bin/bash
set -ex
ip=$1
port=$2
echo "[mysqld]
datadir=/var/lib/greatdb-cluster/$port
socket=/var/lib/greatdb-cluster/$port/greatdb.sock
user=greatdb
port=$2
server_id=$RANDOM
max_connections=1000
report-host=$1
## group replication configuration
binlog-checksum=NONE
enforce-gtid-consistency
gtid-mode=ON
loose-group_replication_start_on_boot=OFF
loose_group_replication_recovery_get_public_key=ON
loose-group_replication_local_address= "$1:1$2""
此模板接收兩個參數,node名稱和端?號,這?使? create_config.sh創建不同節點的配置?件。
▼▼▼
# 在sqlnode1上?成計算實例的配置?件
bash create_config.sh 172.16.134.133 3306 > /etc/greatdb-cluster/3306.cnf
# 在sqlnode2上?成計算實例的配置?件
bash create_config.sh 172.16.134.134 3306 > /etc/greatdb-cluster/3306.cnf
# 在sqlnode3上?成計算實例的配置?件
bash create_config.sh 172.16.134.135 3306 > /etc/greatdb-cluster/3306.cnf
## 在datanode1上?成數據節點的配置?件
bash create_config.sh 172.16.134.136 3307 > /etc/greatdb-cluster/3307.cnf
bash create_config.sh 172.16.134.136 3308 > /etc/greatdb-cluster/3308.cnf
## 在datanode2上?成數據節點的配置?件
bash create_config.sh 172.16.134.137 3307 > /etc/greatdb-cluster/3307.cnf
bash create_config.sh 172.16.134.137 3308 > /etc/greatdb-cluster/3308.cnf
## 在datanode3上?成數據節點的配置?件
bash create_config.sh 172.16.134.138 3307 > /etc/greatdb-cluster/3307.cnf
bash create_config.sh 172.16.134.138 3308 > /etc/greatdb-cluster/3308.cnf
創建好各?的配置?件后,直接使?greatdb_init初始化各個節點,greatdb_init會?動初始化數據庫節點 實例,并啟動實例。
在sqlnode1,sqlnode2,sqlnode3上,分別進? /usr/local/greatdb-cluster ?錄,使?greatdb_init初始 并啟動SQLNode。
▼▼▼
## 在sqlnode1上初始化計算實例的數據?錄
[root@sqlnode1]# bin/greatdb_init --defaults-file=/etc/greatdb-cluster/3306.cnf --cluster_user=greatdb --cluster-host=% --cluster-password=greatdb --node-type=sqlnode
## 在sqlnode2上初始化計算實例的數據?錄
[root@sqlnode2]# bin/greatdb_init --defaults-file=/etc/greatdb-cluster/3306.cnf --cluster_user=greatdb --cluster-host=% --cluster-password=greatdb --node-type=sqlnode
## 在sqlnode3上初始化計算實例的數據?錄
[root@sqlnode3]# bin/greatdb_init --defaults-file=/etc/greatdb-cluster/3306.cnf --cluster_user=greatdb --cluster-host=% --cluster-password=greatdb --node-type=sqlnode
在datanode1,datanode2,datanode3上,分別進? /usr/local/greatdb-cluster ?錄,使?greatdbd初始 化DataNode的數據?錄。
▼▼▼
## 在datanode1上初始化數據節點的數據?錄
[root@datanode1]# bin/greatdb_init --defaults-file=/etc/greatdb-cluster/3307.cnf --cluster_user=greatdb --cluster-host=% --cluster-password=greatdb --node-type=datanode
[root@datanode1]# bin/greatdb_init --defaults-file=/etc/greatdb-cluster/3308.cnf --cluster_user=greatdb --cluster-host=% --cluster-password=greatdb --node-type=datanode
## 在datanode2上初始化數據節點的數據?錄
[root@datanode2]# bin/greatdb_init --defaults-file=/etc/greatdb-cluster/3307.cnf --cluster_user=greatdb --cluster-host=% --cluster-password=greatdb --node-type=datanode
[root@datanode2]# bin/greatdb_init --defaults-file=/etc/greatdb-cluster/3308.cnf --cluster_user=greatdb --cluster-host=% --cluster-password=greatdb --node-type=datanode
## 在datanode3上初始化數據節點的數據?錄
[root@datanode3]# bin/greatdb_init --defaults-file=/etc/greatdb-cluster/3307.cnf --cluster_user=greatdb --cluster-host=% --cluster-password=greatdb --node-type=datanode
[root@datanode3]# bin/greatdb_init --defaults-file=/etc/greatdb-cluster/3308.cnf --cluster_user=greatdb --cluster-host=% --cluster-password=greatdb --node-type=datanode
使? root 登陸任意?個SQLNode,進?初始化集群操作,隨后進?添加SQLNode和DataNode的操 作,這?以sqlnode1作為初始化節點。
▼▼▼
## 登陸sqlnode1
[root@localhost greatdb-cluster]# bin/greatsql -h127.0.0.1 -P3306 -uroot
## 初始化集群
GreatDB Cluster> call mysql.greatdb_init_cluster(greatdb_cluster, greatdb, greatdb);
Query OK, 1 row affected (4.24 sec)
## 添加SQLNodesqlnode2
GreatDB Cluster> call mysql.greatdb_add_sqlnode(172.16.134.134, 3306);
Query OK, 1 row affected (4.24 sec)
## 添加SQLNodesqlnode3
GreatDB Cluster> call mysql.greatdb_add_sqlnode(172.16.134.135, 3307);
Query OK, 1 row affected (4.24 sec)
## 添加shard1的數據節點并初始化
GreatDB Cluster> call mysql.greatdb_add_datanode(shard1, sd1_dn1, 172.16.134.136, 3307, NODE_MGR);
Query OK, 1 row affected (0.03 sec)
GreatDB Cluster> call mysql.greatdb_add_datanode(shard1, sd1_dn2, 172.16.134.137, 3307, NODE_MGR);
Query OK, 1 row affected (0.03 sec)
GreatDB Cluster> call mysql.greatdb_add_datanode(shard1, sd1_dn3, 172.16.134.138, 3307, NODE_MGR);
Query OK, 1 row affected (0.03 sec)
GreatDB Cluster> call mysql.greatdb_init_shard(shard1);
Query OK, 1 row affected (4.24 sec)
## 添加shard2的數據節點并初始化
GreatDB Cluster> call mysql.greatdb_add_datanode(shard2, sd2_dn2, 172.16.134.136, 3308, NODE_MGR);
Query OK, 1 row affected (0.03 sec)
GreatDB Cluster> call mysql.greatdb_add_datanode(shard2, sd2_dn3, 172.16.134.137, 3308, NODE_MGR);
Query OK, 1 row affected (0.03 sec)
GreatDB Cluster> call mysql.greatdb_add_datanode(shard2, sd2_dn1, 172.16.134.138, 3308, NODE_MGR);
Query OK, 1 row affected (0.03 sec)
GreatDB Cluster> call mysql.greatdb_init_shard(shard2);
Query OK, 1 row affected (4.24 sec)
創建完成查看SQL節點狀態:
查看數據節點狀態:
更多精彩干貨分享
點擊下方名片關注
IT那活兒
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129852.html
摘要:本文整理了年月國產數據庫大事件和重要產品發布消息。柏睿數據庫加速安全卡面向全球重磅發布。月日,在全球數字經濟大會成果發布會上,中國移動北京分公司與國產數據庫領域新銳企業柏睿數據簽署戰略合作協議。本次大賽主要面向全國愛好數據庫的高校學生。 本文整理了2021年8月國產數據庫大事件和重要產品發布消息。目錄8月國產數據庫大事記TOP108月國產數據庫大事記時間線產品/版本發布兼容認證8月排行榜新增...
.markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body...
摘要:月日消息,近日,中國信息通信研究院大數據產品能力評測數據庫方向的測評結果陸續出爐。月日消息,國家工業信息安全發展研究中心發布電信行業數據庫產品第一期測評結果,前三名分別是阿里云數據庫柏睿數據企業級交易型數據庫信創版云和恩墨企業級數據庫。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-si...
摘要:年月國產數據庫流行度排行榜前名達夢本月分數下跌,總分,位于榜單第二位。人大金倉保持增長態勢,本月分數大幅上漲,總分,位于榜單第九位。達夢入選其中,位列總榜第國產數據庫第。月日,人大金倉與天津科大正式簽訂聯合人才培養協議。2021年11月國產數據庫流行度排行榜前15名 ? 達夢本月分數下跌10.88,總分467.45,位于榜單第二位。作為具有完全自主知識產權的國產數據庫廠商,今年達夢的...
摘要:年月國產數據庫流行度排行榜前名連續三個月的分數下跌讓名次下降一位,以分的總分來到榜單第三。國產數據庫流行度排行榜與趨勢變化本月分數下跌,總分,位于榜單第五。 2021年10月國產數據庫流行度排行榜前15名 連續三個月的分數下跌讓OceanBase名次下降一位,以424.83分的總分來到榜單第三。本月,OceanBase有幾個重要事件,如亮相2021中國國際服務貿易交流會,參與HICOO...
摘要:長久以來,惠普戴爾都是服務器市場的老三樣,但云計算時代的到來,使得服務器行業的競爭格局發生了翻天覆地的變化,國產品牌正從追趕者轉變為引領者。國產品牌正在全球高端服務器領域發揮著越來越重要的作用。長久以來,惠普、戴爾、IBM都是服務器市場的老三樣,但云計算時代的到來,使得服務器行業的競爭格局發生了翻天覆地的變化,國產品牌正從追趕者轉變為引領者。國產品牌正在全球高端服務器領域發揮著越來越重要的作...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1860·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20