pxc节点新增或者脑裂无法启动mysql的节点恢复,可以通过pxc的SST机制从已有的运行节点中自动拉取全量备份,也可以利用IST机制,手动备份现有节点,恢复到新增或者脑裂无法启动mysql的节点。
SST就比较简单,将/mysql/data,/mysql/bin_log,/mysql/relay_log,/mysql/undotabs等下面的文件全部删除,然后service mysql start,就会自动从存活节点拉取全量数据,直至追上现有节点;
本文着重讲通过备份恢复,IST的方式恢复或者新增节点
1. 存活节点备份
nohup xtrabackup --defaults-file=/etc/my.cnf --user=root --password=smart --parallel=4 --target-dir=/mysql/backup --backup --binlog-info=on --galera-info &
cd /mysql/backup
scp -r * pxc3:/mysql/backup
2. 新节点/mysql/data,/mysql/bin_log,/mysql/relay_log,/mysql/undotabs等下面的文件全部删
3. 新节点恢复数据
nohup xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/mysql/backup &
copy-back之前要保证/mysql/data为空,点开头的文件是隐藏文件或者隐藏目录也不能存在
nohup xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/mysql/backup &
4. 将新节点加入pxc集群
(1)如果是新节点加入,可在线修改wsrep_cluster_address,并按照现有节点配置好/etc/my.cnf
i. set global wsrep_cluster_address='gcomm://10.45.82.250,10.45.82.251,10.45.82.252';
ii: 再chown -R mysql.mysql /mysql
iii: touch /mysql/log/mysqld.log(此步要手动执行,否则有时报mysqld.log不存在的错)
IV: 按照恢复出来的xtrabackup_galera_info,创建grastate.dat
cat xtrabackup_galera_info
78aa7a2d-a389-11e7-93d3-9754c183f23b:9656750
[email protected][/mysql/data]#cat grastate.dat
# GALERA saved state
version: 2.1
uuid: 78aa7a2d-a389-11e7-93d3-9754c183f23b
seqno: 9656750
safe_to_bootstrap: 0
V: service mysql start
(2)如果旧节点恢复,
i: chown -R mysql.mysql /mysql
ii: touch /mysql/log/mysqld.log(此步要手动执行,否则有时报mysqld.log不存在的错)
iii: 按照恢复出来的xtrabackup_galera_info,创建grastate.dat
cat xtrabackup_galera_info
78aa7a2d-a389-11e7-93d3-9754c183f23b:9656750
[email protected][/mysql/data]#cat grastate.dat
# GALERA saved state
version: 2.1
uuid: 78aa7a2d-a389-11e7-93d3-9754c183f23b
seqno: 9656750
safe_to_bootstrap: 0
IV: service mysql start
5. 检查是否加入集群