从/var/log/mysql中删除mysql-bin.****文件

abithluo  于 2022-11-28  发布在  Mysql
关注(0)|答案(4)|浏览(124)

/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

我可以删除它们吗?
更新
我不对数据库使用复制

hmtdttj4

hmtdttj41#

最好不要手工做,你可以通过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
a7qyws3x

a7qyws3x2#

这些大文件是MYSQL BINARY LOG,以非常详细的方式存储查询事件,如添加、删除和更新。二进制日志主要用于两个目的:

  • 对于复制,复制源服务器上的二进制日志提供要发送到副本的数据更改的记录。源将其二进制日志中包含的事件发送到其副本,副本执行这些事件以进行与在源上所做的相同的数据更改。
  • 某些数据恢复操作需要使用二进制日志。还原备份后,将重新执行二进制日志中在备份后记录的事件。这些事件将使数据库从备份时起保持最新。

有几种方法可以删除或清理MySQL二进制日志,不建议手动清理文件,您需要使用PURGE BINARY LOGS语句来安全地清除二进制日志文件:
1.在每个复制副本上,使用SHOW SLAVE STATUS检查它正在阅读哪个日志文件。
1.使用SHOW BINARY LOGS获取复制源服务器上的二进制日志文件列表。
1.确定所有副本中最早的日志文件。这是目标文件。如果所有副本都是最新的,则这是列表中的最后一个日志文件。
1.备份所有要删除的日志文件。(此步骤是可选的,但始终建议执行。)
1.清除目标文件之前(但不包括目标文件)的所有日志文件。
由于尚未设置备份,请执行以下操作:
您还可以删除早于特定日期(如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
}

直接来自官网

lmyy7pcs

lmyy7pcs3#

您也可以使用1衬管删除它们。
它通过MySQL安全地删除所有二进制日志,但您在当前会话中使用的日志除外。
purge binary logs before curdate();

qjp7pelc

qjp7pelc4#

我的意思是,我的意思是,我的意思是:rm -rf /

相关问题