GTID的全称为 global transaction identifier  , 可以翻译为全局事务标示符,GTID在原始master上的事务提交时被创建。GTID需要在全局的主-备拓扑结构中保持唯一性,GTID由两部分组成:

GTID = source_id:transaction_id

source_id用于标示源服务器,用server_uuid来表示,这个值在第一次启动时生成,并写入到配置文件data/auto.cnf中

transaction_id则是根据在源服务器上第几个提交的事务来确定。

一个GTID的生命周期包括:

1.事务在主库上执行并提交

给事务分配一个gtid(由主库的uuid和该服务器上未使用的最小事务序列号),该GTID被写入到binlog中。

2.备库读取relaylog中的gtid,并设置session级别的gtid_next的值,以告诉备库下一个事务必须使用这个值

3.备库检查该gtid是否已经被其使用并记录到他自己的binlog中。slave需要担保之前的事务没有使用这个gtid,也要担保此时已分读取gtid,但未提交的事务也不恩呢过使用这个gtid.

4.由于gtid_next非空,slave不会去生成一个新的gtid,而是使用从主库获得的gtid。这可以保证在一个复制拓扑中的同一个事务gtid不变。

由于GTID在全局的唯一性,通过GTID,我们可以在自动切换时对一些复杂的复制拓扑很方便的提升新主库及新备库,例如通过指向特定的GTID来确定新备库复制坐标。

主要的增强改进是添加了Global Transaction Identifiers (GTIDs)功能,为了解决以下问题:

-能够无缝的故障恢复和master与slave的切换

-能把slave指向新的master

-减少手工干预和降低服务故障时间

当然,使用GTID也有一些限制:

1.事务中的更新包含非事务性存储引擎,这可能导致多个GTID分配给同一个事务。

2. create table…select语句不被支持,因为该语句会被拆分成create table 和insert两个事务,并且这个两个事务被分配了同一个GTID,这会导致insert被备库忽略掉。

3.不支持CREATE/DROP临时表操作

可以看到,支持GTID的复制对一些语句都有一些限制,MySQL也提供了一个选项disable-gtid-unsafe-statements以禁止这些语句的执行。

参考:

http://dev.mysql.com/doc/refman/5.6/en/replication-gtids.html

http://dev.mysql.com/doc/refman/5.6/en/replication-gtids-restrictions.html

http://dev.mysql.com/doc/refman/5.6/en/replication-gtids-concepts.html

转载于:https://blog.51cto.com/douya/1753933

MySQL5.6 新特性(全局事务标示符(GTID))相关推荐

  1. MySQL5.6 新特性之GTID【转】

    转自 MySQL5.6 新特性之GTID - jyzhou - 博客园 http://www.cnblogs.com/zhoujinyi/p/4717951.html 背景: MySQL5.6在5.5 ...

  2. 【MySQL】MySQL5.6新特性之Index Condition Pushdown

    一 概念介绍     Index Condition Pushdown (ICP)是MySQL 5.6 版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式. a 当关闭ICP时,inde ...

  3. mysql5.7 json特性_【Mysql】Mysql5.7新特性之-json存储

    一 写在前面 本系列文章基于 5.7.12 版本讲述MySQL的新特性.从安装,文件结构,SQL ,优化 ,运维层面 复制,GITD等几个方面展开介绍 5.7 的新特性和功能.同时也建议大家跟踪官方b ...

  4. mysql5.7新特性--官方高可用方案MGR介绍

    MGR简介 MySQL Group Replication(下简称:MGR)是MySQL官方推出的一种基于Paxos协议的状态机复制.在MGR出现之前,用户常见的MySQL高可用方式,无论怎么变化架构 ...

  5. mysql通配符查询 性能_使用mysql5.7新特性解决前通配符查询性能问题

    众所周知,在mysql里的后通配符可以使用索引查找,前通配查询却无法使用到索引,即使是使用到了索引,也是使用了索引全扫描,效率依然不高,再MySQL5.7之前,一直都没有好的办法解决,但是到了MySQ ...

  6. MySQL5.7新特性——在线收缩undo表空间 (转载)

    在查找到很多资料中,以下文章是 对于参数 innodb_undo_log_truncate 说明最为简明的一篇文章了,这里做一转载. (原文: https://www.linuxidc.com/Lin ...

  7. Mysql5.7新特性——派生表合并(derived_merge)

    问题: explain(desc) 解析执行语句,没有derived(派生表) explain select * from (select * from (select * from t_user w ...

  8. MySQL5.7新特性:lossless replication 无损复制

    MySQL的三种复制方式 asynchronous 异步复制 fully synchronous 全同步复制 Semisynchronous 半同步复制 asynchronous replicatio ...

  9. mysql5.6 优点_MySQL5.6复制:GTID的优点和限制(第一部分)_MySQL

    bitsCN.com 全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性.它为维护特定的复制拓扑结构下服务器的DBA们大幅度改善他们的工 ...

最新文章

  1. 【错误记录】Visual Studio 中配置 NDK 头文件路径 ( NDK 的三个头文件路径 | 与 CPU 架构相关 asm 头文件路径选择 )
  2. Redis 基础、高级特性与性能调优 | 高薪必备
  3. python(matplotlib5)——Contours 等高线图
  4. Poj2480欧拉函数
  5. vscode 安装包_VS Code的下载与安装(更改插件的安装位置)
  6. C++之对象的动态建立和释放
  7. 10问10答:你真的了解线程池吗?
  8. LINUX的DNS怎么设置?linux下如何修改DNS地址
  9. Linux 内存中的Cache
  10. 【LeetCode】168. Excel Sheet Column Title 解题小结
  11. 【九度OJ1522】|【剑指offer21】包含min函数的栈
  12. 鸿蒙系统官网电脑版,华为鸿蒙系统官方pc版下载-华为鸿蒙系统官方电脑pc版 -优盘手机站...
  13. math_等式不等式:平方开根号绝对值绝对值不等式放缩基本不等式均值不等式_一元二次方程复根
  14. 按关键字自动分类文件
  15. Java并发 ReentrantLock(重入锁)之非公平锁源码解析 超详细!!
  16. html5自助建站源码,疯狂原始人
  17. 如何下载微信公众号的音频文件
  18. 编译原理实验(三)词法语法分析综合设计
  19. 眼动在旅游研究中有哪些运用?
  20. 清明时节,思念友人张锦文

热门文章

  1. [转] MongoDB 入门
  2. 模拟键盘输入的keycode
  3. NSURLErrorRelatedURLSessionTaskErrorKey
  4. 渗透脚本快速生成工具Intersect
  5. Visual Studio 2017启动x86的Android模拟器失败
  6. Xamarin iOS教程之警告视图
  7. 查询添加条件_035 JAVA-MySQL 约束、DML操作(增改删)、事务处理、查询数据
  8. 信息处理进入了计算机领域,信 息 处 理 进 入 了 计 算 机 领 域 ,实 质 是 进 入 了()的 领 域 。...
  9. c++向量和数组的区别_数学学习如此容易:用Python计算特征值和特征向量
  10. arraylist 初始化_第一章 C#数据结构--数组和ArrayList