MySQL 主从基于 GTID 复制原理概述

栏目: 数据库 · Mysql · 发布时间: 6年前

内容简介:MySQL 主从基于 GTID 复制原理概述

一、 什么是GTID ( Global transaction identifiers ):

MySQL-5.6.2开始支持,mysql-5.6.10后完善,GTID 分成两部分,一部分是服务的UUid,UUID保存在 mysql 数据目录的auto.cnf文件中,这是一个非常重要的文件,不能删除,这一部分是不会变的。另外一部分就是事务ID了,随着事务的增加,值一次递增,如下图

+---------------+----------+--------------+------------------+--------------------------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+---------------+----------+--------------+------------------+--------------------------------------------+

| binlog.000029 | 23556 | | | 724afcc2-29d6-11e4-9902-000c290c0121:1-362 |

+---------------+----------+--------------+------------------+--------------------------------------------+

GTID:724afcc2-29d6-11e4-9902-000c290c0121:1-362

UUID:724afcc2-29d6-11e4-9902-000c290c0121

transactionId:1-362

在整个复制架构中GTID 是不变化的,即使在多个连环主从中也不会变。

例如:ServerA --->ServerB ---->ServerC

GTID从在ServerA ,ServerB,ServerC 中都是一样的。

二、 GTID的工作原理:

1、master更新数据时,会在事务前产生GTID,一同记录到binlog日志中。

2、slave端的i/o 线程将变更的binlog,写入到本地的relay log中。

3、 sql 线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。

4、如果有记录,说明该GTID的事务已经执行,slave会忽略。

5、如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog。

6、在解析过程中会判断是否有主键,如果没有就用二级索引,如果没有就用全部扫描。

三、 GTID的优点:

1.一个事务对应一个唯一ID,一个GTID在一个服务器上只会执行一次

2.GTID是用来代替传统复制的方法,GTID复制与普通复制模式的最大不同就是不需要指定二进制文件名和位置

3.减少手工干预和降低服务故障时间,当主机挂了之后通过软件从众多的备机中提升一台备机为主机

那么GTID复制是怎么实现自动同步,自动对应位置的呢?

例如:ServerC <-----ServerA ----> ServerB

主机ServerA

备机:ServerB,ServerC

当主机ServerA 挂了之后 ,此时ServerB执行完了所有从ServerA 传过来的事务,

ServerC 延时一点。这个时候需要把 ServerB 提升为主机 ,Server C 继续为备机。

当ServerC 链接ServerC 之后,首先在自己的二进制文件中找到从ServerA 传过来的最新的GTID,

然后将这个GTID 发送到ServerB ,ServerB 获得这个GTID之后,就开始从这个GTID的下一个GTID

开始发送事务给ServerC。这种自我寻找复制位置的模式减少事务丢失的可能性以及故障恢复的时间。

四、 GTID的限制:

1.不支持非事务引擎

2.不支持create table ... select 语句复制(主库直接报错)

原理:( 会生成两个sql,一个是DDL创建表SQL,一个是insert into 插入数据的sql。

由于DDL会导致自动提交,所以这个sql至少需要两个GTID,但是GTID模式下,只能给这个sql生成一个GTID )

3.不允许一个SQL同时更新一个事务引擎表和非事务引擎表

4.在一个复制组中,必须要求统一开启GTID或者是关闭GTID

5.开启GTID需要重启(5.7除外)

6.开启GTID后,就不再使用原来的传统复制方式

7.对于create temporary table 和 drop temporary table语句不支持

8.不支持sql_slave_skip_counter

MySQL 5.7 Docker 主从复制架构搭建 http://www.linuxidc.com/Linux/2016-11/136998.htm

MySQL主从复制操作 http://www.linuxidc.com/Linux/2017-02/141172.htm

MySQL主从复制数据一致性校验和修复方法及自动化实现 http://www.linuxidc.com/Linux/2017-02/141114.htm

MySQL主从复制常见错误及解决方法 http://www.linuxidc.com/Linux/2017-02/141059.htm

MySQL主从复制,读写分离(mysql-proxy)及双主结构完整构建过程 http://www.linuxidc.com/Linux/2016-11/137635.htm

CentOS搭建MySQL主从复制,读写分离  http://www.linuxidc.com/Linux/2016-09/135121.htm

本文永久更新链接地址 http://www.linuxidc.com/Linux/2017-06/144819.htm


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

社交红利

社交红利

徐志斌 / 北京联合出版公司 / 2013-8 / 42

如今的互联网,社交网络已占据了主要的位置。如腾讯微博、微信、QQ空间、人人网、新浪微博、唱吧、美丽说、啪啪等等,都可以算是社交网络,将大部分活跃的人们聚集起来,通过文字、图片、语音等形式分享着身边的事。这些社交网络吸引着更多兴趣相投的陌生人成为朋友结成圈子,也衍生出的海量流量和机会,为业界和创业者提供着源源不绝的新机会。可以这样说,社交网络在将散落在人们中的需求汇聚起来,等待着企业来提供服务。因此......一起来看看 《社交红利》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具