2

前言:

我们在 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 移动/关闭到 serverfault 之类的地方。谢谢

4

2 回答 2

3

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

调用 mysql.rds_set_configuration('binlog 保留时间', 24);

于 2015-04-30T13:04:58.020 回答
1

我遇到了完全相同的错误,但无法从搜索或尝试其他建议的修复程序中得到任何结果。我不得不让 AWS 技术人员帮忙。解决方案是将参数“binlog_checksum”设置为 NONE。它默认为 CRC32。

来自技术人员:

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

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

于 2020-11-08T00:22:04.207 回答