您的位置:首页 > 数据库 > MySQL

MySQL日志——删除二进制日志

2015-11-22 22:13 471 查看
二进制日志等增长速度往往比数据库本身的速度还快,因为它会记录所有的操作过程,而数据库只会记录最终的结果。

因此需要对二进制的管理指定备份或管理计划,无用的要及时删除。

说明:mysql重启会重新一个新的二进制日志文件,即使上一个文件是空的什么都没写入!

因此为了准备实验环境,可以使用多次重启mysql服务的方式创建多个日志文件来进行练习。

删除二进制日志有三种方式:

(1) 操作系统的删除命令,例如Linux的rm 命令来删除多个无用的二进制日志文件。这种方式不建议使用,因为要先停止mysql服务才能删除,否则会引起数据不一致的情况,因为二进制日志和数据文件的写入是在一个事务中的,如果数据库文件写入成功而二进制日志没有写入成功,mysql可能会撤销这个事务的影响,也就是事务会失败。并且这种方式会破环二进制日志本身的索引。

(2) RESETMASETR,需要登录mysql执行该命令,会删除过去所有的二进制日志文件和二进制日志的索引文件,并且会自动创建出一个新的二进制日志文件以及索引

(localhost-bin.000001和localhost-bin.index)

(3) PURGE,举例如下:

PURGE {MASTER|BINARY} LOGS TO ‘log_name’;

PURGE {MASTER|BINARY} LOGS TO ‘date’;

MASTER|BINARY指定的是删除MASTER日志或BINART日志,也就是如果是replicaton环境的mysql,那么会产生master日志(二进制日志的另一种形式),那么此时就是删除master日志,如果只是一个单机的mysql那么就删除普通二进制日志(BINARY),单机mysql只会产生二进制日志,而replicaton环境中作为主库的mysql产生的是MASTER日志

LOGS TO ‘log_name’就表示删除到哪一个日志文件为止,例如有0001、0002、0003三个文件,此时如果指定了LOGS TO ‘0002’,那么就会删除0002之前的所有日志文件,而不会删除0002和之后的0003。

LOGS TO ‘date’指定删除到哪个日志,该日期之前的MASTER|BINARY日志都会被删除,不包括该日期。

以上的命令或删除都可以小写的,因为mysql对命令和语句的大小写没有要求。

补充:以及登录到mysql后,如果mysql服务重启,那么这个连接就失效了,但是此时不会被推出mysql,如果服务以及启动,再次在这个连接上请求mysql的时候会自动重新连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: