开启本地Binlog日志
操作场景
本地Binlog指的是存储在实例本地的Binlog,占用实例的存储空间。本章节介绍如何开启本地Binlog,以及开启Binlog后对TaurusDB的性能影响。
计费说明
本地Binlog占用本地存储空间,存储空间单价请参见TaurusDB价格详情中的“存储空间价格”。
性能影响
性能损耗和业务压力强相关,开启Binlog不会影响查询(SELECT)性能,只会影响写入更新(如INSERT、UPDATE、DELETE等)性能。
TaurusDB服务的Binlog和开源的MySQL-Binlog两者从使用方法上来说无明显差异,TaurusDB服务的Binlog完全兼容开源MySQL的Binlog相关语法。
开启本地Binlog
- 登录TaurusDB管理控制台。
- 选中要开启Binlog的实例,单击实例名称,进入实例详情界面。
- 在实例详情界面,单击参数修改,跳转到参数界面。
- 根据内核版本设置日志参数,内核版本可以在实例概览页面,处进行查看。
- 内核版本 < 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;
您可以根据获取到的线程ID排查自身业务,例如图1中“53”,根据业务需要及时提交或回滚事务并执行新事务(例如:SELECT 1;),或者对于空闲连接进行断开重连操作。
- 内核版本 < 2.0.45.230900
- (可选)在“参数”页签查看参数“binlog_expire_logs_seconds”,修改为需要的保留时间,单位是秒。
- 在新生成一个Binlog的文件的时候,数据库会启动清理功能,清理已经超过保留时间的Binlog文件。
- 如果一直未生成新的Binlog文件,则历史的Binlog文件一直不会被清理,可能会超过保留时间。如果需要立即清理,可以连接数据库执行 flush logs; 强制生成新的Binlog文件,此时会触发清理机制。
