Holmesian Blog

MySQL服务的 log-bin 功能

在安装 MySQL 并运行一段时间后,你可能会发现 MySQL 目录下出现一堆类似于 mysql-bin.000*** 的文件,它们从 mysql-bin.000001 开始依次排列,并且会占用大量的硬盘空间,有时甚至高达几十个 G。那么,对于这些占用大量空间的文件,我们应该如何处理呢?

首先,让我们来了解一下 mysql 数据库文件夹中的 mysql-bin.000001 这类文件是什么。

mysql-bin.000001mysql-bin.000002 等文件是数据库的操作日志。当执行一些数据库操作,如 UPDATE 一个表,或者 DELETE 某些数据时,即使该操作语句没有匹配的数据,这个命令也会被存储到日志文件中,同时,每个语句的执行时间也会被记录下来。

那么,这些形如 mysql-bin.00001 的文件有什么主要用途呢?

一、数据恢复

当你的数据库出现问题,而你之前有备份时,可以查看这些日志文件,找出是哪个命令导致数据库出现问题,进而想办法挽回损失。

二、主从服务器之间的数据同步

在主从服务器架构中,主服务器上的所有操作都会记录在这些日志中,从服务器可以依据这些日志来确保数据的同步。

如果不想保留这些文件,应该如何操作呢?

一、只有一个 MySQL 服务器的情况

如果只有一个 MySQL 服务器,可以通过简单地注释掉相关选项来实现。使用 vi /etc/my.cnf 命令打开配置文件,将其中的 log-bin 这一行注释掉,然后重启 MySQL 服务即可。

二、主从服务器环境的情况

如果你的环境是主从服务器架构,那么需要进行以下操作:

A. 在每个从属服务器上,使用 SHOW SLAVE STATUS 命令来检查它正在读取哪个日志。

B. 使用 SHOW MASTER LOGS 命令获取主服务器上的一系列日志。

C. 在所有从属服务器中判定最早的日志,这个就是目标日志。如果所有从属服务器的数据更新程度较高,那么目标日志就是清单上的最后一个日志。

D. 清理所有的日志,但要排除目标日志,因为从服务器还需要依据它来进行同步。

简单来说,MySQL 目录下这些形如 mysql-bin.000*** 的文件是 MySQL 的事务日志。

需要注意的是,删除复制服务器已经使用过的 binlog 是安全的,一般情况下,如果网络状况良好,保留最新的一个日志文件通常就足够了。不过,这样做的缺点是将无法使数据库恢复到先前的状态。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »