RDS的Binlog日志时间戳有时区差导致DTS数据同步失败
更新时间:
问题描述
在进行DTS数据同步时报错,下载云数据库RDS MySQL版的Binlog后,用mysqlbinlog工具查看导致报错的日志并进行解析,发现Binlog的时间戳不对,与预期的时间相差几个小时。
问题原因
MySQL的Binlog里的时间戳是以unix time格式记录的,不包含时区信息,因此解析时依赖mysqlbinlog命令运行环境的时区设置,如果运行mysqlbinlog命令的机器与MySQL服务器的时区不一致,就会造成解析出来的Binlog时间戳有时区差。
解决方案
检查mysqlbinlog命令的运行环境的时区,设置mysqlbinlog命令的运行环境的时区,与MySQL服务器的时区保持一致。具体操作如下:
- 首先获取Binlog日志并解析Binlog日志,具体操作步骤请参见云数据库RDS MySQL版远程获取Binlog日志并解析Binlog日志。
- 先通过以下命令查看Binlog,发现其时间戳有时区差。
./bin/mysqlbinlog --base64-output=decode-rows -v data/binlog.000001 | head -10
系统显示如下图。 - 执行以下命令修改运行环境的时区,将时区设置为
"EST+5"
。export TZ="EST+5"
- 执行以下命令查看Binlog,检查时间戳是否一致。
./bin/mysqlbinlog --base64-output=decode-rows -v data/binlog.000001 | head -10
适用于
- 云数据库RDS MySQL版
- 云数据库PolarDB MySQL版
文档内容是否对您有帮助?