通过GTIDs【global transaction identifiers】,可以标识每一个事务,并且可以在其一旦提交追踪并应用于任何一个Slave上;这样 就不需要像BinaryLog复制依赖Log file 和位置。GTIDs完全基于事务,只要在Master提交的所有事务都在Slave上进行了Commit,那么就能保证Master和Slave之间的数据 一致性。你可以使用基于SBR或RBR的GTIDs来实现。推荐使用RBR【Row-based replication】.

 1 GTID介绍

GTID的惟一性,不仅仅在Master上惟一,而是在整个集群中惟一。

GTID是由SourceId:transaction_Id 构成;SourceId用于标识源Server,即Master中的server_uuid[系统变量];transaction_id,是按照事务提交顺序而生成的序列数字。如第一个被提交的是1,则其GTID=XXXXXXXXXXXX:1.

GTID被存储于mysql.gtid_executed中,当gtid_mode=ON/ON_PERMISSIVE时。

GTID的生命周期

  a.事务在Master上执行并提交

该事务用GTID标识,GTID由Master的UUID和一个非0的未被使用的事务序列号构成;该GTID被写入Master的BinLog中。

  b.之后BinLog被传送到Slave上并存储在Slave的relay Log中【using established mechanisms for this process】.Slave读取到这个GTID,并为系统变量gtid_next赋值,这就告诉了Slave下一个要执行的事务【transaction】就是这个。

  c.Slave确认该GTID是否已被使用【在其BinLog中】。若未用,则执行transaction并写入BinLog。需要注意的是:不仅仅是检查BinLog而且要确认没有其他session 已读取但未提交。换句话说,多个Clients不允许并行执行同一事务。

  d.由于gtid_next不为空。Slave执行并写入BinLog。

2.构建GTID复制

  a. 同步数据。即将Master与Slave的数据同步到一致,然后都开启SET @@global.read_only=ON;

  b.停止Servers。可使用:mysqladmin -uroot -p shutdown

  c.配置主从Server.确保双方都开启gtid_mode=ON,enforce_gtid_consistency=ON。

  d.将Slave挂载到Master,告诉Slave将使用哪个Master作为复制的数据源。使用CHANGE MASTER TO语句,一定要启用MASTER_AUTO_POSITION=1,告诉Slave事务将由GTIDS标识。

  e.启动Slave. START SLAVE.

  f.关闭 read_only. SET @@global.read_only = OFF.

3.使用GTIDs限制

  GTIDs是基于事务的【transactions】,所以对非事务的操作不会支持。

  CREATE TABLE ... SELECT statements .creat table ...select对基于语句的复制【SBR】是不安全的。

  Temporary tables 。GTIDsg不支持CREATE  TEMPORARY TABLE AND DROP TEMPORARY TABLE .

 【Preventing execution of unsupported statements】阻止不支持语句的执行。为了防止GTID受到不支持语句的影响而失败,在参与复制的Server上都要使用enforce-gtid-consistency操作。

  sql_slave_skip_counter用于跳过不支持的事务【这在GTIDs不支持】。

  在gtid_mode=ON时不要进行mysql_upgrade,因为Mysql_update会用MyiSam引擎改变一些系统表。

  也不要在gtid_mode=ON时进行mysqldump文件的导入。

也可参考这篇文章:

http://www.cnblogs.com/abobo/p/4242417.html

Mysql基于GTIDs的复制的更多相关文章

  1. MySQL基于GTIDs的MySQL Replication

    MySQL M-S GTID 基于GTIDs的MySQL Replication 什么是GTIDs以及有什么特定? 1.GTIDs(Global transaction identifiers)全局事 ...

  2. MYSQL 基于GTID的复制

    1.概述 从MYSQL5.6 开始,mysql开始支持GTID复制. 基于日志点复制的缺点: 从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致. 基于GTID复制: ...

  3. mysql基于GTIDS复制

    GTIDS的环境:一台master 192.168.200.111多个slave: 192.168.200.112 192.168.200.113 修改master服务器:[root@localhos ...

  4. Mysql 基于BinaryLog的复制

    .Mysql Master将更新[Update]和变化[Change]作为事件[events]写入Binary log.Mysql slaves 被配置为读取Binary log from maste ...

  5. Mysql基于GTID复制模式-运维小结 (完整篇)

    先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...

  6. 详解MySQL主从复制实战 - 基于GTID的复制

    基于GTID的复制 简介 基于GTID的复制是MySQL 5.6后新增的复制方式. GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交 ...

  7. [MySQL Reference Manual] 18 复制

    18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...

  8. Mysql主从同步(复制)

    目录: mysql主从同步定义      主从同步机制 配置主从同步      配置主服务器      配置从服务器 使用主从同步来备份      使用mysqldump来备份      备份原始文件 ...

  9. Mysql基于GTID主从复制

    Mysql5.6基于GTID全局事务的复制 什么是GTID?   GTID(Global Transaction Identifiers)是全局事务标识 当使用GTIDS时,在主上提交的每一个事务都会 ...

随机推荐

  1. php 通过curl post发送json数据实例

    例1  代码如下 复制代码 $data = array("name" => "Hagrid", "age" => "3 ...

  2. Codeforces Round #336 Hamming Distance Sum

    题目: http://codeforces.com/contest/608/problem/B 字符串a和字符串b进行比较,以题目中的第一个样例为例,我刚开始的想法是拿01与00.01.11.11从左 ...

  3. C#GDI+基础(三)画刷详解

    SolidBrush:一般的画刷,通常只用一种颜色去填充GDI+图形 创建一般画刷: SolidBrush sbBrush1 = new SolidBrush(Color.Green); HatchB ...

  4. Java File 常用操作回顾

    最近项目中要用到File这个类,温故而知新,回过头来回顾下这个File类,File类主要是对磁盘目录,文件进行操作的Api,具体其实查JDK api 的File全能获取到. 下面写一些文件目录的基本操 ...

  5. HDU 3351 Seinfeld(括号匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3351 解题报告:输入一个只有'{'跟'}'的字符串,有两种操作,一种是把'{'变成'}',另一种是'} ...

  6. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  7. Intent flag 与启动模式的对应关系

    Activity有四种启动模式: 1.standard(标准)    2.singleTop    3.singleTask  4.singleInstance 标识某个Activity的启动模式,有 ...

  8. BZOJ 2685: Sgu385 highlander

    Sol 期望DP. \(f[i][j][k]\) 表示已经确定了 \(i\) 个点, 最大环大小为 \(j\) ,个数为 \(k\) 的方案数. 转移非常复杂,因为细节特别多. \(f[i][j][1 ...

  9. SNMP常用数据操作

    SNMP常用数据操作 snmp编程中常见的数据类型基本上就是integer32/oct_str(字节数组)/counter64/timeticks/dateAndTime这些.很多其它的比如Truth ...

  10. 38 网络相关函数(六)——live555源码阅读(四)网络

    38 网络相关函数(六)——live555源码阅读(四)网络 38 网络相关函数(六)——live555源码阅读(四)网络 简介 12)makeSocketNonBlocking和makeSocket ...