http://blog.itpub.net/27067062/viewspace-2141906/
 
一、GTID概述
  GTID是MYSQL5.6新增的特性,GTID(Global Transaction Identifier)全称为全局事务标示符,用以数据库实例事务唯一标识,其组成主要是source_id和transaction_id 即GTID = source_id:transaction_id。其中source_id是数据库启动自动生成的数据库实例唯一标识,保存在auto.cnf中,而transaction_id则是事务执行的序列号。
二、GTID优缺点
  优点:
    复制安全性更高,一个事务在每个实例上只执行一次;
    故障切换简单,可通过设置MASTER_AUTO_POSITION=1,而非master_log_file和master_log_pos来建立主从关系;
    可根据GTID确定事务最早提交的实例;
  缺点:
    组复制中,必须要求统一开启GTID或者关闭GTID;
    不支持复制create table table_name select ... from table_name_xx ;
    不支持create temporary table和drop temporary table;
    不支持sql_slave_skip_counter,可通过set global gtid_next='' 跳过;
    从库和主库都必须设置log_slave_updates
三、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开启和关闭
  gtid_mode=ON(必选)
  log_bin=ON(必选)
  log-slave-updates=ON(必选)
  enforce-gtid-consistency(必选)
  log-bin = /home/mysql/mysql-bin(必选)
  binlog_format = MIXED(必选mixed或者row)
  ##  
  change master to master_host = 'ipaddr',master_port = 3306,master_user = 'username',master_password='password',master_auto_position = 1;
五、GTID适用场景
  1、搭建高可用架构,方便主从切换后,新的从库重新指定主库(例如一主二从的结构,A为mater,B为Slave,C为Slave,A宕机切换到B后,C重新指定主库为B)
  2、不经常使用create table table_name select * from table_name/create temporary table/update t1,t2 where ...这种语句的场合
六、GTID相关参数

参数 comment
gtid_executed 执行过的所有GTID,可通过reset master重置
gtid_purged 丢弃掉的GTID,设置后从而导致slave不会再去master请求这些GTIDs,并且Executed_Gtid_Set为空时,才可以设置此值
gtid_mode gtid模式
gtid_next session级别的变量,下一个gtid
gtid_owned 正在运行的gtid
enforce_gtid_consistency 保证GTID安全的参数

转 MYSQL_GTID详解的更多相关文章

  1. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  2. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  3. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  4. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  5. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  6. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  7. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  8. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  9. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

随机推荐

  1. python xml包 xml.etree.ElementTree使用记录

    19.7.1 教程 这是一个简短的教程使用xml.etree.ElementTree(简称为et).目标是展示一些构建模块和模块的基本概念 9.7.1.1. XML tree and elements ...

  2. POJ(2186)强连通分量分解

    #include<cstdio> #include<vector> #include<cstring> using namespace std; ; vector& ...

  3. C#设计模式(12)——享元模式

    一.概念 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直 ...

  4. 不支持PowerShell 2.0版本(don't support PowerShell version 2.0. )

    在“程序包管理器控制台”使用命令“update-database”会提示:The Entity Framework Core Package Manager Console Tools don't s ...

  5. [hdu3549]Flow Problem(最大流模板题)

    解题关键:使用的挑战程序设计竞赛上的模板,第一道网络流题目,效率比较低,且用不习惯的vector来建图. 看到网上其他人说此题有重边,需要注意下,此问题只在邻接矩阵建图时会出问题,邻接表不会存在的,也 ...

  6. 菜鸟级的Git与GitHub使用总结(转)

    菜鸟级的Git与GitHub使用总结 原创 2016年12月01日 14:58:30 1792 前言 这几天一直在折腾学习Git和GitHub的使用.几天下来,在网上查阅了大量的资料,总算有一些成果. ...

  7. vue.js2.0实战(1):搭建开发环境及构建项目

    Vue.js学习系列: vue.js2.0实战(1):搭建开发环境及构建项目 https://my.oschina.net/brillantzhao/blog/1541638 vue.js2.0实战( ...

  8. 29.极具破坏力的DDoS:浅析其攻击及防御

    一.DDoS的概念 1.什么是“DDoS”? DDoS:Distributed Denial of Service(分布式拒绝服务)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一 ...

  9. BootStrap2学习日记23---弹出对话框

    <a href="#login" data-toggle="modal" class="btn btn-primary">登陆& ...

  10. sql获取上月同期

    select CONVERT(varchar(10), CONVERT(varchar(8),dateadd(month,-1,getdate()),23)+CONVERT(varchar(10),d ...