
# 使用mysqlbinlog工具获取binlog
#### 操作场景
本章节介绍如何从弹性云服务器ECS上拉取Binlog日志，并通过mysqlbinlog工具查看并解析Binlog日志。
#### 前提条件
请确认您已开启Binlog日志，包含[本地Binlog](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_0004.html)和[OBS转储Binlog](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_0400.html#ZH-CN_TOPIC_0000002134885257__section20209121620219)。
#### 操作步骤
1. 在ECS上安装MySQL客户端，详情请参考[安装MySQL客户端](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0011.html)。
   TaurusDB兼容社区MySQL 8.0及以上版本，请勿安装8.0以下版本的客户端。
   
2. [通过MySQL客户端连接TaurusDB](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_4007.html)。
3. 执行如下命令，查找需要下载的Binlog文件。
   ```
   show binary logs with time;
   ```
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002558686205.png)
   ![](https://support.huaweicloud.com/usermanual-taurusdb/public_sys-resources/caution_3.0-zh-cn.png)
   Binlog数量过多时，执行时间变长，会短暂阻塞正常的事务提交。
   
4. 执行命令，下载Binlog原始文件到本地。 本章节示例以Linux系统为例，在执行如下语句前，需先执行**exit**退出MySQL客户端后，才能下载Binlog日志到本地。
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002558854115.png)
   ```
   mysqlbinlog -h<连接地址> -u<用户名> -P<端口号> -p<密码> --read-from-remote-server --raw binlog.xxxx -r <结果文件目录>
   ```
   ```
   mysqlbinlog -h127.0.0.1 -uroot -P54855 -p --read-from-remote-server --raw binlog.000002 -r /tmp/
   ```
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002558526653.png "点击放大")
   表1mysqlbinlog参数说明 
   | 参数                            | 说明                                          |
   |:---|:---|
   | -h                            | TaurusDB实例的读写内网地址或读写公网地址。                   |
   | -u                            | TaurusDB的数据库账号， 默认的管理员账号是root。              |
   | -P                            | TaurusDB的数据库端口，默认3306。                      |
   | -p                            | TaurusDB的数据库账号对应的密码。                        |
   | -R（--read-from-remote-server） | 远程下载binlog(用于mysqlbinlog与数据库服务端不在同一台机器的情况)。 |
   | -r（--result-file）             | 直接输出到指定文件。使用 --raw 选项时，这将作为文件名的前缀。          |
      
   
5. 解析Binlog原始文件。
   ```
   mysqlbinlog -vv --base64-output=decode-rows mysql-bin.****** -r  <结果文件>
   ```
   ```
   mysqlbinlog -vv --base64-output=decode-rows /tmp/binlog.000002 -r /tmp/000002.result
   ```
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002558687721.png)
   表2解析相关参数 
   | 参数              | 说明            |
   |:---|:---|
   | -vv             | 查看具体SQL语句及备注。 |
   | --base64-output | 解析Binlog日志文件。 |
      
   
 
#### mysqlbinlog其他参数
表3mysqlbinlog参数 
| 参数               | 说明                  |
|:---|:---|
| --start-position | 表示从指定的起始位置开始解析。     |
| --start-datetime | 表示从指定的时间开始解析。       |
| --stop-position  | 表示解析到指定的位置。         |
| --stop-datetime  | 表示解析到指定的时间。         |
| --skip-gtids     | 跳过打印gtid_log_event。 |
| --short-form     | 表示只显示statements。    |
   
