使用innobackupex --user=root --password=pass --parallel=8 /webdata/hotbak/ 再主库上备份,
innobackupex --apply-log --redo-only hotbak/ 回滚没有应用的事务,并把 hotbak copy到从库中
mysql 5.6的从库必须开启gtid_mode 模式。
一下几行缺一不可
#GTID gtid_mode = on enforce_gtid_consistency = 1 log_slave_updates = 1
任意一个参数不开启则都会报错:
2015-08-09 02:33:57 6512 [ERROR] --gtid-mode=ON or UPGRADE_STEP_1 or UPGRADE_STEP_2 requires --log-bin and --log-slave-updates 2015-08-09 02:33:57 6512 [ERROR] Aborting 2015-08-09 02:39:58 9860 [ERROR] --gtid-mode=ON or UPGRADE_STEP_1 requires --enforce-gtid-consistency 2015-08-09 02:39:58 9860 [ERROR] Aborting
启动从库后,从xtrabackup_binlog_info 中取得 主库当前的 binglog文件,主库执行到的pos位置,执行到的gtid_executed,对于使用gtid自动复制(MASTER_AUTO_POSITION=1)的情况,对我们有用的是最后一个,前两个是数值是传统请求binlog方式。
master-bin.000723812349785 7808555d-17c1-11e5-a86e-00163e000c7c:1-572621999
我们执行下面两调命令:
mysql> SET GLOBAL gtid_purged='7808555d-17c1-11e5-a86e-00163e000c7c:1-572621999'; --备份恢复过来的相当于在从库上重放过的sql gtid 已经到7808555d-17c1-11e5-a86e-00163e000c7c:1-572621999 把这个之后的事务才记录relay log日志
mysql>change master to master_host='10.174.104.218',master_port=3306,master_user='slave_rep',master_password='xxx',master_log_file='master-bin.000723',MASTER_AUTO_POSITION=1;
使用MASTER_AUTO_POSITION=1 ,master_log_file 不需要指定,mysql主库再从库注册后会自动搜,否则会报错
ERROR 1776 (HY000): Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and
RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active.
正确是:mysql>change master to master_host='10.174.104.218',master_port=3306,master_user='slave_rep',master_password='xxx',MASTER_AUTO_POSITION=1;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
有两个报警,是因为 命令行中使用了明文密码。
mysql> start slave;
引入GTID,最大的好处当然是我们可以随心所欲的切换主备拓扑结构了。在一个正常运行的复制结构中,我们可以在备库简单的执行如下SQL:
2974 if (command == COM_BINLOG_DUMP_GTID)
2983 RETURN_STATUS_OK)
在主库上接受到命令后,调用入口函数com_binlog_dump_gtid,流程如下:
GTID复制:
1.主库不能purge从库还没有execute的事务(即从库的executed_GTID要大于主库的GTID_Purged);如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!