通过Shell脚本选择和清除二进制日志

通过Shell脚本选择和清除二进制日志

在此输入图像描述

假设这是主二进制日志,我想将二进制日志清除到“mysqld-bin.000002”以释放磁盘中的一些空间。我想用 shell scipt 来做到这一点。

答案1

如果您不使用二进制日志处理(复制),那么您可以永久删除它们。

删除所有与 bin 日志记录相关的 /etc/mysql/my.cnf (或您的发行版的等效项)配置语句。例如,对于最近使用 MariaDB 的发行版,这看起来类似于......

首先,停止 MariaDB/MySQL...

service mysql stop

然后删除 /etc/mysql/my.cnf 节...

log_bin                 = /var/log/mysql/mariadb-bin
log_bin_index           = /var/log/mysql/mariadb-bin.index

然后删除旧的二进制日志文件...

rm -fv /var/log/mysql/mariadb-bin*

然后重新启动 MariaDB/MySQL...

service mysql start

确保在 MariaDB/MySQL 停止的情况下进行这些更改,否则最终可能会丢失数据。

答案2

清除 手动清除二进制日志陈述:

PURGE MASTER LOGS TO 'mysqld-bin.000002';

----------

使二进制日志文件过期自动地在给定的天数之后 - 设置过期日志天数系统变量。
将关键设置添加到特定于服务器的my.cnf文件中。在类 Unix 系统上,它通常位于/etc/my.cnf/etc/mysql/my.cnf

打开文件,找到[mysqld]部分并添加指定所需天数的设置:

[mysqld]
...
expire_logs_days=10

更改完成后重新加载数据库服务:

/etc/init.d/mysql reload

相关内容