35

详解:Mysql binlog 安全删除实例

 5 years ago
source link: https://www.linuxprobe.com/mysql-binlog-delete.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如果你的 Mysql 搭建了主从同步 , 或者数据库开启了 log-bin 日志 , 那么随着时间的推移 , 你的数据库 data 目录下会产生大量的日志文件

shell > ll /usr/local/mysql/data/ # 如下 
-rw-rw----. 1 mysql mysql 63278 9月 11 02:03 mysql-bin.000001 
-rw-rw----. 1 mysql mysql 1096670 9月 11 02:03 mysql-bin.000002 
-rw-rw----. 1 mysql mysql 133 9月 11 02:04 mysql-bin.000003 
-rw-rw----. 1 mysql mysql 133 9月 12 02:00 mysql-bin.000004 
-rw-rw----. 1 mysql mysql 271 9月 12 18:25 mysql-bin.000005 
-rw-rw----. 1 mysql mysql 133 9月 12 18:55 mysql-bin.000006 
-rw-rw----. 1 mysql mysql 133 9月 12 19:48 mysql-bin.000007 
-rw-rw----. 1 mysql mysql 133 9月 12 21:21 mysql-bin.000008 
-rw-rw----. 1 mysql mysql 321 11月 18 17:30 mysql-bin.000009 

由于我的是测试环境 , 所以文件还很小 , 生产环境中这些文件如果不做处理的话 , 甚至会撑爆你的磁盘

下面来介绍几种解决方法:

~~> 如果你的数据库没有搭建主从同步这样的服务 , binlog 日志也不用的情况下 , 你可以将 /etc/my.cnf 文件下面行删除或注释掉

log-bin=mysql-bin
~~> 如果你需要这样的文件 , 那么建议你在主配置文件 /etc/my.cnf 中添加如下行 , 来限制 binlog 日志文件存在时间 , 过期自动删除

expire_logs_days = 7 # 只保留 7 天的日志文件
~~> 如果你直接得到一台服务器 , 上面的 binlog 日志已经影响到了磁盘空间 , 那么你将使用下面命令清除

mysql> reset master; # 清空所有 binlog 文件

如果你的得到的服务器 , mysql 还做了主从同步 , 那么上面的命令就不适合你了 , 因为 binlog 文件删除过多的话 , 会导致数据不同步

mysql> show slave status\G # 你首先要来 slave 上查看从库读 binlog 到了哪里 
Master_Log_File: mysql-bin.000009 # 我们可以看到是 mysql-bin.000009

mysql> purge master logs to 'mysql-bin.000009'; # 我们可以在 master 中执行这条指令 , 将 binlog 文件删除至 mysql-bin.000009 前

mysql> purge master logs before '2014-11-18 00:00:00'; # 将 binlog 文件删除至此日期前

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK