我有一个 mysql 从属服务器,我正在尝试复制一个主 mysql 实例。
我大约一周左右从生产主实例迁移数据。当时我SHOW MASTER STATUS
在 master 上调用并获得了 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)
该二进制日志与一周前的二进制日志不同。
我可以不再开始复制 b/c 我试图定位的二进制日志被轮换了吗?在我不能再开始复制之前,我是否可以检查一个变量来查看我“拥有”多长时间?
编辑:
还通过 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)
在这里,它说 binglog 将保留 24 小时。我尝试复制的数据库需要超过 24 小时才能迁移,这意味着当它准备好复制时,它需要访问的复制日志已经被删除......
编辑3:
在这里找到:
日志文件大小
MySQL 慢查询日志、错误日志和常规日志文件大小限制为不超过为数据库实例分配的存储空间的 2%。为保持此阈值,日志每小时自动轮换一次,并删除超过 24 小时的日志文件。如果删除旧日志文件后合并的日志文件大小超过阈值,则删除最大的日志文件,直到日志文件大小不再超过阈值。