什么是GTID

每提交一个事务,当前的执行过程都会拿到一个唯一的标识符,此标识符不仅对其源mysql 实列是唯一的而在给定的复制环境中的所有mysql 实列也是唯一的,所哟的事务与其GTID 之间都是唯一对应的。 同样的GTID不能被执行两次,如果有同样的GTID,会自动被skip掉。

GTID组成

GTID = SOURCEID:SEQUENCEID SOURCEID 是服务器的唯一标识($datadir/auto.cnf 中存储),通常是服务器的serviceuuid SEQUENCEID:SequenceNumber 是MySQL 内部的一个事物编号,一个MySQL 不会重复的顺序号(保证服务器内唯一)

5.7开启GTID

gtid_mode=ON(必选)
enforce-gtid-consistency(必选)
log_bin=ON(可选)--高可用切换,最好设置ON
log-slave-updates=ON(可选)--高可用切换,最好设置ON
gtid_mode的几个参数的设置

 OFF:不产生GTID,Slave 只接受不带GTID 的事物

 OFF_PERMISSIVE 不产生GTID,Slave 接受不带GTID 事物也接受带GTID的事物

 ON_PERMISSIVE  产生GTID,Slave 接受不带GTID事物也接受带GTID的事物

 ON 产生GTID,SLAVE 只接受带GTID的事物

GTID 的限制:

  1. 由于GTID 的复制是依赖事务的,所以使用GTID 时,有些MySQL 特性不支持,如果事务混合多个存储引擎时候,会产生多个GTID。
  2. 主从库的表引擎不一致,会导致数据比一致,如果从库的引擎不一致,会导致数据不一致 基于GTID 模式复制,
  3. 不支持 create table .... select 语句。因为使用基于行模式的复制,该语句实际上被记录为两个单独的事件,一个是创建表,另 外一个将原来表的数据插入到刚刚创建的新表中 3 不支持create_temporary table 和drop temporary table。
  4. sql_slave_skip_counter 不支持

不推荐在GTID 模式的实例上进行mysql_upgrade 原因: mysqlupgrade 的过程要创建 或修改系统表(非实物引擎),所以不建议在开启GTID 模式的实列上使用带有--write-binlog 选项的mysqlupdate

GTID的应用:

1.搭建主从(复制账号已经授予,并且GTID 已经开启)

第一种 master 运行不久,所有的binlog 保存完整,针对这种情况下,可以使用类似上面的方法搭建。 利用以上的方法搭建,简单快捷。 缺点是如果 Binlog 相对比较多,slave 同步时间相对较长,可能导致网络压力过大。

change master to master_host=192.168.5.100,master_port=3306, master_user='czg'\
master_password='123456',master_auto_position=1;

第二种 当数据量比较大,可能不适合第一种方法,或者我们最原始的binlog 日志已经删除,无法从头开始获取所有的的GTID信息,那么需要从master上获取数据相应的gtid 范围,然后在slave 上设置(gtid_purged) 的方式来跳过这些GTID,最后通过CHANGE MASTER 的方式来搭建主从。

具体的方式如下: GTID 添加从库有两种方法: 1 如果你的master所有的gtid 安装slave后,直接change master 到master 原来是直接从naster 所有的gtid并执行 优点是简单, 缺点是如果binlog 比较太多,数据完全同步需要的时间会很长, 并且master一开始就启用了GTID,适合那些新建不久的数据库。 2: master 或者其他slave的备份搭建的新的slave 原理:获取master的数据和这些数据对应的GTID 范围,然后通过在slave设置@@GLOBAL GTID_PURGED 从而跳过备份包含的 GTID 范围然后通过在slave设置。 优点:操作是可以避免第一种方案的不足 缺点相对比较复杂。适合较大的数据集的情况

具体的方法如下: -- MySQLdumper:在备份时候需要指定 --master-data -- 导出的语句中包括 set @@GLBAL.GTID_PURGED

使用MySQLdumper备份的方式 第一步:在备份时候需要指定 --master-data=2 导出的语句中包括 set @@GLBAL.GTID_PURGED='XXXXXXa:1'; 第二步:恢复的时候先在slave上执行一个reset master; 第三部:导入数据后做change master to

Percona xtrabackup (具体怎么备份参照xbackup 部分)Xtrbackup_binloginfo 包含了GTID的信息 - 在做从库恢复后,需要手工设置,set global gtidpurged='XXXXXXa:1'; - 恢复后 执行change master to

2.跳过错误的方法:

stop slave
set gtid_next='d787d787-bb44-11e6-9019-000c29276043:7';
begin;commit;
set gtid_next='automatic';
show master status(检查一下)

新特性GTID的更多相关文章

  1. MySQl新特性 GTID

    GTID简介 概念 全局事务标识符(GTID)是创建的唯一标识符,并与在源(主)服务器上提交的每个事务相关联.此标识符不但是唯一的,而且在给定复制设置中的所有服务器上都是唯一的.所有交易和所有GTID ...

  2. MySQL5.6 GTID新特性实践

    MySQL5.6 GTID新特性实践 GTID简介 搭建 实验一:如果slave所需要事务对应的GTID在master上已经被purge了 实验二:忽略purged的部分,强行同步 本文将简单介绍基于 ...

  3. [MySQL5.6 新特性] 全局事务标示符(GTID)

    GTID的全称为 global transaction identifier  , 可以翻译为全局事务标示符,GTID在原始master上的事务提交时被创建.GTID需要在全局的主-备拓扑结构中保持唯 ...

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

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

  5. 初识 MySQL 5.6 新特性、功能

    背景: 之前介绍过 MySQL 5.5 新功能.参数,现在要用MySQL5.6,所以就学习和了解下MySQL5.6新的特性和功能,尽量避免踩坑.在后续的学习过程中文章也会不定时更新. 一:参数默认值的 ...

  6. 简要了解 MySql 5.5/5.6/5.7/8 出现的新特性

    MySQL的开发周期 在比较之前,首先提一下MySQL的开发周期. MySQL一个大版本的开发,大致经历如下几个阶段: Feature Development Feature Testing Perf ...

  7. MySQL5.7的新特性

    MySQL 5.7版本据说已经在了很大的性能提升以及做得更加安全了,想了解更多MySQL 5.7的新特性可以参考我转载叶金荣老师的MySQL 5.7的新特性说明.这里我简单演示一下MySQL 5.7的 ...

  8. MySQL 5.7 GA 新特性

    转载自: http://www.chinaxing.org/articles/Database/2015/10/23/2015-10-22-mysql-5.7.html sys-schema http ...

  9. 总结一下关于mysql 5.6 新特性

    一直断断续续的看一些mysql特性,今天总结一下,以下是列表,网址 http://mariadb.org/ (也是类似的特性), http://mysql.com/ 最近在看关于mysql新特性的一些 ...

随机推荐

  1. 在 HTML5 中捕获音频和视频

    简介 长久以来,音频/视频捕获都是网络开发中的"圣杯".多年来,我们总是依赖于浏览器插件(Flash 或 Silverlight)实现这一点.快来看看吧! 现在轮到 HTML5 大 ...

  2. Spring(十二)Spring之事务

    java中事务是什么? 事务是访问数据库的一个操作序列,DB应用系统通过事务集来完成对数据的存取. 事务必须遵循4个原则,即常说的 ACID A,Automicity,原子性,即事务要么被全部执行,要 ...

  3. Linux中查看进程树

    pstree -p 查看当前的shell的进程和执行shell脚本的子进程的方法:echo $$

  4. Linux上部署SVN

    Linux上部署SVN author:headsen chen  2017-10-16  16:45:04 前提:通过yum来安装,必须是centos6.5的桌面版的.否则会出现某些的安装包不全而导致 ...

  5. pt工具主从一致性检查并修复以及版本3.0.4的版本缺点

    pt-table-checksum和pt-table-sync分别检验master-slave的数据不一致并修复. 1.本次测试环境 [root@172-16-3-190 we_ops_admin]# ...

  6. IntelliJ IDEA 2017.1.5迁移eclipse,SSM项目,通过jrebel实现热部署

    1.首先打开idea,配置SVN版本控制器的路径 2.配置maven 3.配置jrebel热部署的路径 4.从svn到出项目 5.配置配置tomacat参数-server -XX:PermSize=1 ...

  7. 用C#语言编写:数组分析器

    static void Main(string[] args)        {            #region 创建数组            Console.Write("请输入数 ...

  8. python全栈开发-Day8 函数基础

    python全栈开发-Day8 函数 一 .引子 1. 为何要用函数之不用函数的问题 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需 ...

  9. TPYBoard v102 DIY照相机(视频和制作流程)

    前段时间的帖子,利用TPYBoard v102做的DIY照相机,周末实物终于做出来了,加了两个按键模块和一个5110,做的有点糙啊----望大家勿怪,哈哈哈.拍出来图片还算清晰,串口摄像头模块用的30 ...

  10. 使用jQuery动态克隆表格,并且添加至div中(使用前需要引入jQuery)

    <!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...