二进制日志在复制和数据恢复中发挥着重要作用。在复制中,源数据库将记录在其二进制日志中的数据更改传送到副本的中继日志。它们还可用于修复经历数据漂移的副本。以类似的方式,二进制日志在执行时间点恢复时是必不可少的。本快速指南将为您提供开始使用二进制日志的基础知识。
什么是二进制日志?
二进制日志,通常简称 binlogs,以二进制格式记录数据。他们跟踪修改数据库的数据更改。通常,除非它们是修改数据库中数据的事务的一部分,否则不会记录 SELECT 语句。
记录的更改类型取决于 的值–binary-format。例如,–binary-format取值MIXED, STATEMENT,或ROW。从 MySQL 5.7.7 开始,默认值为 ROW,这意味着会记录更改单个表行的事件。在 MySQL 5.7.7 之前,默认值为STATEMENT. 基于语句的日志记录跟踪修改数据的 SQL 语句。混合日志首先使用基于语句的日志,并在使用基于行的日志更有意义时切换到 ROW。有关二进制日志记录格式的更多信息,请查看参考手册。
管理 Binlog
系统变量log_bin用于启用binlogs,不是动态的;将其从默认值更改将需要重新启动数据库。二进制日志的默认位置在数据目录中。如果为 指定了一个值log_bin,它将用作默认文件名。如果基本名称包含绝对路径,则二进制日志将位于那里。
在 MySQL 8.0 之前,binlogs 默认是禁用的。要全局启用它们,请–log-bin在启动时调用或log_bin在配置文件中设置并重新启动数据库。启用后,可以在会话期间通过设置禁用二进制sql_log_bin日志OFF。
从 MySQL 8.0 开始,binlogs 默认启用,除非 mysqld 用于通过调用–initialize或–initialize-insecure在启动时初始化数据库。–skip-log-bin在启动时使用或禁用二进制日志–disable-log-bin。请注意,如果log_bin在配置文件中指定,这些变量将被忽略。
无论您拥有哪个 MySQL 版本,管理 binlog 的大小和轮换都很重要。由于 binlogs 跟踪数据库修改,如果在短时间内进行大量更改,它们可能会突然占用大量磁盘空间。如果可用磁盘空间小于 25%,执行大量写入或删除的进程或事务可能会使您的数据库容易崩溃。
在这种情况下,您可以手动清除二进制日志。使用PURGE BINARY LOGS下面的语句。清除二进制日志需要BINLOG_ADMIN特权。
PURGE { BINARY | MASTER } LOGS {
TO 'log_name'
| BEFORE datetime_expr
}
虽然可以从命令行删除 binlog,但不建议这样做,因为 MySQL 服务器会丢失对它们的跟踪,并且可能会在需要时抛出 binlog 丢失的错误消息。
积极主动地,可以采取其他“房屋清洁”措施。重新启动数据库时会自动刷新二进制日志,这可能并不理想。系统变量expire_logs_days可以设置刷新日志的时间间隔。下表列出了控制二进制日志大小和轮换的此变量和其他变量。
| 变量名称 | 版本 | 功能 | 默认 |
|---|---|---|---|
| expire_logs_days | 5.6、5.7、8.0 | 自动删除 binlog 的天数。 | 0(不自动删除) |
| binlog_expire_logs_seconds | 8.0 | 自动删除 binlog 的秒数。 | 2592000 |
| binlog_expire_logs_auto_purge | 8.0.29 | 启用和禁用启用自动清除的变量。 | 开启 |
| max_binlog_size | 5.6、5.7、8.0 | 超过指定大小时启动新的 binlog 文件。 | 1073741824 |
| binlog_row_event_max_size | 5.6、5.7、8.0 | 使用基于行的日志记录时,对 binlog 文件设置软限制。 | 256 |
| binlog_transaction_compression | 8.0.20 | 在写入 binlog 之前,payload 会被压缩。 | 关闭 |
| binlog_transaction_compression_level_zstd | 8 从 1(最低)到 20(最高)的数值,表示压缩力度的级别。 | 3 |
读取 Binlog
如果您尝试使用二进制格式,cat它们看起来就像乱码。为了理解它,该mysqlbinlog实用程序在命令行上使用。下面的示例是使用基于行的格式的示例。

你已经准备好开始使用 binlogs 了!要了解如何在复制中使用它们,请阅读复制和二进制日志记录选项和变量。阅读使用二进制日志进行时间点恢复以获取有关使用二进制日志恢复数据的更多信息。
原文标题:Start Using Binlogs: A Quick Guide
原文作者:Monica Silva
原文地址:https://virtual-dba.com/blog/start-using-binlogs-a-quick-guide/




