增加或减少数据节点的数量和NoOfReplicas有关,一般来说NoOfReplicas是2,那么增加或减少的数量也应该是成对的,否则要设置另外的NoOfReplicas。
首先是在配置文件中添加两个节点的设置,如下:
vi config.ini 添加
[NDBD]
id=30
HostName=192.168.100.223
[NDBD]
id=31
HostName=192.168.100.224
用ndb_mgm工具,停掉管理节点,然后重新启动管理节点
执行ndb_mgm进入管理命令界面
找到管理节点的id,然后执行管理节点id stop,退出
执行
/usr/bin/ndb_mgmd -f /usr/local/mysql/mysql-cluster/config.ini --reload 重新启动管理节点
登陆上去用show命令查看,是否出现了新添加的两个节点!
环状重启(一次重启数据节点和sql节点)
初始化新添加的两个节点:
ndbd --initial (执行初始化之后会自动创建数据文件,undo日志文件等等)
通过ndb_mgm创建nodegroup
CREATE NODEGROUP 30,31
重新分配cluster的数据
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大表的时候很慢,很容易出问题)
表的数据量很多的时候,最好自己编写脚本,实现数据的重新分区和优化。
从实验上看,迁移数据到其他节点的时候,会影响使用(变现为数据迁移期间,数据访问缓慢!)