GTID复制技术

本文介绍MySQL 5.6.5版本引入的GTIDs技术及其在复制环境中的配置与使用方法。GTIDs能够确保在主从服务器间事务的一致性和可追溯性,简化了复制节点的管理和维护。文章还探讨了如何提升复制性能、处理日志错误及实现自动故障切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GTIDs全局事务标识符:是mysql5.6.5新加的技术

无论在master上提交事务,还是在slave上应用,每一个事务都可以被识别并跟踪

 

添加新的salve或者将slave提升为master都不需要考虑以哪一个二进制日志和哪一个position

 

1、完全基于事务的,所以不支持myisam引擎,可能导致多个GTIDs分配给同一个事务

2Create table .....select 语句不支持

3create/drop temporary table 不支持

4、必须使用enforce-gtid-consistency参数,强调复制一致性的参数

5sql-slave-skip-counter不支持,跳过主从复制的参数

6、在mysql5.6.9之后的版本导入使用mysqldump制作的备份,需要保证二进制日志中不包含GTIDs

7、在mysql5.6.7之前,使用mysql_upgrade命令会出现问题。

 

 

配置基于GTIDsreplication

 

1、masterslave服务器都设置为read-only

   set @@global.read_only=on;

 

2、将主从服务器mysql服务关闭

      /etc/init.d/mysql stop

 

3、开启GTIDs

开启GTIDs需要在主从服务器上开启

[mysqld]

gtid-mode=on

log-bin

log-slave-updates

enforece-gtid-consistency(mysql5.6.9之前是--disable-gtid-unsafe-statement)

 

在从库上还需要增加skip-slave-start参数

 

之后启动服务

 

4、配置slave

mysql> change master to

    -> master_host='xxx',

    -> master_port=3306,

    -> master_user='xx',

    -> master_passowrd='xxx',

    -> master_auto_position=1;

 

Start slave;

 

 

提升replication的性能

1、使用内网或者专线传输binlog日志

2、将二进制日志保存在独立的存储介质上

3、使用多核CPU

4、如果二进制日志不是row格式,尽可能不要再insert或者update的时候使用select  就是尽量减少子查询

5、想办法减少master的写I/Oredis memcache

6、更新架构设计

 

 

让更新频繁,实时的数据查询放到master上,在通过持久化session,让发生修改的用户先看到,其他人等待同步后再查看replication,如果开发难以实现可以这样


用户修改先保存在memcache里面,经过一点时间再同步到数据库里面,客户端优先找memchache数据,如果没有数据再读取master ,然后再读取slave这个逻辑

 

 

 

多线程方式传输二进制日志

只能工作在GTIDs模式下

只能对不同库执行操作才能使用多线程传输。

[mysqld]

Slave-parallel-workers=N(默认值为0,不开启)

N可以根据CPU核心数进行调整,代表开启的线程数

 

 

日志错误

大多数replication错误是因为日志错误引起的

主日志和中继日志都有可能出错

辨别的方法

mysqlbinlog masert_binlog_file >/dev/null

mysqlbinlog slave_binlog_file >/dev/null

 

屏幕下有相应的回显就代表出现的错误

 

跳过日志错误

在从库上执行

Stop slave;

Set global sql_slave_skip_counter=1;

Start slave;

基于GTID不生效

 

如果是中继日志出错,可以在salve上查看slave状态,根据日志信息跳过出错日志


基于GTIDs模式下的replication

Stop slave;

Set gtid_next=’uuid:nexti_d’;

Begin;commit;

Set gtid_next=’automatic’;

Start slave;

 

 

Replication监控及自动故障切换

为监控机器赋予权限  在主库上执行

grant create,insert,drop,select,super,replication slave,reload on *.* to replm@ip identified by 'replm' with grant option;

 

Ip是监控机器的ip地址

 

修改主从服务器的配置文件

[mysqld]

Report-host=当前机器的IP地址

Master-info-repository=table

Relay-log-info-repository=table

gtid-mode=on

log-bin

log-salve-updates

binlog-format=row

enforece-gtid-consistency(mysql5.6.9之前是--disable-gtid-unsafe-statement)

之后重启生效

 

最后一步

启动监控端

mysqlfailover --master=replm(用户名):replm(密码)@ip(mater机器IP地址) --discover-salves-login=replm:replm  自动通过master机器发现slave机器

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值