美文网首页
Xtrabackup备份mysql

Xtrabackup备份mysql

作者: 君子愁 | 来源:发表于2019-10-19 09:30 被阅读0次

xtrabackup备份mysql,是逻辑物理备份,主要备份表空间。

1.当mysql是新的,只执行过set password命令

2.当mysql已经执行过gtid事务


当mysql是新的时候,很多时候我们需要在多台服务器安装mysql,当安装好一台后,可使用xtrabackup备份,然后把备份推送到另外一台服务器。然后另外一台服务器启动mysql,开启slave

此时mysql里是没有执行过任何gtid事务,所以此时在slave服务器直接start slave就可以成功了。

(xtrabackup备份的时候,不会备份bin-log日志。在mysql5.7下,mysql主在初始化完成的时候,会给一个密码你,此时先用 set password='123456'; 修改好密码后,再用xtrabackup备份,)

主:

set password='123456';

然后使用xtrabackup备份数据

innobackupex --defaults-file=/etc/my.cnf --user=root --password=xxxx /data/backup/

然后把备份好的数据scp -r推送给slave

推送好之后,创建一个主从同步账号

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'rep'@'192.168.209.132' identified by '123456';

从:

使用主推送的备份启动mysql,然后show master status\G 可以看到gtid没有执行过一个事务

change master to master_host='192.168.209.131',master_port=3306,master_user='user',master_password='123456',master_auto_position=1;

start slave;

show slave status\G


当mysql已经执行过gtid事务,此时通过xtrabackup推送给从服务器。

1.先启动mysql,然后show master status\G,会发现通过xtrabackup备份过来的,虽然里面有主执行过的数据,但是没记录到任何一个gtid事务,Executed_Gtid_Set是为空的(所以我们需要把这些从已经执行过的gtid事务都设置为过期,否则会从主再次同步过来,就会冲突了)

2.查看xtrabackup执行到那个gtid事务了,在xtrabackup备份的文件了,有一个xtrabackup_binlog_info文件,查看这个文件的内容

从图片内容可知,执行到了4a7cfacc-f1af-11e9-a8c4-0050563a3356:1-3这些事务,那么从mysql,把这些事务设置为过期就可以了。

3.设置gtid过期,步骤如下

set global gtid_purged='4a7cfacc-f1af-11e9-a8c4-0050563a3356:1-3';  #执行这个的时候,需要确定@@GLOBAL.GTID_EXECUTED is empty空的才行,如果不是空,可通过 reset master 设置为空

show global variables like '%gtid%';  #查看是否设置gtid_purged成功

start slave;  #开启主从同步

show slave status\G #查看主从同步是否成功

相关文章

网友评论

      本文标题:Xtrabackup备份mysql

      本文链接:https://www.haomeiwen.com/subject/sfegmctx.html