
# 开启本地Binlog日志
#### 操作场景
本地Binlog指的是存储在实例本地的Binlog，占用实例的存储空间。本章节介绍如何开启本地Binlog，以及开启Binlog后对TaurusDB的性能影响。
#### 计费说明
本地Binlog占用本地存储空间，存储空间单价请参见[TaurusDB价格详情](https://www.huaweicloud.com/pricing.html?tab=detail#/taurusdb)中的"存储空间价格"。
#### 性能影响
性能损耗和业务压力强相关，开启Binlog不会影响查询（SELECT）性能，只会影响写入更新（如INSERT、UPDATE、DELETE等）性能。
TaurusDB服务的Binlog和开源的MySQL-Binlog两者从使用方法上来说无明显差异，TaurusDB服务的Binlog完全兼容开源MySQL的Binlog相关语法。
#### 开启本地Binlog
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 选中要开启Binlog的实例，单击实例名称，进入实例详情界面。
3. 在实例详情界面，单击参数修改，跳转到参数界面。
4. 根据内核版本设置日志参数，内核版本可以在实例概览页面，"配置信息 \> 内核版本"处进行查看。 
   - 内核版本 \< 2.0.45.230900 搜索"log-bin"参数，在值列下拉框中选择"ON"，单击保存。该参数修改完成后，需要重启实例才可生效。重启实例的影响及注意事项请参见[重启实例](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_0040.html)。
     
   
   - 内核版本 ≥ 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   
         ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002558073557.png "点击放大")
         您可以根据获取到的线程ID排查自身业务，例如[图1]中"53"，根据业务需要及时提交或回滚事务并执行新事务（例如：SELECT 1;），或者对于空闲连接进行断开重连操作。
         
        
      
   
   
   
   
5. （可选）在"参数"页签查看参数"binlog_expire_logs_seconds"，修改为需要的保留时间，单位是秒。 
   - 在新生成一个Binlog文件时，数据库会启动清理功能，清理已经超过保留时间的Binlog文件。
   
   - 如果一直未生成新的Binlog文件，则历史的Binlog文件一直不会被清理，可能会超过保留时间。如果需要立即清理，可以连接数据库执行 flush logs; 强制生成新的Binlog文件，此时会触发清理机制。
   
   
   
   
 
