基于xtrabackup不停机重建MySQL数据库主从
概述
最近备库故障,由于业务不能停,所以需要在不停机情况下重建GTID主从,下面基于xtrabackup简单演示。
1、源数据库全备
xtrabackup --user=bkpuser --password="xxxx" --backup --target-dir=/data/backup
备份目录下面的各项文件说明
1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
2)每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
3)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
4)
xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position
5)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;
6)backup-my.cnf —— 备份命令用到的配置选项信息;
2、目的数据库恢复
2.1、Preparing backup
xtrabackup --prepare --target-dir=/data/backup
2.2、Restoring backup
--停止目的端数据库
systemctl stop mysqld
--删除数据文件内容
cp -rf /fsl_data/datafile/ /fsl_data/datafile_bak
rm -rf /fsl_data/datafile/*
-- 恢复数据库
xtrabackup --copy-back --target-dir=/data/backup
--授权
chown -R mysql:mysql datafile
chmod -R 755 datafile
systemctl restart mysqld
3、查看备份文件中binlog相关信息
从以下可以看到binlog_log_file='mysql-bin.000019',binlog_pos=1301217,
GTID='98896772-c99c-11ea-b5f7-005056b2161c:1-1153145'
4、重建GTID主从
reset master; #如果不清空binlog日志,重新生成gtid,直接执行set global gtid_purged会报错
reset slave all; #清空slave相关配置
--GTID
set global gtid_purged='98896772-c99c-11ea-b5f7-005056b2161c:1-1153145';
CHANGE MASTER TO MASTER_HOST='xx.94',MASTER_USER='repl',MASTER_PASSWORD='xxx',MASTER_AUTO_POSITION=1;
start slave;
show slave status \G;
--NOT GTID
CHANGE MASTER TO MASTER_HOST='xx.94',MASTER_USER='repl',MASTER_PASSWORD='xxx4',
MASTER_LOG_FILE='mysql-bin.000019',MASTER_LOG_POS=1301217;
START SLAVE;
SHOW SLAVE STATUS \G;
后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!