浅谈Mysql原理与优化(七)——崩溃恢复

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL数据库作为一个主流数据库,对于意外宕机的情况下,数据的一致性和完整性,必须要有保障,那么具体原理是怎样的呢

MySQL数据库作为一个主流数据库,对于意外宕机的情况下,数据的一致性和完整性,必须要有保障,那么具体是怎么保障的呢。

对于数据的完整性保障,MySQL的架构中,这个任务取决于具体的存储引擎。

  • 像MyISAM这类的存储引擎,没有事务支持,并不能很好的保证数据的完整性。如果突然断电,则可能会出现数据文件损坏,此时需要用通过mysiamchk工具来进行修复。
  • 像Memory这类更为简单的存储引擎,掉电数据就没有了,只能人为介入,重新恢复
  • 像InnoDB这样比较高级的存储引擎,数据的一致性和完整性的保存,已经设计的比较完备了,可以在各种意外崩溃情况发生下保证数据的一致性。是通过以下几个技术来实现的。

WAL( Write-Ahead Logging)

image.png

这是InnoDB使用的重要的数据一致性保证的技术之一,即先写日志,假设我们更新A表中的某一行数据,MySQL会将这个操作作为一个日志记录在名为Redo Log的日志中,然后更新内存数据块,并不要求马上更新数据表磁盘文件,会在合适的时候再把内存中的数据块刷新到磁盘上。
这样的好处是把对磁盘的随机访问,变成了顺序访问,提高了效率。

Redo Log
正如刚才所讲,Redo Log中记录了执行的数据库操作。具体来讲,Redo Log 有内存中的Redo Log Buffer 和磁盘中的 Redo Log File,数据库操作会先写入到内存中的Redo Log Buffer中,一旦Redo Log Buffer 写满,或者事务提交了,就需要把Redo Log buffer写入到 Redo Log File中持久化储存起来

Undo Log
Undo Log是和和数据库操作的反向操作,进行一次数据库修改就会产生一组对应的Undo Log 用来回滚数据操作和实现MySQL的多版本控制MVCC。Undo Log的产生也会产升Redo Log,所以他的持久化是可以通过Redo Log来保证的。

崩溃恢复
如果一个InnoDB数据库处于意外停止的情况下,他会怎样恢复呢,InnoDB会首先重放所有磁盘中的Redo Log。这是会将数据文件更新到尽可能最新的状态(包括所有未回滚的事务),同时一会把Undo Log初始化到崩溃前的状态(由于Undo Log受Redo Log保护),最后再将所有为未提交的事务用Undo Log回滚。这样,数据库就处于一个最新的且数据一致的状态了。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
SQL 关系型数据库 MySQL
MySQL慢查询优化、索引优化、以及表等优化详解
本文详细介绍了MySQL优化方案,包括索引优化、SQL慢查询优化和数据库表优化,帮助提升数据库性能。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
MySQL慢查询优化、索引优化、以及表等优化详解
|
2月前
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
MySQL主从复制原理和使用
|
23天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
53 3
|
25天前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
51 1
|
2月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:百万级数据统计优化实践
【10月更文挑战第21天】 在处理大规模数据集时,传统的单体数据库解决方案往往力不从心。MySQL和Redis的组合提供了一种高效的解决方案,通过将数据库操作与高速缓存相结合,可以显著提升数据处理的性能。本文将分享一次实际的优化案例,探讨如何利用MySQL和Redis共同实现百万级数据统计的优化。
79 9
|
27天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
148 1
|
2月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
61 5
|
2月前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
2月前
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
79 1
|
2月前
|
缓存 关系型数据库 MySQL
一文彻底弄懂MySQL优化之深度分页
【10月更文挑战第24天】本文深入探讨了 MySQL 深度分页的原理、常见问题及优化策略。首先解释了深度分页的概念及其带来的性能和资源问题。接着介绍了基于偏移量(OFFSET)和限制(LIMIT)以及基于游标的分页方法,并分析了它们的优缺点。最后,提出了多种优化策略,包括合理创建索引、优化查询语句和使用数据缓存,帮助提升分页查询的性能和系统稳定性。
125 1