日志
bin log
格式
- 基于语句格式
- 日志文件较小:因为记录的是 SQL 语句而不是每行数据的变化,日志文件相对较小。
- 无法精确复制某些语句:某些包含非确定性函数(如 UUID()、NOW() 等)的语句在复制时可能无法保证一致性。
- 复杂语句的复制问题:复杂语句(如包含子查询或用户自定义函数的语句)在复制时可能出现问题。
- 基于行格式
- 精确复制:记录每一行数据的变化,确保数据的一致性,即使是复杂的 SQL 语句也能准确复制。
- 日志文件较大:记录每一行数据的变化,日志文件相对较大,占用更多的存储空间。
- 难以阅读和理解:日志中记录的是数据行的变化,不如 SQL 语句直观,调试和审计较为困难。
- 混合日志
- 默认使用基于语句的日志,遇到需要精确复制的情况(如非确定性函数)时切换到基于行的日志,兼顾了两者的优点。