更新时间:2026-03-17 GMT+08:00
分享

开启本地Binlog日志

操作场景

本地Binlog指的是存储在实例本地的Binlog,占用实例的存储空间。本章节介绍如何开启本地Binlog,以及开启Binlog后对TaurusDB的性能影响。

计费说明

本地Binlog占用本地存储空间,存储空间单价请参见TaurusDB价格详情中的“存储空间价格”。

性能影响

性能损耗和业务压力强相关,开启Binlog不会影响查询(SELECT)性能,只会影响写入更新(如INSERT、UPDATE、DELETE等)性能。

TaurusDB服务的Binlog和开源的MySQL-Binlog两者从使用方法上来说无明显差异,TaurusDB服务的Binlog完全兼容开源MySQL的Binlog相关语法。

开启本地Binlog

  1. 登录TaurusDB管理控制台
  2. 选中要开启Binlog的实例,单击实例名称,进入实例详情界面。
  3. 在实例详情界面,单击参数修改,跳转到参数界面。
  4. 根据内核版本设置日志参数,内核版本可以在实例概览页面,配置信息 > 内核版本处进行查看。

    • 内核版本 < 2.0.45.230900

      搜索“log-bin”参数,在值列下拉框中选择“ON”,单击保存。该参数修改完成后,需要重启实例才可生效。重启实例的影响及注意事项请参见重启实例

    • 内核版本 ≥ 2.0.45.230900

      搜索“rds_global_sql_log_bin”参数,在值列下拉框中选择“ON”,单击保存。该参数修改后,立即生效,不需要重启实例。

      通过该方式开启Binlog后,需要连接数据库执行如下命令,确认是否所有线程均已成功开启Binlog。

      select @@session.rds_sql_log_bin_inconsistent_count;
      表1 状态变量说明

      状态变量

      说明

      rds_sql_log_bin_inconsistent_count

      表示所有用户连接上sql_log_bin的设置和rds_global_sql_log_bin的设置不一致的个数。

      • 查询结果为0时,代表所有线程均已成功开启Binlog,所有需要记录Binlog的语句都会被记录到Binlog中,此时才能做全量备份。
      • 查询结果不为0时
        • 如果您使用的是DAS,请直接在SQL执行记录的“消息”页签下查看warning。
        • 如果您使用的是MySQL客户端连接,继续执行如下命令,查看尚未成功开启Binlog的线程ID,查询到的线程ID中执行的语句可能暂时未能被记录到Binlog中。
          show warnings;
          图1 查询未成功开启Binlog的线程ID

          您可以根据获取到的线程ID排查自身业务,例如图1“53”,根据业务需要及时提交或回滚事务并执行新事务(例如:SELECT 1;),或者对于空闲连接进行断开重连操作。

  5. (可选)在“参数”页签查看参数“binlog_expire_logs_seconds”,修改为需要的保留时间,单位是秒。

    • 在新生成一个Binlog的文件的时候,数据库会启动清理功能,清理已经超过保留时间的Binlog文件。
    • 如果一直未生成新的Binlog文件,则历史的Binlog文件一直不会被清理,可能会超过保留时间。如果需要立即清理,可以连接数据库执行 flush logs; 强制生成新的Binlog文件,此时会触发清理机制。

相关文档