MYSQL BINLOG_FORMAT参数

mysql复制主要有三种方式

  • 基于SQL语句的复制(statement-based replication, SBR)
  • 基于行的复制(row-based replication, RBR)
  • 混合模式复制(mixed-based replication, MBR)

SQL复制

  • 定义:每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
  • 优点:1.binlog日志量小减少IO 2.不仅可以用于主从库还可以用于数据库回滚 3.主库版本可以比从库更低
  • 缺点:1.特殊函数将会导致主从库不一致比如now() 2.比基于行的复制将会导致更多的锁 3.从库重复执行函数花销时间以及语句出错也会导致更多资源消耗

行复制

  • 定义:不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。
  • 优点:1.不会出现某些函数无法被正常复制的情况 2.函数只执行一次 3.为多线程进行复制提供了可能
  • 缺点:1.会产生大量日志 2.复制会变慢(IO导致) 3.回滚会变慢(IO导致)

混合复制

  • 定义:一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
  • 优点:IO少,日志少,完美执行函数
发布了21 篇原创文章 · 获赞 2 · 访问量 6597

猜你喜欢

转载自blog.csdn.net/qq_36638446/article/details/104184498