【MySQL】GTID小结
1.GTID的概念
GTID(global transaction identifier)是全局事务标识符,在MySQL5.6版本中作为一个超级特性被推出。事务标识不仅对于Master(起源)的服务器来说是惟一的,而且在整个复制拓扑架构来说,也是全局唯一的。
1)GTID的格式
GTID = source_id:transaction_id
其中source_id :通过使用MySQL服务的server_uuid来表示 ,transaction_id :是在事务提交的时候系统顺序分配的一个序列号
2)mysql.gtid_executed表
GTIDs都存储在gtid_executed数据表中,在mysql系统数据库中。每一行的数据代表一个GTID或者一个GTID集合。包括source_uuid,集合开始的事务id和集合结束的事务id
表结构如下:
CREATE TABLE gtid_executed (
source_uuid CHAR(36) NOT NULL,
interval_start BIGINT(20) NOT NULL,
interval_end BIGINT(20) NOT NULL,
PRIMARY KEY (source_uuid, interval_start)
)
备注:事务并不是立马写进gtid_executed表。当启用二进制日志的时候(log-bin = /data/mysqldata/3306/binlog/mysql-bin),只有日志被轮询或者数据库服务被关闭的时候,才会把所有的日志写入到gtid_executed数据表中。
2.实战例子
1)关闭数据库
/usr/local/mysql/bin/mysqladmin -uroot -p'zsd@7101' shutdown
2)修改my.cnf文件
gtid_mode=ON
enforce-gtid-consistency=true
log-slave-updates=1
binlog_format= row
skip-slave-start=1
innodb_flush_log_at_trx_commit=2
sync_binlog=30
3)启动数据库
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf &
4)执行一条数据
insert into zstudent(stu_name,sex) values('hrd','M');
commit;
5)查看GTID的状态
(root@localhost) [Ztest]> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000005
Position: 1959
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 4160e9b3-58d9-11e8-b174-005056af6f24:1
1 row in set (0.00 sec)
备注:可以看到GTID集中分为了两段.
其中4160e9b3-58d9-11e8-b174-005056af6f24就是server的uuid,1就是序列号。一直排序下去的。
6)server的uuid的查询方式
(root@localhost) [(none)]> show GLOBAL VARIABLES like 'server_uuid';
+---------------+--------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------+
| server_uuid | 4160e9b3-58d9-11e8-b174-005056af6f24 |
+---------------+--------------------------------------+
1 row in set (0.02 sec)
7)开始继续插入数据
insert into zstudent(stu_name,sex) values('hrd12','M');
insert into zstudent(stu_name,sex) values('hrd13','M');
insert into zstudent(stu_name,sex) values('hrd14','M');
insert into zstudent(stu_name,sex) values('hrd15','M');
insert into zstudent(stu_name,sex) values('hrd12','M');
commmit;
8)查看gtid_executed数据表
(root@localhost) [(none)]> SELECT * FROM mysql.gtid_executed;
+--------------------------------------+----------------+--------------+
| source_uuid | interval_start | interval_end |
+--------------------------------------+----------------+--------------+
| 4160e9b3-58d9-11e8-b174-005056af6f24 | 1 | 11 |
| 4160e9b3-58d9-11e8-b174-005056af6f24 | 12 | 12 |
+--------------------------------------+----------------+--------------+
2 rows in set (0.00 sec)
如上记录,可以看出它们并不是,马上回写入至gtid_executed数据表中。
9)flush log之后,再次查看gtid_executed数据表
(root@localhost) [(none)]> flush logs;
Query OK, 0 rows affected (0.01 sec)
(root@localhost) [(none)]> SELECT * FROM mysql.gtid_executed;
+--------------------------------------+----------------+--------------+
| source_uuid | interval_start | interval_end |
+--------------------------------------+----------------+--------------+
| 4160e9b3-58d9-11e8-b174-005056af6f24 | 1 | 19 |
+--------------------------------------+----------------+--------------+
1 row in set (0.00 sec)
备注:看到日志轮询之后,事务就会被写入至gtid_executed数据表中,而且会用到数据表的压缩技术,控制压缩的变量参数为:
gtid_executed_compression_period,默认值为1000。
知识点小总结:由于是否开启了GTID,关键是上面提到的两个参数
gtid_mode=ON
enforce-gtid-consistency=true
验证上述参数,在MYSQL服务中是否生效,用如下命令:
(root@localhost) [(none)]> show variables like '%gtid%';
+----------------------------------+-------------------------------------------+
| Variable_name | Value |
+----------------------------------+-------------------------------------------+
| binlog_gtid_simple_recovery | ON |
| enforce_gtid_consistency | ON |
| gtid_executed | 4160e9b3-58d9-11e8-b174-005056af6f24:1-19 |
| gtid_executed_compression_period | 1000 |
| gtid_mode | ON |
| gtid_next | AUTOMATIC |
| gtid_owned | |
| gtid_purged | |
| session_track_gtids | OFF |
+----------------------------------+-------------------------------------------+
9 rows in set (0.01 sec)
至此,对于GTID一个简单的介绍和运用,
【MySQL】GTID小结的更多相关文章
- MySQL GTID 错误处理汇总
MySQL GTID是在传统的mysql主从复制的基础之上演化而来的产物,即通过UUID加上事务ID的方式来确保每一个事物的唯一性.这样的操作方式使得我们不再需要关心所谓的log_file和log_P ...
- mysql字符集小结
http://blog.csdn.net/wyzxg/article/details/8779682 author:skatetime:2013/04/09 mysql字符集小结 今天同事阿杰兄发现内 ...
- MySQL GTID你知多少【转】
MySQL在5.6的版本推出了GTID复制,相比传统的复制,GTID复制对于运维更加友好,这个事务是谁产⽣,产⽣多少事务,⾮常直接的标识出来,当然GTID也有限制,对于什么是GTID可以参考我之前的文 ...
- MySQL GTID (二)
MySQL GTID 系列之二 三.在线将GTID转化为传统模式 环境见上篇系列文章 关闭GTID,不用停止服务,不影响线上业务 3.1 关闭GTID复制,调整为传统复制 #SLVAE实例上停止复制 ...
- MySQL GTID (一)
MySQL GTID 系列之一 一.GTID相关概念 GTID:全局事务标识符,MySQL5.6版本开始在主从复制中推出的重量级特性. 每提交一个事务,当前执行线程都会拿到一个给定复制环境中唯一的GT ...
- [转帖]MySQL latch小结
MySQL latch小结 https://www.cnblogs.com/liang545621/p/9439816.html 学习一下 一个是数据库内容 一个是内存内容 与oracle的读写锁 应 ...
- mysql搜索引擎 小结
mysql搜索引擎 小结 mysql5.5以后,mysql默认使用InnoDB存储引擎. 若要修改默认引擎,可以修改配置文件中的default-storage-engine.可以通过show vari ...
- mysql升级小结和mysql_upgrade的用途
http://blog.itpub.net/15480802/viewspace-1412259/ mysql升级 1 升级方式 分为In-place和out-of-place,前者直接覆盖当前版本, ...
- mysql gtid 主从复制
基于GTID环境搭建主从复制 1.环境 ----------------------------------------------------------| |mysql版本 | 5.7.14 | ...
随机推荐
- 压缩json的一些方式
有时候系统之间的交互需要传递报文,但是报文的量有时候是巨大的,会占用很大的贷款, 或者有时候是通过加密进行传递比如:RSA非对称加密,如果这样的话,解密方就会花费很多的时间进行解密.因为RSA加密安全 ...
- 关于.Net Core 部署在Linux下连接SqlServer数据库超时解决办法
.Net Core 在 Linux 下连接 SqlServer 需要 SqlServer2008 SP3或以上版本,或SqlServer2012,或SqlServer2014. 如果SqlServer ...
- C# 矢量图EMF 总结
个人知识记录.如果有用请点赞,否则勿喷.忽略. 个人站点:https://i.cnblogs.com/EditPosts.aspx?opt=1 注意:句柄的操作1.创建 代码如下: Metafile ...
- django2-登录与出版社
1.django核心功能 因为django功能很多 ,出版社可以使用到部分功能,最快最简单了解django的运行模式,每个点后续细化去梳理 django的路由 django的视图 django的模板 ...
- 【微信小程序】安装EsayWechat简化微信小程序的开发
1.安装easywechat composer require "overtrue/laravel-wechat" 2.文档 EasyWhchat官方文档
- 获取oracle的建表DLL语句
get_ddl('TABLE','表名','实例名') from dual select dbms_metadata.get_ddl('TABLE','RMS_CITY','RMS') from ...
- mysql-python 安装错误 fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory
安装mysql-python之前, 请先安装setuptools. https://pypi.python.org/pypi/setuptools/7.0 下载mysql-python. 下载源码包. ...
- day35作业
1. 查询所有大于60分的学生的姓名和学号 (DISTINCT: 去重) -- 2.查询每个老师教授的课程数量 和 老师信息 -- 3. 查询学生的信息以及学生所在的班级信息 -- 4.学生中男生的个 ...
- 渗透测试学习 十七、 XSS跨站脚本漏洞详解
一般用途:拿cookie进后台,将后台地址一起发送过来 特点:挖掘困难,绕过困难 大纲: XSS漏洞基础讲解 XSS漏洞发掘与绕过 XSS漏洞的综合利用 XSS漏洞基础讲解 XSS介绍: 跨站脚 ...
- 【PAT甲级】1008 Elevator (20分)
1008 Elevator 题目: The highest building in our city has only one elevator. A request list is made up ...