文件位置
配置文件位置/etc/my.cnf或/etc/mysql/my.cnf
配置文件内容
[mysqld] # 标识机器id,在binlog中会记录此信息,在slave机器中也回记录对应的master主机server_id server_id=1 # 主库配置 # binlog名称,表示开启binlog log-bin=mysql-bin # binlog忽略的库,可配置多个 binlog-ignore-db=mysql binlog-ignore-db=sys binlog-ignore-db=information_schema # binlog记录的库 binlog-do-db=mycattest # binlog记录的记录类型 可选ROW/STATEMENT/MIXED binlog-format=STATEMENT #从库配置 #启用中继日志,中继日志名称 relay-log=mysql-relay
查询环境变量语句:show variables like '%relay%';
binlog-format参数说明
值 | 说明 | 优点 | 缺点 |
ROW | 从数据层面记录变化 | 确保数据一致性 | 记录日志过多,且效率底例如批量更新会记录所有更新后的数据 |
STATEMENT | 记录修改的SQL | 节省空间,性能高 | 无法正确解析依赖上下文的环境变量,及数据库函数,例如@@hostname,UUID()等 |
MIXED | 依据每条sql判断使用哪种模式记录日志 | 综合了两个模式优点尽量保证了数据一致性 | 增加了复杂性 |
企业场景如何选择binlog模式 1、互联网公司,使用MySQL的功能相对少(存储过程、触发器、函数) 选择默认的语句模式,Statement Level(默认) 2、公司如果用到使用MySQL的特殊功能(存储过程、触发器、函数) 则选择Mixed模式 3、公司如果用到使用MySQL的特殊功能(存储过程、触发器、函数)又希望数据最大化一直,此时最好选择Row level模式
Mixed切换为ROW模式记录场景
- 当 DML 语句更新一个 NDB 表时;
- 当函数中包含 UUID() 时;
- 2 个及以上包含 AUTO_INCREMENT 字段的表被更新时;
- 执行 INSERT DELAYED 语句时;
- 用 UDF 时;
- 视图中必须要求运用 row 时,例如建立视图时使用了 UUID() 函数;
- 事物隔离级别较高时默认事物隔离级别为REPEATABLE-READ
参考资料
https://i4t.com/213.html https://www.cnblogs.com/zhoujinyi/p/5436250.html