binlog日志格式,mysql默认采用statement,建议使用mixed
STATEMENT模式(SBR) 每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
ROW模式(RBR) 不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。
MIXED模式(MBR) 以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
查询:
在线配置:
配置文件:binlog_format = MIXED
把relay-log里的日志内容再记录到slave本地的binlog里,默认关闭,主主就要开启。
如果关闭当主主复制的时候会报错,导致主B写入数据时主A无法同步,5.7版本及以后不用开启,用一张gtid_executed系统表记录同步复制的信息(UUID:事务号),减轻了压力。
查询:show variables like 'log_slave_updates';
在线配置:
配置文件:log_slave_updates = 0
log-bin将开启binlog日志,mysql-bin 是日志的基本名或前缀名,可以更换。 log-bin-index指定的是binlog文件的索引文件,这个文件管理了所有的binlog文件的目录,不用进行更改,默认即可。
查询:
在线配置:
配置文件:log-bin=mysql-bin
| log-bin-index=mysql-bin.index
超过指定天数的binlog将被删除
查询:
在线配置:
配置文件:expire_logs_days = 7
relay-log在从上指定从主那里同步过来的binlog文件存放位置。 relay-log-index定义relay-log-index的文件名,类似binlog的log-bin-index。
查询:show variables like '%relay%';
在线配置:
配置文件:relay-log=mysql.relay-log
| relay-log-index=mysql.relay-log.index
设置relay-log.info的位置和名称(relay-log.info记录MASTER的binary_log的恢复位置和relay_log的位置)
查询:show variables like '%relay%';
在线配置:
配置文件:relay-log=mysql.relay-log
| relay-log-index=mysql.relay-log.index
从服务器在主服务器上复制的binlog日志,如果超过这个值,将形成一个新的日志。用于控制文件大小。
查询:
在线配置:
配置文件:max_relay_log_size = 512M
binlog-ignore-db无需开启二进制日志文件的数据库,多个数据库则要重复设置 replicate-ignore-db来设置不需要同步的库 bin-do-db,bin-ignore-db 为互斥关系,只需设置其中一项即可
查询:
在线配置:
配置文件:
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
|
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
二进制日志缓冲区吗,默认是32k。该参数是基于会话的,不要设置过大。
当事务的记录大于设定的binlog_cache_size时,mysql会把缓冲区中的日志信息写入一个临时文件中,所以该值也不能设置过小。
使用命令show global status like 'binlog_cache_%';
查看Binlog_cache_disk_use(记录了使用临时文件写二进制日志的次数)和Binlog_cache_use(用缓冲的次数),可以看到binlog_cache_size值设置小了。
+———————–+——-+ | Variable_name | Value | +———————–+——-+ | Binlog_cache_disk_use | 1008 | | Binlog_cache_use | 5721 | +———————–+——-+
查询:show variables like 'binlog_cache_size';
在线配置:
配置文件:binlog_cache_size = 64M
超过这个数值,将会把日志写到一个新的文件中。最大值1GB,最小值1M,默认1GB。
查询:
在线配置:
配置文件:max_binlog_size = 512M
表示的是binlog 能够使用的最大cache 内存大小,默认是1M。
查询:show global status like 'bin%';
在线配置:set global max_binlog_cache_size=1048576*100
配置文件:max_binlog_cache_size = 100M
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。