一、背景
1、当集群的mysql主从同步异常,使用xtrabackup工具从主库中备份的数据来恢复从库,使主从同步恢复正常
2、docker 部署mysql主从
3、systemd管理
4、启动文件
二、实操
在mysql slave节点操作
1、停止mysql服务
systemctl stop mysql_slave.service
2、重建mysql从库的数据卷
docker volume rm mysqls_data docker volume rm mysqls_log docker volume create mysqls_data docker volume create mysqls_log
注意:清理目录后,不要再启动mysql从库服务
3、临时开放防火墙端口
firewall-cmd --zone=public --add-port=20000/tcp
4、开启接收服务
nc -l 20000|xbstream -x -C /healsci/docker/volumes/mysqls_data/_data/
5、主库操作
xtrabackup --defaults-file=/backup/mysql/mysql_master_my.cnf --backup --user=root --password=xxx --socket=/var/run/mysqld/mysqld.sock --datadir=/healsci/docker/volumes/mysqlm_data/_data/ --parallel=8 --compress --compress-threads=8 --stream=xbstream | nc node3 20000
备份期间,不能执行ddl操作,否则备份会失败。
当执行结束后,最后一行显示有 completed OK!,代表备份操作顺利完成。
6、在mysql从库节点执行以下命令:
firewall-cmd --zone=public --remove-port=20000/tcp xtrabackup --decompress --remove-original --parallel=8 --target-dir=/heal/docker/volumes/mysqls_data/_data xtrabackup --prepare --use-memory=4G --target-dir=/heal/docker/volumes/mysqls_data/_data
7、启动mysql从库
systemctl start mysql_slave.service mysql -uroot -pxxx -S /var/run/mysqld/mysqld.sock CHANGE MASTER TO MASTER_HOST='ip',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.xxx',MASTER_LOG_POS=xxx;
MASTER_LOG_FILE和MASTER_LOG_POS值获取:
当用主库备份时,查询备份目录(/heal/docker/volumes/mysqls_data/_data/xtrabackup_info)文件中的binlog_pos行,对应filename和position
8、启动mysql主从同步
start slave; show slave status\G;