mysql的binlog三种配置模式小结
作者:文盲青年
cat /etc/my.cnf
[mysqld] [client] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8 # port=13000 server-id=1 binlog_format=ROW log_bin=/tmp/mysql-bin.log [mysql] default-character-set=utf8
binlog_format的值有3个选项:MIXED、ROW、STATEMENT
MIXED:默认设置。允许记录 row-based 和 statement-based 格式的日志。如果一个语句不能以 row-based 格式安全地记录(例如,涉及到自动递增字段或者时间函数),MySQL 将自动使用 statement-based 格式。
ROW:记录所有的修改操作为 row-based 格式。会记录每行数据的具体变化,而不是执行的 SQL 语句。这对于复制(replication)非常有用,因为它可以确保即使在主服务器和从服务器上的数据类型或者表结构有微小差异时,复制也能正常工作。
STATEMENT:记录所有的修改操作为 statement-based 格式。记录的是执行的 SQL 语句,而不是每行数据的具体变化。这种格式的日志文件通常比 row-based 格式小,但是在某些情况下,比如涉及到自动递增字段或者时间函数时,可能会导致复制时出现问题。
具体选哪种看需求:
如果想要确保数据的一致性,设置 binlog_format 为 ROW。
如果你更关心日志文件的大小,并且确信你的应用场景不会导致 statement-based 复制的问题,可选择STATEMENT。
配置参考:
log_bin = /var/log/mysql/mysql-bin.log:启用binlog并指定路径和文件名。
binlog_format = STATEMENT:设置binlog的格式,可以是STATEMENT、ROW、MIXED。
expire_logs_days = 7:设置binlog文件的过期时间。
max_binlog_size = 100M:设置单个binlog文件的最大尺寸。
到此这篇关于mysql的binlog三种配置模式小结的文章就介绍到这了,更多相关mysql binlog配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!