MySQL-binlog 日志原理
MySQL-binlog 日志原理
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
MySQL-binlog 日志原理
MySQL 的二进制日志(binary log),通常被称为 binlog,是 MySQL 数据库中的一种日志文件,它记录了所有的 DDL(Data Definition Language)和 DML(Data Manipulation Language)语句事件,这些语句会导致 MySQL 数据的改变。binlog 是 MySQL 复制的基础,也是进行数据恢复的重要手段。
Binlog 的作用
- 数据复制:在主从复制架构中,主服务器上的 binlog 会被复制到从服务器,从服务器重放这些事件来保持与主服务器的数据一致性。
- 数据恢复:当发生数据丢失时,可以通过 binlog 来进行点对点的数据恢复。
- 审计:binlog 可以用来审计数据变更历史。
Binlog 的格式
MySQL 支持三种格式的 binlog:
- **Statement-Based Replication (SBR)**:每个会修改数据的 SQL 语句都会被记录到 binlog 中。
- **Row-Based Replication (RBR)**:不记录 SQL 语句的上下文信息,而是记录哪些行被修改了,以及修改前后的数据。
- **Mixed-Based Replication (MBR)**:根据不同的情况,自动选择 SBR 或 RBR。
Binlog 的工作原理
- 事件写入:当一个事务被提交时,MySQL 会将该事务的所有修改操作作为一个事件写入到 binlog 中。
- 日志刷新:MySQL 会定期地将内存中的 binlog 缓存刷新到磁盘上的 binlog 文件中。
- 日志索引:MySQL 会维护一个 binlog 索引文件,记录所有的 binlog 文件列表。
Binlog 的配置
在 MySQL 的配置文件(通常是 my.cnf
或 my.ini
)中,可以设置 binlog 的相关参数,如:
log_bin
:启用 binlog 日志。max_binlog_size
:设置 binlog 文件的最大大小。expire_logs_days
:设置 binlog 日志的过期天数,过期后会被自动删除。
Binlog 的管理
MySQL 提供了一些命令来管理 binlog:
SHOW BINARY LOGS
:显示所有的 binlog 文件列表。SHOW BINLOG EVENTS
:显示指定 binlog 文件中的事件。PURGE BINARY LOGS
:删除一定时间前的 binlog 文件。
总结
MySQL 的 binlog 是数据库运维和数据管理中非常重要的组件,它不仅保证了数据的一致性和可恢复性,也为数据库的高可用性和扩展性提供了支持。正确配置和管理 binlog 对于数据库的稳定运行至关重要。