今天把公司测试数据库作了GTID的主从,可是当时没有中止主库,直接经过xtrabackup进行备份,而后把数据恢复到从库,而后直接执行start salve进行主从复制,发现老是报以下之类的错误:html
折腾了一下午,上网查了n多资料以后发现这个问题仍是有办法解决的,并且解决这个问题以后还能够作到不停库进行主从复制的配置。mysql
innobackupex -uxxxx -pxxxx . --stream=tar|gzip -> backup.tar.gz
直接备份成tar.gz的格式,而后传到从库服务器;tar xvf *.tar.xz /usr/local/mysql/data/
,我发现xtrabackup --copy-back也可使用cp或者rsync替换,我此处直接就解压到数据目录了;set @@global.gtid_purged='xxxxxx:xx'
命令跳过备份项,不然会出现我以前出现的错误。执行set @@global.gtid_purged='xxxxxx:xx'
发现报错了,错误以下:ERROR 1840 (HY000): Unknown error 1840,上网查询资料发现能够执行reset master,而后就可以正常执行命令跳过备份包含的gtid了;sql
而后再执行change master to 命令开始主从便可。数据库
change master to master_host='ip', master_port=port, master_user='username', master_password='password', master_auto_position=1;
reset slave all
清除全部的主从配置信息。必定要注意配置的顺序,必须是先执行global_purge,而后再执行change master to;服务器
通过一下午的折腾发现仍是对数据库不够了解,对GTID和数据库的事务老是迷迷糊糊的,还有不少须要学习的地方。
参考了这两篇文章,感谢做者:
http://www.javashuo.com/article/p-oiyqmdti-bc.html
http://blog.51cto.com/arthur376/1792551app