binlog的三种模式以及特点

binlog二进制日志文件有三种模式:

  • 语句模式
  • 行模式
  • 混合模式

statement语句模式:

也就是当delete删除一百行数据的时候,binlog只记录那一句delete SQL语句,(而如果是redolog删除一百行,就会在日志中,写一百行)。节省IO,提高性能。但是正因为只有SQL语句,当进行主从同步的时候,master上同步,也就是执行这些SQL,其中特殊函数功能的SQL执行时,容易出现问题。

row行模式:

每进行一次数据操作都会详细的记录数据前后具体变化,正因为这样,那么假如说删除十万行数据,就写入日志十万次,会导致binlog非常大,主从同步的时候,会占用大量IO、急剧降低系统IO。解决办法就是通过set sql_log_bin来解决,让删除语句不传下从库,然后从库再删除表(setsql_log_bin=0就是不让语句记录到binlog中,删除语句没有记录到日志中,所以从库不删除内容)

混合模式:

混合模式我觉得就是针对SQL中是否有函数出现的一种模式吧,因为语句模式记录的带函数的SQL可能在master上执行不了,那么就选择行模式,详细记录数据操作前后的变化;而对于一些简单的SQL就使用语句模式,这样在保证主从同步可以成功的同时,又减少了binlog的大小,从而降低系统IO的负载。

发布了33 篇原创文章 · 获赞 52 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_44714603/article/details/88382024