Mysql binlog 三种模式

        在MySQL中,binlog(二进制日志)有三种主要的模式,它们决定了二进制日志中记录信息的详细程度。这些模式对于复制、数据恢复以及审计等场景非常重要。以下是这三种模式:

  1. STATEMENT

    • 描述:在STATEMENT模式下,MySQL会记录每一条会修改数据的SQL语句(不包括SELECT和SHOW这类的语句)。这意味着,当日志被应用到slave或从binlog恢复数据时,MySQL会尝试重新执行这些SQL语句。
    • 优点:产生的日志量较小,因为只记录SQL语句本身。
    • 缺点:某些情况下,由于SQL语句的执行结果依赖于执行时的上下文(如当前时间、数据库环境变量等),可能无法准确地复现原始操作,尤其是在使用函数(如NOW())或包含用户变量的情况下。
  2. ROW

    • 描述:在ROW模式下,MySQL会记录每一行数据的变化情况,包括每一行数据在修改前后的具体内容。这使得复制和恢复操作非常精确,因为每一行数据的变化都被直接记录了下来。
    • 优点:可以精确地复制或恢复数据,不依赖于执行时的上下文。
    • 缺点:由于记录了每一行数据的变化,因此产生的日志量通常比STATEMENT模式大很多,尤其是在进行大量数据修改操作时。
  3. MIXED

    • 描述:MIXED模式是STATEMENT和ROW模式的混合。MySQL会根据SQL语句的实际情况来决定使用哪种模式记录日志。如果MySQL认为使用STATEMENT模式可以安全地复现原始操作,就会使用STATEMENT模式;否则,会使用ROW模式。
    • 优点:结合了STATEMENT和ROW模式的优点,既尽可能地减少了日志量,又保证了复制和恢复的准确性。
    • 缺点:在某些情况下,MySQL可能无法准确地判断使用哪种模式更合适,这可能导致意外的日志模式选择。

设置binlog模式

        可以通过MySQL的配置文件(通常是my.cnfmy.ini)来设置binlog的模式。例如,要设置binlog模式为MIXED,可以在配置文件中添加或修改以下行:

[mysqld] 
binlog_format = MIXED

注意:修改配置后需要重启MySQL服务才能生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值