Mysql 5.7 Gtid内部学习(七) 总结binlog_gtid_simple_recovery参数带来的影响

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:


想了想还是专门开了一节来总结这个问题
5.7.6以下中默认

  • simplified_binlog_gtid_recovery=flase

5.7.6以上中默认

  • binlog_gtid_simple_recovery=true

默认值就是最合理的设置。
因为参数名更改了所以下面统称simple_recovery来代替。

一、Gtid关闭


  • simple_recovery=flase

5.7.6以下:这种方式一定得到正确的Gtid集合

  • 重启Mysql需要扫描全部的binlog来获得正确的Gtid集合
  • purge binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,由上层函数控制。因为不支持在线的Gtid更改。

5.7.6以上:这种方式一定得到正确的Gtid集合

  • 重启Mysql扫描全部的binlog。
  • purge binlog或者超过参数expire_logs_days参数设置触发全binlog扫描。

  • simple_recovery=true

5.7.6以下:这种情况可能得不到正确的Gtid集合

  • 重启Mysql不扫描全部的binlog,只扫描第一个和最后一个binlog。
  • purge binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,由上层函数控制。

5.7.6以上:由于有每个binlog都有Previous gtid Event的支持能够得到正确的Gtid集合。

  • 重启Mysql不扫描全部的binlog,只扫描第一个和最后一个binlog。
  • purge binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,只扫描第一个和最后一个binlog。

二、Gtid打开


  • simple_recovery=flase

5.7.6以下:这种方式一定得到正确的Gtid集合。

  • 重启Mysql不扫描全部的binlog,如果是中途打开GTID,重启任然需要扫描多个binlog因为需要找到Previous gtid Event。
  • purge binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,如果是中途打开GTID重启,任然需要扫描多个binlog因为需要找到Previous gtid Event。

5.7.6以上:这种方式一定得到正确的Gtid集合

  • 重启Mysql不扫秒全部的binlog,如果是中途打开GTID重启任然需要扫描多个binlog因为需要找到Gtid event。
  • purge binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,如果是中途打开GTID重启任然需要扫描多个binlog因为需要找到Gtid event。

  • simple_recovery=true

5.7.6以下:这种情况可能得不到正确的Gtid集合

  • 重启Mysql不扫描全部的binlog,只扫描第一个和最后一个binlog。
  • purge binlog或者超过参数expire_logs_days参数设置不扫描全部binlog,只扫描第一个和最后一个binlog。

5.7.6以上:由于有每个binlog都有Previous gtid Event的支持能够得到正确的Gtid集合。

  • 重启Mysql不扫描全部的binlog,只扫描第一个和最后一个binlog。
  • purge binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,只扫描第一个和最后一个binlog。

三、本节总结

  • 5.7.6以下保持默认设置simplified_binlog_gtid_recovery=flase,但是这会导致过多的binlog扫描,况且5.6没有mysql.gtid_executed的支持,从库必须开启log_slave_updates,这会带来性能影响。所以还是少用Gtid。
  • 5.7.6以上由于对每个binlog都有Previous gtid Event的支持binlog_gtid_simple_recovery=true是合理的设置,binlog扫描非常的快因为只是第一个和最后一个binlog文件而已。

可以看到Gtid也越来越成熟了。这部分的逻辑在函MYSQL_BIN_LOG::init_gtid_sets中前文已经提到过,这里就不看代码了。

此外在5.7的官方文档中对binlog_gtid_simple_recovery=true 有如下警告的描述:

If this option is enabled, gtid_executed and gtid_purged may be
initialized incorrectly in the following situations:
• The newest binary log was generated by MySQL 5.7.5 or older, and
gtid_mode was ON for some binary logs but OFF for the newest binary log.
• A SET GTID_PURGED statement was issued on a MySQL version
prior to 5.7.7, and the binary log that was active at the time of the SET
GTID_PURGED has not yet been purged.
If an incorrect GTID set is computed in either situation, it will remain incorrect
even if the server is later restarted, regardless of the value of this option.

如果将参数设置为true可能在老版本中得不到正确的Gtid集合,也是前面讨论的。

学习完本节至少能够学习到:

  • binlog_gtid_simple_recovery/simplified_binlog_gtid_recovery是如何影响binlog文件的扫描的的
  • 5.7.6以下应该如何设置
  • 5.7.6以上应该如何设置
作者微信


微信.jpg
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
14天前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02-作业
本教程介绍了数据库表的创建与管理操作,包括创建员工表、插入测试数据、删除记录、更新数据以及多种查询操作,涵盖了SQL语句的基本使用方法,适合初学者学习数据库操作基础。
33 0
|
14天前
|
SQL 关系型数据库 MySQL
Mysql基础学习day03
本课程为MySQL基础学习第三天内容,主要讲解多表关系与多表查询。内容涵盖物理外键与逻辑外键的区别、一对多、一对一及多对多关系的实现方式,以及内连接、外连接、子查询等多表查询方法,并通过具体案例演示SQL语句的编写与应用。
33 0
|
23天前
|
存储 缓存 监控
MySQL服务器配置优化:my.cnf参数调优指南
本文深入解析了MySQL核心配置参数及性能优化技巧,涵盖内存结构、调优原则、存储引擎优化、查询性能优化等内容,通过实战案例帮助读者构建高性能MySQL服务器配置,解决常见的性能瓶颈问题。
|
8天前
|
SQL 运维 关系型数据库
深入探讨MySQL的二进制日志(binlog)选项
总结而言,对MySQL binlogs深度理解并妥善配置对数据库运维管理至关重要;它不仅关系到系统性能优化也是实现高可靠性架构设计必须考虑因素之一。通过精心规划与周密部署可以使得该机能充分发挥作用而避免潜在风险带来影响。
39 6
|
8天前
|
关系型数据库 MySQL 数据管理
Mysql基础学习day03-作业
本内容包含数据库建表语句及多表查询示例,涵盖内连接、外连接、子查询及聚合统计,适用于员工与部门数据管理场景。
21 1
|
19天前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01
本课程为MySQL基础学习第一天内容,涵盖MySQL概述、安装、SQL简介及其分类(DDL、DML、DQL、DCL)、数据库操作(查询、创建、使用、删除)及表操作(创建、约束、数据类型)。适合初学者入门学习数据库基本概念和操作方法。
109 6
|
1月前
|
存储 SQL 关系型数据库
MySQL中binlog、redolog与undolog的不同之处解析
每个都扮演回答回溯与错误修正机构角色: BinLog像历史记载员详细记载每件大大小小事件; RedoLog则像紧急救援队伍遇见突發情況追踪最后活动轨迹尽力补救; UndoLog就类似时间机器可倒带历史让一切归位原始样貌同时兼具平行宇宙观察能让多人同时看见各自期望看见历程而互不干扰.
141 9
|
18天前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01-作业
本教程包含三个数据库表的创建练习:学生表(student)要求具备主键、自增长、非空、默认值及唯一约束;课程表(course)定义主键、非空唯一字段及数值精度限制;员工表(employee)包含自增主键、非空字段、默认值、唯一电话号及日期时间类型字段。每个表的结构设计均附有详细SQL代码示例。
38 0
|
18天前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02
本课程为MySQL基础学习第二天内容,涵盖数据定义语言(DDL)的表查询、修改与删除操作,以及数据操作语言(DML)的增删改查功能。通过具体SQL语句与实例演示,帮助学习者掌握MySQL表结构操作及数据管理技巧。
69 0
|
2月前
|
存储 SQL 关系型数据库
MySQL的Redo Log与Binlog机制对照分析
通过合理的配置和细致的管理,这两种日志机制相互配合,能够有效地提升MySQL数据库的可靠性和稳定性。
111 10

推荐镜像

更多