MySQL 使用 mysqlbinlog拉取RDS binlog日志

对于云 RDS 可使用 mysqlbinlog 实用程序从运行 MySQL 5.6 或更高版本的 RDS 实例下载或流式传输二进制日志。二进制日志下载到本地计算机,可以执行一些操作,例如使用 mysql 实用程序执行重放日志。

要针对云RDS实例使用 mysqlbinlog 工具,请使用下列选项:

  • 指定 --read-from-remote-server 选项。
  • --host:指定该实例所在的终端节点中的 DNS 名称。
  • --port:指定该实例使用的端口。
  • --user:指定已授予了复制从属实例权限的 MySQL 用户。
  • --password:指定用户的密码,或忽略密码值以让实用程序提示您输入密码。
  • 要按二进制格式下载文件,请指定 --raw 选项。
  • --result-file:指定用于接收原始输出的本地文件。
  • --raw 输出原始binlog数据而不是SQL语句,输出为日志文件。
  • 指定一个或多个二进制日志文件的名称。要获取可用日志的列表,请使用 SQL 命令 SHOW BINARY LOGS。
  • 要流式传输二进制日志文件,请指定 --stop-never 选项。

有关 mysqlbinlog 选项的更多信息,请转到 mysqlbinlog - 处理二进制日志文件的实用程序

下载binlog日志

1
2
3
4
5
6
7
8
9
# mysqlbinlog \
--read-from-remote-server \
--host=master.mysql.3307.basic.prod.cvxcloud.com \
--port=3307 \
--user root \
--password \
--raw \
--result-file=/tmp/ \
mysql-bin-changelog.112916

解析binlog

如果使用的--raw参数,则需要解析binlog

1
# mysqlbinlog --no-defaults --base64-output='decode-rows' -v /tmp/mysql-bin-changelog.112916

binlog轮转时间

Amazon RDS 通常会尽快清除二进制日志,但二进制日志必须仍在实例上提供,供 mysqlbinlog 访问。若要指定 RDS 保留二进制日志的小时数,请使用 mysql.rds_set_configuration 存储过程并指定一个包含的时间足以让您下载这些日志的时间段。设置保留期后,监视数据库实例的存储用量以确认保留的二进制日志不会占用太多存储空间。

通过以下命令查看现在的轮转周期

1
mysql> call mysql.rds_show_configuration;

修改binlog的轮转周期为1天

1
mysql> call mysql.rds_set_configuration('binlog retention hours', 24);

注:mysql.rds_set_configuration 存储过程只能用于 MySQL 5.6 或更高版本。

AWS RDS(MySQL) 的日志默认保存周期

MySQL 有错误日志、慢查询日志、常规日志、审计日志和Binlog。错误日志是默认打开的,慢查询日志和审计日志需要修改参数组才能打开,审计日志需要修改选项组才能打开。Binlog默认不保存。

MySQL RDS打开方法默认保存周期
审计日志修改选项组文件达到1MiB后轮换,保留9个文件
错误日志已默认打开文件每小时轮换一次,保留24小时
慢查询日志修改参数组mysql.slow_log表,每24小时轮换
常规日志修改参数组mysql.general_log表,每24小时轮换
binlog执行存储过程生成后尽快被删除,不保存
-------------本文结束感谢您的阅读-------------