MySQL5.6基于GTID复制配置

一、什么是GTID?

  GTID(Global Transaction Identifiers)是全局事务标识
当使用GTIDS时,在主上提交的每一个事务都会被识别和跟踪,并且运用到所有从MySQL,而且配置主从或者主从切换时不再需要指定 master_log_files和master_log_pos;由于GTID-base复制是完全基于事务的,所以能很简单的决定主从复制的一致性;官方建议Binlog采用Row格式

二、GTID的表示方式

source_id:transaction_id
source_id:表示执行事务的主库的UUID(server_uuid:Mysql5.6的data目录下启动时会生成auto.cnf文件记录了uuid,重启后uuid不变,删除文件后会重新生成新的uuid);
transaction_id:是一个从1开始自增的计数,表示在这个主库上执行的第n个事务;
由于每台Mysql的uuid是全球唯一的,transaction_id自身唯一,就保证了GTID全局唯一性

三、基于GTID的复制配置

master:192.168.10.216
slave :192.168.10.217
步骤:
修改主从my.cnf增加GTID支持—>主只读—>拷贝数据到从数据目录—>重启主从—>在从上进行配置
1.修改主从my.cnf增加GTID支持

2.主只读

拷贝主数据到从目录

3.重启主从Mysql

4.在从上配置基于GTID的复制

5.启动从库

注:

两个Yes代表复制正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

基于GTID复制的新特性:
Retrieved_Gtid_Set: 21ad8db5-f038-11e3-a14a-0200c0a80ad8:76793-77026
Executed_Gtid_Set: 21ad8db5-f038-11e3-a14a-0200c0a80ad8:1-77025

Retrieved_Gtid_Set项:记录了relay日志从Master获取了binlog日志的位置
Executed_Gtid_Set项:记录本机执行的binlog日志位置(如果是从机,包括Master的binlog日志位置和slave本身的binlog日志位置)

四、基于GTID复制增加新的slave

  备份主MySQL数据,记录主gtid_executed—>将备份数据恢复到从数据目录—>设置从gtid_purged的值为主的gtid_executed值—>启动复制即可

1.使用mysqldump备份主数据
mysqldump —all-databases —single-transaction —triggers —routines —host=127.0.0.1 —port=3306 —user=root —password=geekwolf > backup.sql
亦可以使用xtrabackup也支持GTID:
请参考:http://www.mysqlperformanceblog.com/2013/05/09/how-to-create-a-new-or-repair-a-broken-gtid-based-slave-with-percona-xtrabackup/

2.传到从MySQL,恢复数据
由于新版本msqldump会记录并设置GTID_PURGED的值等于主的GTID_EXECUTED,所以只需要将sql导入到从库即可

3.启动主从复制

五、基于GTID复制出错的解决办法

问题:

解决思路:

从复制跳过已经丢失的binlog,继续复制或者重新做主从(可以参考上面的操作)

注意事项:
  使用基于GTID复制时,不需要再关心master_log_file和master_log_pos,替代的是只需要知道master上的GTID,并且配置在从上即可;
记录GTID的有两个全局变量:gtid_executed和gtid_purged

与GTID复制相关的参数:

gtid

GTID_EXECUTED :表示已经在该实例上执行过的事务;执行RESET MASTER可以置空该参数;也可以设置GTID_NEXT执行一个空事务来影响GTID_EXECUTED
GTID_NEXT :是SESSION级别参数,表示下一个事务被执行使用的GTID(show variables like ‘gtid_%’;)
GTID_PURGED :表示被删除的binlog事务GTID,它是GTID_EXCUTED的子集,MySQL5.6.9,该参数无法被设置
GTID_OWENED :表示正在执行的事务的GTID以及对应的线程ID

如果设置MASTER_AUTO_POSITION = 1表示主从复制连接使用基于GTID的方式复制

如果在GTID复制模式下想要使用基于文件的复制协议需要MASTER_AUTO_POSITION=0(至少指定其中MASTER_LOG_FILE、MASTER_LOG_POSITION一个)

参考文档:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL的主从复制GTID(Global Transaction Identifier)是一种用于标识和跟踪事务的机制。GTID是一个全局唯一的标识符,用于确保主从复制中每个事务的唯一性和一致性。它在MySQL 5.6版本中引入,并在之后的版本中得到改进和增强。 使用GTID进行主从复制可以简化配置和管理,并提供更可靠的数据同步。下面是使用GTID进行主从复制的基本步骤: 1. 在主服务器上启用GTID功能: 在主服务器的配置文件(my.cnf)中添加以下参数: ``` [mysqld] server-id=1 log-bin enforce-gtid-consistency=true ``` 启用GTID功能并设置服务器ID和二进制日志。 2. 在从服务器上启用GTID功能: 在从服务器的配置文件中添加以下参数: ``` [mysqld] server-id=2 enforce-gtid-consistency=true ``` 设置服务器ID和启用GTID功能。 3. 配置主从关系: 在主服务器上创建一个用于复制的用户,并授予适当的权限。 4. 在从服务器上配置主服务器信息: 在从服务器上执行以下命令: ``` CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='复制用户', MASTER_PASSWORD='复制用户密码', MASTER_AUTO_POSITION=1; ``` 这将配置从服务器以使用GTID复制并将其连接到主服务器。 5. 启动主从复制: 在从服务器上执行以下命令开始复制: ``` START SLAVE; ``` 从服务器将开始从主服务器接收和应用事务。 通过以上步骤,你可以使用GTID实现MySQL的主从复制。这种方式可以提供更高的数据一致性和可靠性,并简化了配置和管理过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值