MySQL 二进制和中继日志管理
目录
- 一: 二进制日志管理
- 1. 配置二进制日志
- 2. 二进制日志的格式
- 3. 二进制日志管理命令
- 4. 临时禁用二进制日志
- 二:中继日志管理
- 1. 重置中继日志
- 2. 重置中继日志并清空连接信息
一: 二进制日志管理
1. 配置二进制日志
-
log_bin
:指定二进制日志的文件名,使用这个选项的时候就开启了二进制日志 -
expire_logs_days
:设置二进制日志文件的自动过期天数。过了这个期限,旧的日志文件会被自动删除。 -
max_binlog_size
:指定单个二进制日志文件的最大大小。达到这个大小后,MySQL 会关闭当前日志文件,并创建一个新的日志文件。 -
binlog_do_db
:指定只有哪些数据库的更改会被记录在二进制日志中。 -
binlog_ignore_db
:指定哪些数据库的更改不应该被记录在二进制日志中。 -
skip-log-bin
:用于完全禁用二进制日志,配置了这个选项,会覆盖 log_bin 的设置,导致二进制日志不会被启用。
说明:
MYSQL5.7
只设置了全局系统变量log_bin
,没有设置全局系统变量server_id的话,那么MySQL启动不了,而且错误日志没有任何错误信息。
例如:
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 14
max_binlog_size = 256M
binlog-do-db = position_ehcommon
binlog-do-db = iot
binlog-do-db = map
2. 二进制日志的格式
-
基于语句复制(SBR):记录执行的SQL语句,日志文件较小,但是某些情况下可能导致数据不一致。例如使用NOW()、RAND())或用户自定义函数的时候
-
基于行级复制(RBR):记录对每一行数据进行的更改,日志文件较大,能确保数据的一致性,不受SQL语句的具体形式影响
-
混合模式复制(MBR):默认模式,MySQL自动选择使用哪种格式。通常对于简单的操作使用SBR,而对于可能导致数据不一致的操作使用RBR。
指定二进制日志格式:
binlog_format
=STATEMENT|ROW|MIXED
3. 二进制日志管理命令
-
RESET MASTER
:用于重置主服务器上的二进制日志。执行 RESET MASTER 会删除所有的二进制日志文件,并重新创建一个新的二进制日志文件。 -
FLUSH LOGS
:关闭并重新打开所有日志文件(包括二进制日志、错误日志等),不会删除现有的二进制日志,会创建新的二进制日志文件 -
SHOW MASTER STATUS
:显示的是当前主服务器的二进制日志信息,包括当前正在使用的二进制日志文件名和位置(Position)。 -
SHOW BINARY LOGS
:列出了MySQL服务器上所有的二进制日志文件。提供了每个日志文件的名称和大小。 -
SHOW MASTER LOGS
:SHOW BINARY LOGS的一个别名,两者提供相同的功能和输出
4. 临时禁用二进制日志
可以通过 sql_log_bin 变量来启用或禁用当前会话的二进制日志记录
-
SET sql_log_bin = 0
;(禁用) -
SET sql_log_bin = 1
;(启用)
二:中继日志管理
MySQL 主从复制时,中继日志(relay log)默认是开启并自动管理的,不需要额外配置
1. 重置中继日志
# 清除中继日志并重置复制状态,但不会清除使用CHANGE MASTER TO命令设置的主服务器连接信息
RESET SLAVE;
-
清除中继日志(relay logs)。
-
清除从服务器的复制状态。
-
不会清除主服务器连接信息(如主服务器的地址、用户名、密码等)
2. 重置中继日志并清空连接信息
# MySQL 5.7.7之后的版本
RESET SLAVE ALL
-
清除中继日志(relay logs)。
-
清除从服务器的复制状态。
-
清除
CHANGE MASTER TO
命令设置的所有主服务器连接信息(包括主服务器地址、用户名、密码等)。