mysql的日志为什么需要两阶段提交

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: mysql的日志为什么需要两阶段提交

Mysql整理记录Day3

接上篇,mysql更新语句执行流程,我们了解了更新语句的执行流程,涉及到两部分日志:redo log和binlog,下面我们再深入聊聊这部分东东。

下面我们来分析以下,在两阶段提交的不同时刻,Mysql发生异常重启会发生什么?

时刻A:

此时由于 binlog 还没写,redo log 也没提交,所以崩溃恢复的时候,这个事务会回滚。因为还没写bin log

,所以也不会传到备库里(备库需要消费bin log来与主库保持一致)。

时刻B

此刻,binlog 写完,redo log还没有commit,发生了 crash,mysql 崩溃恢复是如何处理的呢?

mysql是这么处理的

  • 如果redo log的事务是完整的,也就是有了commit标识,则直接提交
  • 如果redo log的事务只有完整的prepare,则需要根据binlog的完整性,决定回滚还是提交;
    1. 如果binlog完整,则提交事务
    2. 否则,回滚事务

因为 mysql 有一项崩溃恢复逻辑,prepare的redo log + 完整的binlog,则提交事务。这里有小伙伴就要问了,为什么需要提交事务?因为binlog里有这条记录,在传到备库里会被执行,所以主库也需要提交事务,来保证数据的一致性。

崩溃恢复的时候,mysql是怎么知道binlog是否完整的?

上篇文章我们知道了,binlog 有两种格式,statement 和 row 。

  • statement 格式的 binglog,最后会有 COMMIT;
  • row 格式的 binlog,最后会有一个 XID event。
    另外,在 mysql5.6.2 版本之后,还引入了 binlog-checksum 参数,用来验证 binlog 内容的正确性。

笔记参考于极客时间《MySQL实战45讲》

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
SQL 监控 关系型数据库
解密MySQL二进制日志:深度探究mysqlbinlog工具
解密MySQL二进制日志:深度探究mysqlbinlog工具
22 3
|
1天前
|
SQL 监控 关系型数据库
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
6 0
|
5天前
|
SQL 关系型数据库 MySQL
mysql日志管理 、备份与恢复
mysql日志管理 、备份与恢复
|
11天前
|
SQL 存储 关系型数据库
MySQL慢日志的介绍以及如何使用问题
【5月更文挑战第19天】MySQL慢日志的介绍以及如何使用问题
22 2
|
19天前
|
关系型数据库 MySQL 数据库
mysql数据库bin-log日志管理
mysql数据库bin-log日志管理
|
21天前
|
关系型数据库 MySQL 数据管理
MySQL通过 bin-log 恢复从备份点到灾难点之间数据
MySQL通过 bin-log 恢复从备份点到灾难点之间数据
205 0
|
21天前
|
DataWorks 关系型数据库 MySQL
DataWorks产品使用合集之在DataWorks中,如何通过PolarDB for MySQL来查看binlog日志
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
40 1
|
21天前
|
SQL 监控 关系型数据库
【MySQL学习】MySQL的慢查询日志和错误日志
【MySQL学习】MySQL的慢查询日志和错误日志
|
1天前
|
SQL 关系型数据库 MySQL
|
1天前
|
SQL 监控 关系型数据库