MysqlBinlog日志清理,慎用
--查看当前正在使用的binlog文件
mysql> show master status\G;
1、mysql命令purge
--使用PURGE BINARY LOGS TO删除指定的日志文件名
mysql> purge master logs to "mysql-bin.000410";
--删除2022-05-07 21:10:00时间之前的binlog
mysql> PURGE BINARY LOGS BEFORE '2022-05-07 21:10:00';
2、手动rm清理
rm -rf mysql-bin.00040*;
vim mysql-bin.log.index
清除掉里面的mysql-bin.0004**纪录
3、参数清理
set global expire_logs_days=5;
系统自动清理
--删除所有的二进制日志文件
mysql> RESET MASTER;
从库binlog删除
创建工作目录
目的为了提高性能,这个工作目录必须跟mysql在同一个磁盘分区
mkdir -p /data/mha_tmp
purge relay logs
/usr/bin/purge_relay_logs --user=root --password=ws48250302! --host=192.168.18.12 --disable_relay_log_purge --workdir=/mnt/dbdata/mysql/data/xfy/data/ 2>&1
参数描述:
--user:mysql用户名,缺省为root
--password:mysql密码
--port:端口号
--host:主机名,缺省为127.0.0.1
--workdir:指定创建relay log的硬链接的位置,默认是/var/tmp,成功执行脚本后,硬链接的中继日志文件被删除。由于系统不同分区创建硬链接文件会失败,故需要执行硬链接具体位置,建议指定为relay log相同的分区
--disable_relay_log_purge:默认情况下,参数relay_log_purge=1,脚本不做任何处理,自动退出;设定该参数,脚本会将relay_log_purge设置为0,当清理relay log之后,最后将参数设置为OFF(0)
3.1.3 定期清理relay log
加入到crontab中
0 4 * * * /usr/bin/purge_relay_logs --user=USERNAME --password=PASSWORD --host=Mysql_IP --disable_relay_log_purge --workdir=/data/mha_tmp 2>&1
方式二:
手动删除 relay log
设置relay_log_purge = 1
SET GLOBAL relay_log_purge = 1
flush logs
通过管理员用户登陆从数据库,然后执行下面命令:
flush logs;
可以执行多次!
注意:
观察堆积的relay logs日志是否已经删除,如果删除,直接执行下面第6步“恢复relay_log_purge = 0“;如果未删除,继续从下面第3步”停止slave“往下操作!!!
停止slave
通过管理员用户登陆从数据库,然后执行下面命令:
stop slave;
删除relay logs
可以通过rm直接删除relay logs
通使用下面方式安全删除:
(1) 统计所有关于relay的文件(包括 relay_log_name.index)总个数
ls -A1 |grep relay | sort -rn | wc -l
(2) 列出要删除所有有关relay的文件:
ls -A1 |grep relay | sort -rn | tail -n 100
说明: 100 为要删除的relay logs 数量
(3) 确定没有问题,删除relay logs:
ls -A1 |grep relay | sort -rn | tail -n 100 | xargs rm -rf {}
注意:
要保留最新的两个relay log
要保留relay log的index文件
relay log的index一般命名为: relay_log_name.index
例如: relay-bin.index
5. 启动slave
通过管理员用户登陆从数据库,然后执行下面命令:
start slave;
6 . 恢复relay_log_purge = 0
通过管理员用户登陆从数据库,然后执行下面命令:
SET GLOBAL relay_log_purge=0;
评论区