MySQL GTIDs(global transaction identifiers)

1、如何定义和生成GTIDs



唯一性:在所有主从库都是唯一的,由二元组构成

?




GTID = source_id:transaction_id

source_id标记主库的

1.1 server_uuid

获取server_uuid的方式

a、判断data_dir/auto.cnf文件是否存在,如果存在返回

b、不存在的话,自动产生一个新的UUID,并保存到data_dir/auto.cnf中

auto.cnf文件格式如下:

?




[auto]

server_uuid=8a94f357-aab4-11df-86ab-c80aa9429562

auto.cnf文件是自动产生的,不要试图修改这个文件。

如果主库的server_uuid发生变化的话,需要重新change master to,故这个auto.cnf文件是只读的。

http://dev.mysql.com/doc/refman/5.6/en/replication-options.html#sysvar_server_uuid

 1.2 GTID sets

?




gtid_set:

    uuid_set [, uuid_set] ...

    | ‘‘

uuid_set:

    uuid:interval[:interval]...

uuid:

    hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh

h:

    [0-9|A-F]

interval:

    n[-n]

    (n >= 1)

1.3 GTID产生过程

(1)事务执行完成,并在主库提交

使用主库的UUID以及最小的事务序列数,并将GTID记录到主库的binlog中

(2)当binlog的数据被从库接收后,并存储在relay log中,此时从库SQL线程读取GTID,并将其赋值给变量gitd_next

(3)从库检查GTID,确认没有执行过。如果这个GTID没有使用过,从库写入GTID,并回放这个事务。

slave需要确保两点:

a、GTID没有被之前的事务使用过

b、相关联的事务没有被提交

(4)因为gtid_next非空,slave不会尝试产生一个新GTID,而是将GTID保存在变量gtid_next中

?




mysql> show global
variables like
‘%gti%‘;

+--------------------------+------------------------------------------------------------------------------------+

| Variable_name            | Value                                                                              |

+--------------------------+------------------------------------------------------------------------------------+

| enforce_gtid_consistency | ON                                                                                
|

| gtid_executed            | 5f02986b-c5de-11e3-8d21-001e4f1ef3b7:1-8,

b9d59578-df02-11e3-b112-001e4f1f39cf:1-2 |

| gtid_mode                | ON                                                                                
|

| gtid_owned               |                                                                                    |

| gtid_purged              | 5f02986b-c5de-11e3-8d21-001e4f1ef3b7:1-8,

b9d59578-df02-11e3-b112-001e4f1f39cf:1-2 |

+--------------------------+------------------------------------------------------------------------------------+

2、如何设置基于GTIDs的同步



3、使用GTIDs的一些建议



4、使用GTIDs的限制



5、参考文献



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

http://qing.blog.sina.com.cn/1757661907/68c3cad333002qhe.html

http://qing.blog.sina.com.cn/1757661907/68c3cad333002qsk.html

http://qing.blog.sina.com.cn/1757661907/68c3cad333002s5l.html

http://dev.mysql.com/worklog/

MySQL GTIDs(global transaction identifiers),布布扣,bubuko.com

时间: 2024-10-24 20:56:43

MySQL GTIDs(global transaction identifiers)的相关文章

mysql QPS(每秒查询量)、 TPS(每秒事务量)计算方法

Information from web QPS (Query per second) (每秒查询量) TPS(Transaction per second) (每秒事务量,如果是InnoDB会显示,没有InnoDB就不会显示) 计算方法 ___________________________________________________________ QPS Questions = SHOW GLOBAL STATUS LIKE 'Questions'; Uptime = SHOW GLO

MySQL控制(关闭、打开)自动提交功能

在MySQL中执行命令时,通常都直接被确定提交了.也就是说用户不用意识此事,所有的命令都会被自动COMMIT.特别是当存储引擎为MyISAM的情况下,本身它是不支持事务处理的,只要执行了命令,所有的命令部会被提交. 这样的默认自动提交的功能就被称为自动提交功能.自动提交功能默认被置为ON的状态.但是,如果存储引擎为InnoDB 时,当执行了START TRANSACTION或BEGIN命令(MySQL事务处理-删除后回滚)后,将不会自动提交了,只有明确执行了COMMIT命令后才会被提交,在这之前

C语言连接MySQL数据库(课程设计总结)

刚结束课程设计,也预示着假期马上就要到来了.本次课程设计并不算难,无非就是让做一个XXX系统,实现用户的注册.登录.菜单管理.超级用户等等一些功能,到现在为止已经做过好几个了,所以基本流程都熟悉了!我觉的最值得总结的地方就是:C语言与数据库连接,这块内容!因为之前都是用文件实现的. ★平台 这次课程设计主要用到: ● VC ++ 6.0 ● mysql-5.0.18-win32 ● Navicat for MySQL(MySQL 图形化的工具) ★配置 在写代码之前首先要让编译器知道MySQL数

使用EntityFramework6连接MySql数据库(db first方式)

查看了 逆水寒龙前辈的 使用EntityFramework6连接MySql数据库(db first方式) 自己亲自实践 遇到一点问 mysql-connector-net-x.x.x.msi mysql-for-visualstudio-x.x.x.msi 这两个东西需要使用最新版本,老版本装不上. 安装nuget包 不需要带版本号 Install-Package EntityFramework Install-Package MySql.Data.Entity 带版本号也会出现这个错误 提醒一

MySQL 安装(二进制安装模式)

上一篇:MySQL 安装(RPM安装模式)及目录结构 本篇使用二进制模式安装: 查看当前是几位系统:file/sbin/init 各下载地址: Mysql官网下载: http://dev.mysql.com/downloads/mysql/ (默认选择当前系统) http://dev.mysql.com/downloads/mirrors.html  (其他镜像地址) Oracle官方下载:https://edelivery.oracle.com/ FTP下载: http://ftp.iij.a

MySQL安装(图文详解)

下面的是MySQL安装的图解,用的可执行文件安装的,详细说明了一下!打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”,出现如下界面 mysql安装向导启动,按“Next”继续 选择安装类型,有“Typical(默认)”.“Complete(完全)”.“Custom(用户自定义)”三个选项,我们选择“Custom”,有更多的选项,也方便熟悉安装过程: 在“Developer Components(开发者部分)”上左键单击,选择“Thi

MySQL ICP(Index Condition Pushdown)特性

一.SQL的where条件提取规则 在ICP(Index Condition Pushdown,索引条件下推)特性之前,必须先搞明白根据何登成大神总结出一套放置于所有SQL语句而皆准的where查询条件的提取规则:所有SQL的where条件,均可归纳为3大类:Index Key (First Key & Last Key),Index Filter,Table Filter. 接下来,简单说一下这3大类分别是如何定义,以及如何提取的,详情请看:SQL语句中where条件在数据库中提取与应用浅析.

MySQL 安装(RPM安装模式)及目录结构

折腾了两晚,先对mysql基本安装和安装目录结构有所了解. MySQL一般3种模式安装:RPM,二进制,源码 最简单的就是RPM安装模式,默认自动配置好了.当前就用最简单的安装方式吧. 安装: MYSQL官方各种安装方法:http://dev.mysql.com/doc/refman/5.6/en/linux-installation.html 查看mysql是否安装: rpm -qa|grep-i mysql 查看yum提供的mysql版本: yum list | grepmysql 使用yu

mysql主从复制(添加从服务器)和双主复制

思路: master:      1.启用二进制日志      2.定义 server-id      3.创建有复制权限的账户      完善设置      4.设置事务日志从内存缓冲直接同步存储到磁盘中 slave:      1.启用中继日志      2.定义server-id      3.使用有复制权限的帐号连接master      4.启动io thread以及sql thread      完善设置      5.定义节点为只读数据库 MariaDB复制操作(从零开始) 环境: