日志

bin log

格式

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

主从同步是如何实现的

binlog 刷盘时机

buffer pool

redo log

undo log

relay log