日志格式
-
ROW:
基于【数据行】的模式,就是把所有变化的数据记录下来:
- 优点: 稳定不会有bug
- 缺点: 日志文件大
-
STATEMENT:
基于【sql语句】的模式,就是把所有的执行的sql语句记录下来
- 优点:日志文件小
- 缺点: 可能会有mysql版本不同函数执行异常的bug,比如: sleep
-
MIXED
混合模式: 前两种模式的混合,根据具体sql,mysql内部自动选择,而且对【ROW模式】进行了优化
-
查看当前类型:
show variables like 'binlog_format';
-
修改模式-语句模式:
vim /etc/my.cnf binlog_format=STATEMENT
查看binlog内容:
// 普通查看:
mysqlbinlog mysql.bin.0003
// 显示具体执行信息:
mysqlbinlog mysql.bin.0003 -v
// 去掉base64符号:
mysqlbinlog mysql.bin.0003 -v --base64-output=decode
过滤参数
一般不在主上做限制,给从库做限制
#### 参数(my.cnf):
#主库(binlog日志记录过滤):
binlog-do-db #只复制-指定的数据库
binlog-ignore-db #不复制-指定的数据库
#从库(中继日志记录过滤):
replicate_do_db #只复制-指定的数据库
replicate_ignore_db #不复制-指定的数据库
replicate_do_table #只复制-指定的数据表
replicate_ignore_table #不复制-指定的数据表
replicate_wild_do_table #只复制-指定的数据表,使用【通配符】
replicate_wild_ignore_table #不复制-指定的数据表,使用【通配符】
示例配置:
# 1.【从库】,只复制【xh库】,排除掉【user表】
replicate_do_db=xh
replicate_ignore_table=xh.user
# 2.【从库】,只复制【xh库】,排除掉以test开头的表
replicate_do_db=xh
replicate_wild_ignore_table=xh.test%