深入理解MySQL 5.7 GTID系列(七)binlog_gtid_simple_recovery参数的影响总结

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 想了想还是专门开了一节来总结这个问题: 5.7.6以下中默认 simplified_binlog_gtid_recovery=flase 5.7.6以上中默认 binlog_gtid_simple_recovery=true 默认值就是最合理的设置。

想了想还是专门开了一节来总结这个问题:

5.7.6以下中默认

8481c8f592b7f349aa84a1de5c171db681516edfsimplified_binlog_gtid_recovery=flase

5.7.6以上中默认

8481c8f592b7f349aa84a1de5c171db681516edfbinlog_gtid_simple_recovery=true

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

一、Gtid关闭

8481c8f592b7f349aa84a1de5c171db681516edfsimple_recovery=flase

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

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

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

8481c8f592b7f349aa84a1de5c171db681516edf重启 MySQL 扫描全部的 BINLOG
8481c8f592b7f349aa84a1de5c171db681516edfpurge binlog 或者超过参数 expire_logs_days 参数设置触发全 BINLOG 扫描。
8481c8f592b7f349aa84a1de5c171db681516edfsimple_recovery=true

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

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

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

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

二、Gtid打开

8481c8f592b7f349aa84a1de5c171db681516edfsimple_recovery=flase

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

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

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

8481c8f592b7f349aa84a1de5c171db681516edf重启Mysql不扫秒全部的 BINLOG ,如果是中途打开 GTID 重启任然需要扫描多个 BINLOG 因为需要找到 GTID EVENT
8481c8f592b7f349aa84a1de5c171db681516edfpurge binlog 或者超过参数 expire_logs_days 参数设置不触发全 BINLOG 扫描,如果是中途打开 GTID 重启任然需要扫描多个 BINLOG 因为需要找到 GTID EVENT
8481c8f592b7f349aa84a1de5c171db681516edfsimple_recovery=true

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

8481c8f592b7f349aa84a1de5c171db681516edf重启Mysql不扫描全部的 BINLOG ,只扫描第一个和最后一个 BINLOG
8481c8f592b7f349aa84a1de5c171db681516edfpurge binlog 或者超过参数 expire_logs_days 参数设置不扫描全部 GTID ,只扫描第一个和最后一个 BINLOG

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

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

三、本节总结

8481c8f592b7f349aa84a1de5c171db681516edf5.7.6以下保持默认设置 simplified_binlog_gtid_recovery=flase ,但是这会导致过多的 BINLOG 扫描,况且5.6没有 mysql.gtid_executed 的支持,从库必须开启 log_slave_updates ,这会带来性能影响。所以还是少用 GTID
8481c8f592b7f349aa84a1de5c171db681516edf5.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集合,也是前面讨论的。

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

8481c8f592b7f349aa84a1de5c171db681516edfbinlog_gtid_simple_recovery/simplified_binlog_gtid_recovery是如何影响BINLOG文件的扫描的的
8481c8f592b7f349aa84a1de5c171db681516edf5.7.6以下应该如何设置
8481c8f592b7f349aa84a1de5c171db681516edf5.7.6以上应该如何设置

原文发布时间为:2018-03-9
本文作者:
高鹏(重庆八怪)
本文来自云栖社区合作伙伴“老叶茶馆”,了解相关信息可以关注“ 老叶茶馆 ”微信公众号
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
存储 缓存 监控
MySQL服务器配置优化:my.cnf参数调优指南
本文深入解析了MySQL核心配置参数及性能优化技巧,涵盖内存结构、调优原则、存储引擎优化、查询性能优化等内容,通过实战案例帮助读者构建高性能MySQL服务器配置,解决常见的性能瓶颈问题。
|
5月前
|
SQL 运维 关系型数据库
深入探讨MySQL的二进制日志(binlog)选项
总结而言,对MySQL binlogs深度理解并妥善配置对数据库运维管理至关重要;它不仅关系到系统性能优化也是实现高可靠性架构设计必须考虑因素之一。通过精心规划与周密部署可以使得该机能充分发挥作用而避免潜在风险带来影响。
189 6
|
6月前
|
存储 SQL 关系型数据库
MySQL中binlog、redolog与undolog的不同之处解析
每个都扮演回答回溯与错误修正机构角色: BinLog像历史记载员详细记载每件大大小小事件; RedoLog则像紧急救援队伍遇见突發情況追踪最后活动轨迹尽力补救; UndoLog就类似时间机器可倒带历史让一切归位原始样貌同时兼具平行宇宙观察能让多人同时看见各自期望看见历程而互不干扰.
336 9
|
7月前
|
存储 SQL 关系型数据库
MySQL的Redo Log与Binlog机制对照分析
通过合理的配置和细致的管理,这两种日志机制相互配合,能够有效地提升MySQL数据库的可靠性和稳定性。
253 10
|
9月前
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
433 23
|
10月前
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
5月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
439 158
|
5月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
5月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1027 152
|
5月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
812 156

推荐镜像

更多