背景
我们的数据库使用的是GTID复制,今天老任为了避免单点利用备份文件恢复搭建从库的时候遇到了一些问题,所以就写了这篇笔记,加深学习理解。
大家都知道,在搭建从库的时候,基本都是利用最近的一份xtrabackup备份文件,解压 apply对应的log之后会生成下图的一些相关文件。
#可以看到解压应用后的关于备份位点信息的文件如下图所示
$ ls -l xtrabackup*
-rw-r--r--. 1 mysql mysql 400 8月 11 21:25 xtrabackup_binlog_info
-rw-r--r--. 1 mysql mysql 27 8月 12 01:19 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 mysql mysql 107 8月 12 01:19 xtrabackup_checkpoints
-rw-r--r--. 1 mysql mysql 1024 8月 11 21:03 xtrabackup_info
-rw-r--r--. 1 mysql mysql 143608250368 8月 12 01:19 xtrabackup_logfile
-rw-r--r--. 1 mysql mysql 1 8月 12 01:19 xtrabackup_master_key_id
-rw-r--r--. 1 mysql mysql 39 8月 12 01:19 xtrabackup_tablespaces
这里重点说我们要用到的文件,其他可以自行百度:
xtrabackup_binlog_info
这个是我们主要用到文件,会记录一些位点信息以及gtidset信息,在主库备份就用这个文件xtrabackup_slave_info
这个文件虽然图上没有,但是这个文件如果在slave上备份并且加上了--slave-info
的话,就会生成该文件,我们也将使用该文件。
简单总结来说:
- 在主库上做了
xtrabackup
备份,就用xtrabackup_binlog_info
里面的文件和位点以及GTID set进行change master搭建从库 - 在从库上做
xtrabackup
备份的话,而且加上了---slave-info
的话,就是用xtrabackup_slave_info
文见里面的东西change master。
正文
好了上面只是简单介绍了一下背景,这里开始介绍我们恢复的流程
1.查看位点以及gtid set
$ cat xtrabackup_binlog_info
mysql-bin.001460 225454 dd3ce11f-30f4-11ea-86b2-42010a8e0014:1-1211761271
#搭建同步
#两种方法
2.1 传统方法
使用binlog+位点的方式 change master去恢复
2.2基于GTID复制的恢复(老任使用的方法)
#清空当前机器保留的GTID_executed和gtid_purged值
>reset master;
#设置gtid_purged变量为xtrabackup_binlog_info文件中的值
sql>set global gtid_purged='dd3ce11f-30f4-11ea-86b2-42010a8e0014:1-1211761271';
#搭建复制,不需要指定位点和密码
sql>CHANGE MASTER TO
MASTER_HOST='$IP',
MASTER_USER='$DBuser,
MASTER_PASSWORD='$PASS',
MASTER_PORT=$Port,
MASTER_AUTO_POSITION=1;
sql> start slave;
sql>show slave status\G;
#查看复制状态是否正常就结束了