使用innobackup实现 基于GTID的从库搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用innobackup实现 基于GTID的从库搭建相关的知识,希望对你有一定的参考价值。

对于较大的数据库,我们一般都是使用innobackup进行备份,备份的及恢复的速度更快。


试验环境:

  CentOS6.8 x86_64

  mysql5.6.34 社区rpm版

  xtrabackup版本:percona-xtrabackup-24-2.4.5-1.el6.x86_64.rpm

  主库:node0 192.168.2.10 (需要安装xtrabackup和lz4

  从库:node1 192.168.2.11(需要安装xtrabackup和lz4


5.6下GTID复制必须配的参数(主库和从库都要加上这3行参数):

  gtid-mode=ON

  enforce_gtid_consistency = ON

  log_slave_updates=ON



step1、在从库创建备份文件的存放目录:

mkdir /tmp/db_restore


step2、在主库执行备份(最好开个screen操作,防止网络中断的问题),直接导出到从库机器上:

## 注意这里我们还需要提前在2台机器上安装lz4压缩工具,因为我们的脚本会调用lz4压缩和解压备份文件

innobackupex --user=root \

--password=123456  \

--parallel=4 \

--socket=/tmp/mysql.sock \

--no-timestamp \

--stream=xbstream . |\

lz4 -B4 |\

ssh node1 \

"cat - | lz4 -d -B7 | xbstream -x -C /tmp/db_restore"



step3、在从库node1上看下 主库的gtid位置

cd /tmp/db_restore

cat xtrabackup_binlog_info 内容如下:

mysql.0000034328013bfb27-2edd-11e7-89c7-000c296a2c0d:1-10


step4、在从库上将上一步获取到的这些gtid purge掉,因为这些实际上已经执行过了。

set global gtid_purged=‘013bfb27-2edd-11e7-89c7-000c296a2c0d:1-10‘;    

如果提示 ERROR 1840 (HY000): @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty. 则需要执行下reset master;


step5、配置并启动复制

CHANGE MASTER TO MASTER_HOST=‘192.168.2.10‘, 

 MASTER_USER=‘rpl‘, 

 MASTER_PASSWORD=‘rpl‘, 

 MASTER_PORT=3306, 

 MASTER_AUTO_POSITION=1;

 

start slave;

show slave status\G


然后可以在主库的test库下尝试创建几个表,验证下复制是否正常。


以上是关于使用innobackup实现 基于GTID的从库搭建的主要内容,如果未能解决你的问题,请参考以下文章

基础 mysqldump 创建基于GTID的从库

腾讯云数据库备用-基于GTID复制的mysql作为CDB的从库

MYSQL 基于GTID的复制

mysql主从配置,innobackup备份

与MySQL传统复制相比,GTID都有哪些独特的复制姿势

基于云服务器的mysql自建从库