MySQL:Binlog保留多长时间?
我有一个mysql从机,我正试图复制一个主mysql实例 我从生产主实例迁移了大约一周的数据。当时我在主机上调用了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
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);