Amazon RDS mysqbinlog "Could not find first log file name in binary log index file"



序言:

我们在 AWS 使用 RDS 来管理我们的 MySQL 数据库。我知道 RDS 会创建用于复制的二进制日志。我想收集这些二进制日志并将其存储在 S3 上,以便我可以随时还原到异地数据库并重播操作。

问题:

我构建了一个新的 RDS 实例,并尝试了以下操作。

root@aws_test_server:/root# mysqlbinlog -h testing.xxxxxxxx.eu-west-1.rds.amazonaws.com -u myuser -p --read-from-remote-server -t mysql-bin-changelog.000002
Enter password:
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ERROR: Got error reading packet from server: Could not find first log file name in binary log index file
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
root@aws_test_server:/root#
因此,二进制日志

检索正常,但是请参阅二进制日志中的错误。这是什么意思?

我用谷歌搜索了大约 2 天,在任何地方都找不到提到此错误。

我的问题:

  1. 这是个好主意吗?(将二进制日志备份到 S3。
  2. 能以更好的方式完成吗?(~无限时间点数据库恢复)
  3. 对于错误,我该怎么办?

PS:生产数据库和这个测试数据库正在发生这种情况

PS2:我注意到这不是一个直接的编程问题,而是与之相关的。请不要从SO移动/关闭到类似服务器故障的地方。谢谢

今天遇到了同样的问题。Amazon RDS 通常会尽快清除二进制日志,要增加二进制日志保留时间,您应该运行查询

呼叫mysql.rds_set_configuration("二进制日志保留时间",24);

我遇到了完全相同的错误,但无法搜索或尝试其他建议的修复程序。我必须让 AWS 技术人员帮忙。解决方案是将参数"binlog_checksum"设置为"无"。它默认为 CRC32。

来自技术人员:

binlog_checksum用于通过设置binlog_checksum系统变量。从二进制文件读回时log,源默认使用事件长度,但可以做到通过启用校验和master_verify_checksum使用校验和(如果可用)系统变量。复制副本上的复制 I/O 线程也验证从源接收的事件。您可以导致复制 SQL 线程,以便在读取时使用校验和(如果可用)通过启用slave_sql_verify_checksum系统进行中继日志变量。

要设置参数,请转到您的 RDS 实例。导航到"配置"并查找它所属的参数组。转到参数组并搜索"binlog_checksum"。

最新更新