从MySQL5.6开始增加GTID这个特性,Global Transaction ID,全局事务ID,用来强化主从数据库的一致性,故障恢复,以及容错能力,来替代传统的人工的主从复制;

有了GTID,在进行主备切换的时候,slave们可以自动在新的master上找到复制位置(position),大大简化了复杂复制集群的维护工作,减少了人为设置position的风险,减少了数据不一致性的风险;

**GTID的组成:**

GTID=server_uuid:transaction_id

server_uuid指的是MySQL的uuid,在第一次启动MySQL时生成,保存在auto.cnf中;

transaction_id是事务的id,是一个从1开始的自增计数,表示在这个主库上执行的第几个事务;

比如:

b6af5b5c-666f-11e9-bed3-000c29b85ea6:1,第一个事务

b6af5b5c-666f-11e9-bed3-000c29b85ea6:1-5,第1到第5个事务

**GTID复制的工作原理**

1. master在执行更新操作时,会在事务执行时生成一个GTID,然后把GTID一起记录到binlog中;

2. slave的IO线程去读取master的binlog变更,写入自己的relay-log中;

3. slave从relay-log中取出GTID,比较自己的binlog中是否有次GTID;

4. 如果slave的binlog中有此GTID,则说明该事务已经执行过,不再执行;

5. 如果slave的binlog中没有次GTID,则执行该事务,并记录到自己的binlog中;

**GTID复制的优点**

1. 传统的主从复制,需要手动指定binlog和position,这样比较麻烦,也很容易出错,在master的写操作频繁时,也很难确定position;在GTID复制下,只需要指定MASTER_AUTO_POSITION=1,MySQL就会通过内部机制,自动找点同步;

简单来说,就是简化了复制,因为position是实时更新的,不方便手工指定,所以,GTID可以自动找到position进行同步;

2. GTID支持基于库的多线程复制,在MySQL5.6以前,slave的复制是单线程的,只能一个事件一个事件进行;所以,我们可以把一个表放在一个库里,一个库一个线程,这样就可以实现多线程复制;但是,当只有一个库的时候,多线程复制是没有用的;

**GTID相关变量**

gtid_mode=on:开启GTID;

gtid_executed:当前实例上执行过的事务集合;

GTID介绍的更多相关文章

  1. MariaDB · 版本特性 · MariaDB 的 GTID 介绍

    本文来自阿里的数据库内核月报,写的很详细,主要是关于mariadb开启gtid之后做主从的方法. 原文连接:http://mysql.taobao.org/monthly/2016/02/08/

  2. GTID复制报错处理:Last_Error: Error 'Can't drop database 'test'; database doesn't exist' on query

    创建GTID主从连接: mysql, master_user; 报错显示: Slave_IO_Running: Yes Slave_SQL_Running: No Last_Error: Error ...

  3. MySQL 5.7 Replication 相关新功能说明

    背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相关, ...

  4. Mysql基于GTIDs的复制

    通过GTIDs[global transaction identifiers],可以标识每一个事务,并且可以在其一旦提交追踪并应用于任何一个Slave上:这样 就不需要像BinaryLog复制依赖Lo ...

  5. Linux系统——MHA-Atlas-MySQL高可用集群

    Linux系统——MHA-Atlas-MySQL高可用集群 MHA MHA介绍MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的 ...

  6. MySQL 5.7 Replication 相关新功能说明 (转)

    背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相关, ...

  7. __MySQL 5.7 Replication 相关新功能说明

      背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相 ...

  8. MySQL-16-主从复制进阶

    延时从库 介绍 延时从库: 是我们人为配置的一种特殊从库,人为配置从库和主库延时N小时 为什么要有延时从库 数据库故障 物理损坏,普通的主从复制非常擅长解决物理损坏 逻辑损坏,普通主从复制没办法解决逻 ...

  9. MySQL-13-日志管理

    常用日志参数 经常用到的有错误.快慢查询.二进制等日志 错误日志 1 作用 记录启动\关闭\日常运行过程中,状态信息,警告,错误,排查MySQL运行过程的故障 2 错误日志配置 默认就是开启的: /数 ...

随机推荐

  1. spring再学习之配置详解

    applicationContext.xml文件配置: bean元素: <?xml version="1.0" encoding="UTF-8"?> ...

  2. Linux内核4.19.1编译

    linux内核编译 1.1 大致步骤 下载linux内核4.19.1 官网链接: https://www.kernel.org/ 官网下载经常速度太慢,无法下载,提供另一个链接: http://ftp ...

  3. (转载)RTMP协议中的AMF数据 http://blog.csdn.net/yeyumin89/article/details/7932585

    为梦飞翔   (转载)RTMP协议中的AMF数据 http://blog.csdn.net/yeyumin89/article/details/7932585 这里有一个连接,amf0和amf3的库, ...

  4. POJ 3415 Common Substrings(后缀数组 + 单调栈)题解

    题意: 给两个串\(A.B\),问你长度\(>=k\)的有几对公共子串 思路: 先想一个朴素算法: 把\(B\)接在\(A\)后面,然后去跑后缀数组,得到\(height\)数组,那么直接\(r ...

  5. 重学c#————struct

    前言 简单整理一下struct. 正文 struct 对于struct 而言呢,我们往往会拿class作为对比,但是呢,我们在初学阶段用class来替代struct,struct的存在感越来越低了. ...

  6. const,volatile,static,typdef,几个关键字辨析和理解

    1.const类型修饰符 const它限定一个变量初始化后就不允许被改变的修饰符.使用const在一定程度上可以提高程序的安全性和可靠性.它即有预编译命令的优点也有预编译没有的优点.const修饰的变 ...

  7. Dell Display Manager for Mac

    Dell Display Manager for Mac DDM for macOS solution https://www.dell.com/community/Monitors/DDM-for- ...

  8. iPad pro & Mac mini

    iPad pro & Mac mini

  9. VAST二月上线交易所,打通NGK各大币种之间通道!

    1月20日,管理着超过8.7万亿美元资产的全球最大资产管理公司贝莱德似乎已批准其旗下两个相关基金--贝莱德全球分配基金公司和贝莱德基金投资比特币期货.提交给美国证券交易委员会的招股说明书文件显示,贝莱 ...

  10. 「NGK每日快讯」12.18日NGK公链第45期官方快讯!