mysql.gtid executed_【20180608】MySQL5.7新增表mysql.gtid_executed
MySQL5.7新增表mysql.gtid_executed
MySQL5.6主从,从库获取gtid_executed
在MySQL5.6的时候,主从复制开启了GTID,在slave执行show slave status \G的时候可以获取得到当前执行的GTID的集合信息。在MySQL5.6的时候这个值并不是持久化到文件或者数据库表中的,而是每次在slave重启的时候从最后一个binlog文件的末尾读取写入内存中去的。那么这个样子就会造成一个问题,在从库没有开启log_slave_updates这个参数的时候或者说维护人员不小心将binlog文件给删除了之后,那么slave重启之后就会获取不到gtid_executed的值,那么主从环境就会挂掉。
并且还需要注意的一点就是,就算我们开启了log_slave_updates这个参数,将所有来自于master的事务在本地回放的时候写入slave本地的binlog中去的话,那么不可避免会造成磁盘IO和磁盘空间资源的浪费。
MySQL5.7新增的mysql.gtid_executed
在MySQL5.7的时候则将gtid_executed的信息持久化到了表中,这个表就是mysql.gtid_executed表:
root@mysqldb 11:03: [(none)]> show create table mysql.gtid_executed \G
*************************** 1. row ***************************
Table: gtid_executed
Create Table: CREATE TABLE `gtid_executed` (
`source_uuid` char(36) NOT NULL COMMENT 'uuid of the source where the transaction was originally executed.',
`interval_start` bigint(20) NOT NULL COMMENT 'First number of interval.',
`interval_end` bigint(20) NOT NULL COMMENT 'Last number of interval.',
PRIMARY KEY (`source_uuid`,`interval_start`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 STATS_PERSISTENT=0
执行SQL可以看到这个表的一些具体信息:
root@mysqldb 11:04: [(none)]> select * from mysql.gtid_executed ;
+--------------------------------------+----------------+--------------+
| source_uuid | interval_start | interval_end |
+--------------------------------------+----------------+--------------+
| 4725234c-1acc-11e8-9ff9-000c29a80f41 | 1 | 781 |
| 4725234c-1acc-11e8-9ff9-000c29a80f41 | 989 | 1011 |
| 4cf4a087-1ba3-11e8-92f6-000c2920ceb4 | 1 | 2239 |
+--------------------------------------+----------------+--------------+
3 rows in set (0.00 sec)
新增mysql.gtid_executed表之后,slave重启之后可以直接从这个表中获取信息。需要注意的是mysql.gtid_executed是在主从服务器上面都会进行更新的,而表slave_relay_log_info仅仅只是在从服务器进行更新的。
可以看到上述的表mysql.gtid_executed并没有记录每个事务的GTID的值,而是记录了GTID的起始值和末尾值,这个是因为为了避免这个表的记录疯狂的增长,所以MySQL5.7引入了一个新的进程进行专门的压缩,并且有专门的参数来设置这个压缩比。
root@mysqldb 11:58: [(none)]> select thread_id,thread_os_id,name,processlist_command,processlist_state from performance_schema.threads where name like '%compress%';
+-----------+--------------+--------------------------------+---------------------+-------------------+
| thread_id | thread_os_id | name | processlist_command | processlist_state |
+-----------+--------------+--------------------------------+---------------------+-------------------+
| 27 | 23839 | thread/sql/compress_gtid_table | Daemon | Suspending |
+-----------+--------------+--------------------------------+---------------------+-------------------+
1 row in set (0.00 sec)
root@mysqldb 11:59: [(none)]> show global variables like 'gtid_executed_compression_period';
+----------------------------------+-------+
| Variable_name | Value |
+----------------------------------+-------+
| gtid_executed_compression_period | 1000 |
+----------------------------------+-------+
1 row in set (0.01 sec)
root@mysqldb 11:59: [(none)]>
还有一点需要我们注意的:mysql.gtid_executed的记录方式是和从库是否开启记录二进制日志是有很大的关系的。若是slave开启了二进制日志,则该表只会在二进制日志切割的时候或者MySQL正常关闭进行更新,否则的话就会进行实时的更新。还有需要注意的一点就是,在MySQL异常关闭的时候GTID的信息是不会记录到这个表中的,在MySQL恢复的时候会从binlog中记录写入这个表中的。
当binlog开启的时候,并且exectued_gtids_compression_period值未使用的时候,MySQL的binlog轮换也会引起mysql.gtid_executed表的自动压缩。
mysql.gtid executed_【20180608】MySQL5.7新增表mysql.gtid_executed相关推荐
- mysql.gtid executed_MYSQL 5.7中新增的表GTID_EXECUTED
MYSQL 5.7中新增的表GTID_EXECUTED 正文 MySQL 5.6版本开启GTID模式,必须要先打开参数log_slave_updates,简单来说就是一定在从机上再记录一份二进制日志. ...
- mysql 存储过程新增表,mysql实例 存储过程中向表中添加数据
摘要 腾兴网为您分享:mysql实例 存储过程中向表中添加数据,信和财富,视达网,人人视频,企商理财等软件知识,以及电视猫,office2000,贵阳银行,搜电共享充电宝,雅图电影院,达达跑腿,万圣节 ...
- goods购物表MySQL的代码_第一节:数据库及表
在Mysql中建立一个数据库cart,在库中建立两个表,分别是:goods(商品表),order(订单表). 本教程用命令创建数据库,用命令创建数据库习惯了,比用PhpMyAdmin快,因为用phpM ...
- mysql 命令行 外键_MySQL命令行MySql外键设置详解
第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uro ...
- vc6.0 点击鼠标获取mysql数据库所在行_VC6.0连接到mysql数据库
(1)打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的"Show directories for:"下拉列表中选中"I ...
- mysql update多个字段_常见的MySQL命令大全fourth
1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2.创建一个数据库MYSQLDATA mysql> Create DATABASE ...
- prometheus监控mysql慢查询_使用Grafana+Prometheus监控mysql服务性能
prometheus(也叫普罗米修斯)官网: grafana官网: 特征 普罗米修斯的主要特点是: 具有由度量名称和键/值对标识的时间序列数据的 一个 来利用这一维度 不依赖分布式存储; 单个服务器节 ...
- 命令开启 停止mysql服务_windows 下命令行启动停止mysql
MySQL比较好玩一点就是它可以用多种方式启动,当然它也可以用多种方式关闭.下面我就mysql的几种启动方式简单的谈一谈,希望可以给大家提供一些参考. 第一种,用mysqld-nt来启动. 在没有进行 ...
- MySQL5.7新增Performance Schema表
在前面有几篇博客我们已经介绍过MySQL5.6的Performance Schema,详细可点击博客1,博客2,博客3.在MySQL5.6里这些PS表已经包含了足够丰富的信息,帮助我们来分析MySQL ...
最新文章
- 递归和迭代的区别是什么,各有什么优缺点?
- 快捷进入开发状态,这里很简单~
- iOS NSUserDefaults 简介 NSUserDefaults 存储自定义对象
- 继续深入更新shell脚本容易出错的地方
- 直连数据库实时更新数据,可视化报表这么做简直牛
- Ubuntu 16.4中root不能使用tab键来补全命令的解决方法
- termux 开启 sshd
- Oracle 连接查询的理解
- 惊叹C4D设计作品分享,超级给力的灵感
- 废品机械师双脚机器人教程_废品机械师自动寻物机器人图文教程_快吧单机游戏...
- 个性化推荐中的数据稀疏性
- 有服主传送玩家指令_我的世界:不用指令能够到达边境之地吗?实验证明,根本就不可能...
- 百度编辑器上传图片配置php,谁配置过百度编辑器ueditor1.4.3的图片上传路径?
- 前端小报 - 201812 月刊
- 如何设置高度为1的分隔线
- 基于stm32的数控恒压恒流电源设计方案
- egret的eui以及exml使用
- 一款非常棒的开源微社区轻论坛类源码
- 备份数据库 并发送到邮箱
- 南卡和三星哪款蓝牙耳机音质好些?高颜值且音质好的蓝牙耳机测评