[转载]mysql的binlog安全删除

理论上,应该在配置文件/etc/my.cnf中加上binlog过期时间的配置项,expire_logs_days = 10

但是如果没有加这一项,随着产生越来越多的binlog,磁盘被吃掉了不少。可以直接删除binlog文件,但是可以通过mysql提供的工具来删除更安全。因为purge会更新mysql-bin.index中的条目,而直接删除的话,mysql-bin.index文件不会更新。mysql-bin.index的作用是加快查找binlog文件的速度。

先help一下吧:

mysql> help purge

Name: ‘PURGE MASTER LOGS‘

Description:

Syntax:

PURGE {MASTER | BINARY} LOGS TO ‘log_name‘

PURGE {MASTER | BINARY} LOGS BEFORE ‘date‘

Deletes all the binary logs listed in the log index prior to the

specified log or date. The logs also are removed from the list recorded

in the log index file, so that the given log becomes the first.

This statement has no effect if the --log-bin option has not been

enabled.

URL: http://dev.mysql.com/doc/refman/5.0/en/purge-master-logs.html

Examples:

PURGE MASTER LOGS TO ‘mysql-bin.010‘;

PURGE MASTER LOGS BEFORE ‘2003-04-02 22:46:26‘;

两种方法都可用。第一个是删除至某一个文件为止,第二个是删除到某个日期为止。

比如我们让它保留近3天的log,可以这样

PURGE MASTER LOGS BEFORE ‘2010-10-17 00:00:00‘;

看下执行前后的文件数:

执行前:

part2# ls mysql-bin.*|wc -l

243

执行purge:

mysql> PURGE MASTER LOGS BEFORE ‘2010-10-17 00:00:00‘;

Query OK, 0 rows affected (0.02 sec)

执行后:

part2# ls mysql-bin.* | wc -l

88

可见把17号前的binlog全部删除了。

需要注意的是:最好到slave上面去看下当前同步到那个binlog文件了,用show slave status查看。否则,master上删多了的话,就造成slave缺失日志文件而导致数据不一致了。

来自为知笔记(Wiz)

时间: 2024-08-14 11:52:16

[转载]mysql的binlog安全删除的相关文章

mysql的binlog安全删除

理论上,应该在配置文件/etc/my.cnf中加上binlog过期时间的配置项,expire_logs_days = 10 但是如果没有加这一项,随着产生越来越多的binlog,磁盘被吃掉了不少.可以直接删除binlog文件,但是可以通过mysql提供的工具来删除更安全.因为purge会更新mysql-bin.index中的条目,而直接删除的话,mysql-bin.index文件不会更新.mysql-bin.index的作用是加快查找binlog文件的速度. 先help一下吧: mysql> h

mysql之 binlog维护详细解析(开启、binlog相关参数作用、mysqlbinlog解读、binlog删除)

binary log 作用:主要实现三个重要的功能:用于复制,用于恢复,用于审计.binary log 相关参数:log_bin设置此参数表示启用binlog功能,并指定路径名称log_bin_index设置此参数是指定二进制索引文件的路径与名称binlog_do_db此参数表示只记录指定数据库的二进制日志binlog_ignore_db此参数表示不记录指定的数据库的二进制日志max_binlog_cache_size此参数表示binlog使用的内存最大的尺寸binlog_cache_size此

Mysql binlog 无法删除(purge命令无法删除)

1.版本 1)操作系统 cat /etc/issueCentOS release 6.6 (Final)Kernel \r on an \m cat /proc/versionLinux version 2.6.32-504.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed Oct 15 04:27:16 UTC 2014 2)mysql数据库版本 My

mysql binlog日志删除

mysql的binlog日志介绍 Binlog是mysql以二进制形式打印的日志,它默认不加密,不压缩.binlog二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句.语句以"事件"的形式保存,它描述数据更改文件位置和格式:当用--log-bin[=file_name]选项启动时,mysqld写入包含所有更新数据的SQL命令的日志文件.如果未给出file_name值, 默认名为-bin后面所跟的主机名.如果给 出了文件名,但没有包含

MySQL中多表删除方法(转载)

如果您是才接触MySQL数据库的新人,那么MySQL中多表删除是您一定需要掌握的,下面就将为详细介绍MySQL中多表删除的方法,供您参考,希望对你学习掌握MySQL中多表删除能有所帮助. 1.从MySQL数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id 2.从MySQL数据表t1里在数据表t2里没有匹配的记录查找出来并

转载:mysql添加用户、删除用户、授权、修改密码

mysql添加用户.删除用户.授权.修改密码等 MySql中添加用户,新建数据库,用户授权,删除用户,修改密码1.新建用户. //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub ject) values("localhost","pppadmin&q

MySQL的binlog数据如何查看

原创地址: http://blog.chinaunix.net/uid-16844903-id-3896711.html binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 基于语句,无法保证所有语句都在从库执行成功,比如update ... limit 1; 基于行,将每一次改动记为binlog中的一行.在执行一个特别复杂的update或者dele

mysql通过binlog来恢复数据

mysql通过binlog来恢复数据  一.什么是binlog 1.binlog基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中: 二进制日志的信息: 文件位置:默认存放位置为数据库文件所在目录下 文件的命名方式: 名称为hostname-bin.xxxxx (重启mysql一次将会自动生成一个新的binlog) 2.配置binlog,在配置文件my.cnf中设置,并重启mysql 3.状态的查看:mysql> show variab

【转】【MySQL】mysql 通过bin-log恢复数据方法详解

mysql中bin-log在mysql默认状态下是没有打开的,我们要先打开mysql 开启bin-log功能,然后再通过备份的bin-log进行数据库恢复了. 具体的操作是通过mysqlbinlog这个指令来完成的 /mysql/bin/mysqlbinlog --database=fox --start-date="2013-01-22 5:00:00" --stop-date="2013-01-22 9:00:00" /mysql/data/mysql-bin.