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)

MySQL GTIDs(global transaction identifiers)

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

MySQL GTIDs(global transaction identifiers)

上一篇:JDK 9 中有哪些 jmod 文件?


下一篇:file /usr/share/mysql/... conflicts with file from package mysql-libs-5.1.73-3.el6_5.x86_ 64 MySQL安装