天天看點

mysql cluster線上添加資料節點

        增加或減少資料節點的數量和NoOfReplicas(即副本數,通過管理節點的config.ini配置檔案來設定)有關,一般來說NoOfReplicas是2,那麼增加或減少的數量也應該是成對的,否則要設定另外的NoOfReplicas。首先必須確定新加入的資料節點作為新的group加入,預設2個node為1個group,Group數量=Node總數/NoOfReplicas數。

1.修改管理節點的config.ini配置檔案 ,添加如下一段:

[NDBD]

Id=6

HostName= 10.30.9.208

Datadir=/opt/mysql-cluster/data

[NDBD]

Id=7

HostName= 10.30.9.211

Datadir=/opt/mysql-cluster/data

這裡的Id不能跟已有的Id重複

2.關閉管理節點,用reload方式啟動管理節點

執行ndb_mgm進入管理指令界面

找到管理節點的id,然後執行管理節點id stop,退出

[[email protected] mysql-cluster]# libexec/ndb_mgmd -f /opt/mysql-cluster/etc/config.ini --reload    #加上reload參數,使得修改過的config.ini生效

啟動成功後用show檢視,可以 看到新加入的資料節點,并且處于未連接配接狀态。

3.滾動重新開機舊的資料存儲節點服務(滾動重新開機,不能所有節點同時重新開機,如果同時停止,資料庫前端查詢就會出現錯誤)

ndb_mgm> 2 RESTART

Node 2: Node shutdown initiated

Node 2: Node shutdown completed, restarting, no start.

Node 2 is being restarted

ndb_mgm> Node 2: Start initiated (version 7.1.19)

Node 2: Started (version 7.1.19)

ndb_mgm> 3 RESTART

Node 3: Node shutdown initiated

Node 3: Node shutdown completed, restarting, no start.

Node 3 is being restarted

ndb_mgm> Node 3: Start initiated (version 7.1.19)

ndb_mgm> Node 3: Started (version 7.1.19)

4.  滾動重新開機所有的資料查詢節點服務

[[email protected] mysql-cluster]#bin/ mysqladmin -uroot -ppassword shutdown

[[email protected] mysql-cluster]# mysqld_safe --console --ndbcluster --ndb-connectstring=192.168.0.10

5.以初如化方式 啟動新增加的資料存儲節點

[[email protected] mysql-cluster]#ndbd -c 10.30.9.204 --initial

啟動後在管理節點上用show指令檢視可以 看到新加入的節點已經啟動并處于未分組狀态

id=6 @10.30.9.208 (5.1.56-ndb-7.1.19, no nodegroup)

id=7 @10.30.9.211 (5.1.56-ndb-7.1.19, no nodegroup)

6.為新節點增加分組,在管理節點上ndb_mgm下輸入以下指令:

ndb_mgm> create nodegroup 6,7

這時在管理節點上show,可以看到新節點已經分組。

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 4 node(s)

id=2 @10.30.9.206 (mysql-5.1.56 ndb-7.1.19, Nodegroup: 0, Master)

id=3 @10.30.9.207 (mysql-5.1.56 ndb-7.1.19, Nodegroup: 0)

id=6 @10.30.9.208 (mysql-5.1.56 ndb-7.1.19, Nodegroup: 1)

id=7 @10.30.9.211 (mysql-5.1.56 ndb-7.1.19, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @10.30.9.204 (mysql-5.1.56 ndb-7.1.19)

[mysqld(API)] 4 node(s)

id=4 @10.30.9.208 (mysql-5.1.56 ndb-7.1.19)

id=5 @10.30.9.211 (mysql-5.1.56 ndb-7.1.19)

id=8 @10.30.9.206 (mysql-5.1.56 ndb-7.1.19)

id=9 @10.30.9.207 (mysql-5.1.56 ndb-7.1.19)

7.重新配置設定叢集資料(資料量表比較大時,會出現很多問題;我當時表裡資料量為三千萬條,一直報錯,報錯解決後提示成功,但資料沒有遷移過去,最後沒有弄,直接把表資料删除了……

現把網上找到的方法貼到下面)

SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE = 'NDBCLUSTER';

ALTER ONLINE TABLE table_name REORGANIZE PARTITION

然後通過show指令或者使用ndb_desc指令檢視

ndb_desc -c 192.168.0.10 -d tuge datasource -p

-c後面跟管理節點的ip,-d跟資料庫的名字,datasource為表名,-p輸出分區的詳細資訊

遷移之後空間還沒有釋放出來,需要通過optimize指令優化表,釋放遷移走的空間(當optimize一個ndb大表的時候很慢,很容易出問題)

表的資料量很多的時候,最好自己編寫腳本,實作資料的重新分區和優化。