MySQL:Binlog保留多长时间?

MySQL:Binlog保留多长时间?,mysql,amazon-web-services,amazon-rds,amazon-aurora,Mysql,Amazon Web Services,Amazon Rds,Amazon Aurora,我有一个mysql从机,我正试图复制一个主mysql实例 我从生产主实例迁移了大约一周的数据。当时我在主机上调用了SHOW MASTER STATUS,并获得了binlog名称和位置。现在,当我运行“显示主机状态”时,我得到: mysql> SHOW MASTER STATUS; +----------------------------+----------+--------------+------------------+-------------------+ | File

我有一个mysql从机,我正试图复制一个主mysql实例

我从生产主实例迁移了大约一周的数据。当时我在主机上调用了
SHOW MASTER STATUS
,并获得了binlog名称和位置。现在,当我运行“显示主机状态”时,我得到:

mysql> SHOW MASTER STATUS;
+----------------------------+----------+--------------+------------------+-------------------+
| File                       | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------------+----------+--------------+------------------+-------------------+
| mysql-bin-changelog.039446 |      120 |              |                  |                   |
+----------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.05 sec)
那个binlog和一周前的不一样

我是否可以不再启动复制b/c我尝试针对的binlog已旋转?是否有一个变量可以让我检查,看看在我不能再开始复制之前我“拥有”了多长时间

编辑:

我还进一步阅读了mysql文档,发现一个命令应该列出所有二进制日志:

mysql> SHOW BINARY LOGS;
+----------------------------+-----------+
| Log_name                   | File_size |
+----------------------------+-----------+
| mysql-bin-changelog.039456 |       479 |
| mysql-bin-changelog.039457 |       120 |
+----------------------------+-----------+
2 rows in set (0.07 sec)
同样,我上周写下的二进制日志没有列在那里,所以我的问题仍然存在

编辑2:

这是特定于AWS RDS的,但我发现了一个存储过程,其中列出了租用时间:

mysql> call mysql.rds_show_configuration;
+------------------------+-------+------------------------------------------------------------------------------------------------------+
| name                   | value | description                                                                                          |
+------------------------+-------+------------------------------------------------------------------------------------------------------+
| binlog retention hours | NULL  | binlog retention hours specifies the duration in hours before binary logs are automatically deleted. |
+------------------------+-------+------------------------------------------------------------------------------------------------------+
1 row in set (0.06 sec)

Query OK, 0 rows affected (0.06 sec)
它说binglogs会保留24小时。我尝试复制的数据库迁移需要24小时以上,这意味着当它准备好进行复制时,它需要访问的复制日志已被删除

编辑3:

发现:

日志文件大小

MySQL慢速查询日志、错误日志和常规日志文件大小 被限制为不超过分配的存储空间的2% 数据库实例。要保持此阈值,将自动删除日志 每小时旋转一次,并删除超过24小时的日志文件。如果 删除旧日志文件后,组合日志文件大小超过阈值 日志文件,然后删除最大的日志文件,直到日志文件 大小不再超过阈值


对于特定于AWS RDS的实例,您可以使用以下存储过程查找二进制日志的保留长度:

mysql> call mysql.rds_show_configuration;
+------------------------+-------+------------------------------------------------------------------------------------------------------+
| name                   | value | description                                                                                          |
+------------------------+-------+------------------------------------------------------------------------------------------------------+
| binlog retention hours | NULL  | binlog retention hours specifies the duration in hours before binary logs are automatically deleted. |
+------------------------+-------+------------------------------------------------------------------------------------------------------+
1 row in set (0.06 sec)

Query OK, 0 rows affected (0.06 sec)
当我试图将我们当前的MySQL RDS实例迁移到Amazon Aurora时,我必须首先迁移数据库,然后开始复制迁移窗口期间发生的任何更新。由于迁移需要24小时以上的时间,因此我需要设置一个比Amazon提供的默认24小时窗口更长的窗口,很明显,我可以使用以下方法:

AmazonRDS通常会尽快清除二进制日志,但是 二进制日志必须在要由访问的实例上仍然可用 mysqlbinlog。指定RDS保留二进制文件的小时数 日志,使用mysql.rds\u set\u配置存储过程并指定 有足够时间下载日志的时间段。在你设定之后 保留期,监视要删除的数据库实例的存储使用情况 确保保留的二进制日志不会占用太多存储空间

此示例将保留期设置为1天:


看来我需要延长主机上的保留时间并进行另一次迁移,我当前的迁移无法再正确复制。

我建议您在上回答这个问题好吗?堆栈溢出用于编程问题。
call mysql.rds_set_configuration('binlog retention hours', 24);