Mysql Cluster在线添加数据节点
增加或减少数据节点的数量和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命令查看
环状重启
初始化新添加的两个数据节点节点:
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 test zhang -p
-c后面跟管理节点的ip,-d跟数据库的名字,zhang为表名,-p输出分区的详细信息
最后还要通过optimize命令优化表,较少空间浪费
表很多的时候,最好自己编写脚本,实现数据的重新分区和优化。
从实验上看,迁移数据到其他节点的时候,会影响使用(变现为数据迁移期间,数据访问缓慢!),另外在使用optimize命令优化超过1G的表时非常慢。