MySQL--Percona-XtraDB-Cluster使用xtrabackup来添加节点
虽然PXC支持在线增加群集节点,但是目前尚未解决wsrep_sst_method=xtrabackup 或wsrep_sst_method=mysqldump时报错的问题,因此尝试手动完成xtrabackup备份和恢复并添加到群集节点。
场景:
有三台干净的CentOS 6的服务器,IP配置为:192.168.166.169,192.168.166.170,192.168.166.171,准备搭建三节点的Percona XtraDB Cluster,目前192.168.166.169,192.168.166.170已加入到群集,准备将192.168.166.171加入到群集中。
192.168.166.169的wsrep_node_name为pxc1,
192.168.166.170的wsrep_node_name为pxc2,
192.168.166.171的wsrep_node_name为pxc3,
============================================
首先在服务器192.168.166.170上备份,使用galera-info来获取备份时的群集序列号:
/usr/bin/innobackupex --defaults-file="/etc/my.cnf" \ --host="localhost" \ --port=3306 \ --user="sstuser" \ --password="s3cret" \ --socket="/var/lib/mysql/mysql.sock" \ --galera-info \ "/pxc_backup/"
将备份复制到192.168.166.171上,切换到备份目录下,执行恢复:
innobackupex --apply-log ./
恢复完成后,可以看到一个xtrabackup_galera_info,该文件中存放备份时的群集序列号
本次demo中xtrabackup_galera_info数据为:
5f3c567e-033f-11e6-a67c-67e2991c9c84:13
从192.168.166.169或192.168.166.170复制文件grastate.dat到192.168.166.171上
默认rpm安装下,grastate.dat路径为:/var/lib/mysql
然后在192.168.166.171上修改grastate.dat文件中的值为xtrabackup_galera_info数据:
# GALERA saved state version: 2.1 uuid: 5f3c567e-033f-11e6-a67c-67e2991c9c84 seqno: -1 safe_to_bootstrap: 0
修改文件mysql数据目录的权限
chown -R mysql:mysql /var/lib/mysql
编辑mysql配置文件/etc/my.cnf
然后分别到192.168.166.169和192.168.166.170上执行下面命令来查看各节点上保存的最小序列号:
show global status like 'wsrep_local_cached_downto';
假设192.168.166.170上的最小序列号低于xtrabackup_galera_info数据,则证明可以利用192.168.166.170来做增量同步,而192.168.166.170的wsrep_node_name为pxc2,因此启动pxc3节点的脚本为:
service mysql start --wsrep_sst_donor=pxc2
启动成功:
ERROR! MySQL (Percona XtraDB Cluster) is not running, but lock file (/var/lock/subsys/mysql) exists Starting MySQL (Percona XtraDB Cluster).... SUCCESS!
登录MySQL查看状态:
show status like 'wsrep%';
插入测试数据验证群集同步是否正常。
============================================
赶班车,走人,周末快乐