二、日常备份和恢复
cluster的备份命令非常容易,在管理节点上执行:
mgmd>start backup
语法:
START BACKUP [backup_id] [wait_option] [snapshot_option]
官方文档我就不抄了。控制台会显示当前备份的简要信息,如:哪个节点开始备份等。你也可以指定具体哪个节点开始备份。cluster的备份数据存放在每个数据节点的数据目录下,从1开始,每次备份产生一个备份目录,形如:BACKUP-备份id。在不指定节点的情况下,每个节点会依次备份。cluster的备份是在线的,不闭塞的,这样我们在备份时完全不用担心会造成数据库堵塞。恢复数据同样简单,我们在每个数据节点(注意:是每个数据节点,不是其中某一个)发出如下指令:
shell>/opt/soft/mysql/bin/ndb_resotre -c “管理服务器IP:1186” -n 节点id -b 备份id -r 就行,如果不想记binlog日志,可以加上–no-binlog参数,全部参数列表请参考官方文档。
三、在线扩展节点
Mysql cluster宣称可以在业务量大大增长时,在线添加节点以适应业务需求。方法如下:
(注:以下192.168.0.10是管理节点IP)
1.添加一个[ndbd]并在config.ini里加入
2.停掉mgmd : 10 stop 再重启 ndb_mgmd -f config.ini --reload (这里10是管理节点的id)
3.在已存在的数据节点上rolling restart :
mgmd>原数据节点ID1 restart
mgmd>原数据节点ID2 restart
可以在ndbinfo.nodes表检查确认所有的数据节点使用了新的配置
4.rolling restart所有的sql和api节点 (如果有配置/etc/init.d/mysql.server restart也一样)
mysqladmin -uroot -ppassword shutdown
mysqld_safe --ndbcluster --ndb-connectstring=192.168.0.10 &
5.在新节点上执行初始化启动
ndbd -c 192.168.0.10 --initial
6.建新节点组3,4是新节点的ID
mgmd>CREATE NODEGROUP 3,4
7.再分配集群数据,对每个表执行一次
ALTER ONLINE TABLE tbl REORGANIZE PARTITION.
如果数据量很大,这个过程比较慢,请耐心等待。(如果要数落cluster的不足,我认为在线添加数据节点算是一个)
四、Replication
今天,Mysql的replication异步复制技术已经相当成熟,使用也非常频繁。cluster同样对replication提供了支持。配置非常简单,仅需在cluster中任意一台myql节点上启用binlog,作为master,然后在从库上不启用ndb引擎,其他配置和mysqld之间的replication完全一样。这里需要注意的一点是,你的binlog_format需要设置为STATEMENT,一定不要设置为MIXED,否则你的触发器将会令你的同步出错