MySQL:binlogs保留了多长时间?

时间:2015-08-07 15:57:39

标签: mysql amazon-web-services amazon-rds amazon-rds-aurora

我有一个mysql slave,我试图复制一个主mysql实例。

我从生产主实例迁移了一周左右的数据。当时我在主人上调用SHOW MASTER STATUS并得到了一个binlog名称和位置。现在,当我运行SHOW MASTER STATUS时,我得到了:

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)

Here它说binglogs保留24小时。我尝试复制的数据库需要24小时才能进行迁移,这意味着当它准备复制时,它需要访问的复制日志已被删除...

编辑3:

找到here

  

日志文件大小

     

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

1 个答案:

答案 0 :(得分:4)

对于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小时,我需要设置一个比亚马逊提供的默认24窗口更长的窗口,显然我可以使用以下stored procedure

  

Amazon RDS通常会尽快清除二进制日志,但是   二进制日志仍必须在要访问的实例上可用   mysqlbinlog可以。指定RDS保留二进制的小时数   日志,使用mysql.rds_set_configuration存储过程并指定   有足够时间下载日志的时间段。设置完毕后   保留期,监视数据库实例的存储使用情况   确保保留的二进制日志不会占用太多存储空间。

     

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

call mysql.rds_set_configuration('binlog retention hours', 24);

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