从 /var/log/mysql 中删除 mysql-bin.**** 文件
Delete mysql-bin.**** files from /var/log/mysql
在/var/log/mysql
我发现有很多大文件
-rw-rw---- 1 mysql adm 104875724 Nov 16 2016 mysql-bin.002982
-rw-rw---- 1 mysql adm 104900467 Nov 16 2016 mysql-bin.002983
...............
-rw-rw---- 1 mysql adm 104919093 Nov 23 2016 mysql-bin.003118
-rw-rw---- 1 mysql adm 104857817 Nov 23 2016 mysql-bin.003119
-rw-rw---- 1 mysql adm 104858056 Nov 23 2016 mysql-bin.003120
-rw-rw---- 1 mysql adm 9184221 Nov 23 2016 mysql-bin.003121
-rw-rw---- 1 mysql adm 104907549 Nov 23 2016 mysql-bin.003122
......
-rw-rw---- 1 mysql adm 6272 Nov 25 2016 mysql-bin.index
我可以删除它们吗?
Update
我没有为数据库使用复制
最好不要手动,可以通过mysql.
PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';`
例如删除一周前的所有内容运行:
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;
或(甚至更好)编辑 my.cnf
并设置此参数
[mysqld]
expire_logs_days=7
您也可以使用 1 衬垫删除它们。
它会通过 MySQL 安全地删除所有二进制日志,但您在当前会话中使用的除外。
purge binary logs before curdate();
这些大文件是MYSQL BINARY LOG,非常详细地存储了查询事件,如添加、删除和更新。二进制日志用于两个主要目的:
- 对于复制,复制源服务器上的二进制日志提供了要发送到副本的数据更改记录。源将其二进制日志中包含的事件发送到其副本,副本执行这些事件以进行与在源上所做的相同的数据更改。
- 某些数据恢复操作需要使用二进制日志。备份恢复后,备份后二进制日志中记录的事件为re-executed。这些事件使数据库从备份点开始更新。
有几种方法可以删除或清理 MySQL 二进制日志,不建议手动清理文件,您需要使用 PURGE BINARY LOGS 语句来安全地清除二进制日志文件:
- 在每个副本上,使用
SHOW SLAVE STATUS
检查它正在读取哪个日志文件。
- 使用
SHOW BINARY LOGS
获取复制源服务器上的二进制日志文件列表。
- 确定所有副本中最早的日志文件。这是目标文件。如果所有副本都是最新的,则这是列表中的最后一个日志文件。
- 备份您要删除的所有日志文件。 (此步骤是可选的,但始终是可取的。)
- 清除所有日志文件,但不包括目标文件。
由于您尚未设置备份,请执行以下操作:
您还可以删除早于特定日期的二进制文件,例如 2019-04-02 22:46:26、
PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2019-04-02 22:46:26';
PURGE BINARY LOGS 语句结构:
PURGE { BINARY | MASTER } LOGS {
TO 'log_name'
| BEFORE datetime_expr
}
直接来自官网
在/var/log/mysql
我发现有很多大文件
-rw-rw---- 1 mysql adm 104875724 Nov 16 2016 mysql-bin.002982
-rw-rw---- 1 mysql adm 104900467 Nov 16 2016 mysql-bin.002983
...............
-rw-rw---- 1 mysql adm 104919093 Nov 23 2016 mysql-bin.003118
-rw-rw---- 1 mysql adm 104857817 Nov 23 2016 mysql-bin.003119
-rw-rw---- 1 mysql adm 104858056 Nov 23 2016 mysql-bin.003120
-rw-rw---- 1 mysql adm 9184221 Nov 23 2016 mysql-bin.003121
-rw-rw---- 1 mysql adm 104907549 Nov 23 2016 mysql-bin.003122
......
-rw-rw---- 1 mysql adm 6272 Nov 25 2016 mysql-bin.index
我可以删除它们吗?
Update
我没有为数据库使用复制
最好不要手动,可以通过mysql.
PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';`
例如删除一周前的所有内容运行:
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;
或(甚至更好)编辑 my.cnf
并设置此参数
[mysqld]
expire_logs_days=7
您也可以使用 1 衬垫删除它们。
它会通过 MySQL 安全地删除所有二进制日志,但您在当前会话中使用的除外。
purge binary logs before curdate();
这些大文件是MYSQL BINARY LOG,非常详细地存储了查询事件,如添加、删除和更新。二进制日志用于两个主要目的:
- 对于复制,复制源服务器上的二进制日志提供了要发送到副本的数据更改记录。源将其二进制日志中包含的事件发送到其副本,副本执行这些事件以进行与在源上所做的相同的数据更改。
- 某些数据恢复操作需要使用二进制日志。备份恢复后,备份后二进制日志中记录的事件为re-executed。这些事件使数据库从备份点开始更新。
有几种方法可以删除或清理 MySQL 二进制日志,不建议手动清理文件,您需要使用 PURGE BINARY LOGS 语句来安全地清除二进制日志文件:
- 在每个副本上,使用
SHOW SLAVE STATUS
检查它正在读取哪个日志文件。 - 使用
SHOW BINARY LOGS
获取复制源服务器上的二进制日志文件列表。 - 确定所有副本中最早的日志文件。这是目标文件。如果所有副本都是最新的,则这是列表中的最后一个日志文件。
- 备份您要删除的所有日志文件。 (此步骤是可选的,但始终是可取的。)
- 清除所有日志文件,但不包括目标文件。
由于您尚未设置备份,请执行以下操作:
您还可以删除早于特定日期的二进制文件,例如 2019-04-02 22:46:26、
PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2019-04-02 22:46:26';
PURGE BINARY LOGS 语句结构:
PURGE { BINARY | MASTER } LOGS {
TO 'log_name'
| BEFORE datetime_expr
}
直接来自官网