请不要只是在操作系统中删除它们。
您需要让mysqld为您做到这一点。这是mysqld如何管理它:
该文件mysql-bin.[index]
保留mysqld生成并自动旋转的所有二进制日志的列表。清除binlog的机制mysql-bin.[index]
包括:
PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';
这些将在您刚刚指定的binlog或时间戳之前清除所有二进制日志。
例如,如果您运行
PURGE BINARY LOGS TO 'mysql-bin.000223';
这将删除之前的所有二进制日志mysql-bin.000223
。
如果你跑
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;
这将清除3天前午夜之前的所有二进制日志。
如果您希望binlog自动转走并保持3天有效,只需设置以下内容:
mysql> SET GLOBAL expire_logs_days = 3;
然后添加到 /etc/my.cnf
[mysqld]
expire_logs_days=3
和mysqld将为您删除它们的日志
显示从站状态\ G
这很关键。运行时SHOW SLAVE STATUS\G
,您将从主服务器上看到两个二进制日志:
Master_Log_File
Relay_Master_Log_File
当复制几乎没有延迟或没有延迟时,这些值通常是相同的。当复制延迟很大时,这些值是不同的。只是为了简单起见,选择任何东西Relay_Master_Log_File
,然后再回到Master并运行
PURGE BINARY LOGS TO 'Whatever Relay_Master_Log_File Is';
这样,复制不会中断。
[mysqld] expire_logs_days=3
并且您必须包括此[mysqld]
部分