mysql的binlog的删除方法
2010-04-09 09:45
525 查看
一,要清理日志,需按照以下步骤:
1. 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
2. 使用SHOW MASTER LOGS获得主服务器上的一系列日志。
从属服务器正在使用的日志不能删
二,删除:
查找当前有哪些二进制日志文件:
mysql> show binary logs;
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| mysqld-bin.000004 | 142 |
| mysqld-bin.000005 | 142 |
| mysqld-bin.000006 | 142 |
| mysqld-bin.000007 | 142 |
| mysqld-bin.000008 | 142 |
| mysqld-bin.000009 | 142 |
| mysqld-bin.000010 | 98 |
+-------------------+-----------+
7 rows in set (0.00 sec)
删除指定的日志
例如删除mysqld-bin.000007以前的日志,注意不包括mysqld-bin.000007在内
mysql> purge binary logs to 'mysqld-bin.000007';
Query OK, 0 rows affected (0.01 sec)
mysql> show binary logs;
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| mysqld-bin.000007 | 142 |
| mysqld-bin.000008 | 142 |
| mysqld-bin.000009 | 142 |
| mysqld-bin.000010 | 98 |
+-------------------+-----------+
4 rows in set (0.00 sec)
查看被删除日志的信息(可选)
mysql> show binlog events;
+-------------------+-----+-------------+-----------+-------------+---------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+-------------------+-----+-------------+-----------+-------------+---------------------------------------+
| mysqld-bin.000007 | 4 | Format_desc | 2 | 98 | Server ver: 5.0.75-log, Binlog ver: 4 |
| mysqld-bin.000007 | 98 | Rotate | 2 | 142 | mysqld-bin.000008;pos=4 |
+-------------------+-----+-------------+-----------+-------------+---------------------------------------+
2 rows in set (0.00 sec)
还可以指定日期删除
例如删除2009年7月22日10:11:00之前的日志
mysql> purge master logs before '2009-07-22 10:11:00';
Query OK, 0 rows affected (0.00 sec)
mysql> show binary logs;
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| mysqld-bin.000009 | 142 |
| mysqld-bin.000010 | 98 |
+-------------------+-----------+
2 rows in set (0.00 sec)
也可是按天删除
例如删除3天前的 binlog
purge master logs before date_sub( now( ), interval 3 day);
before变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。
三,总结
用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。
如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。
1. 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
2. 使用SHOW MASTER LOGS获得主服务器上的一系列日志。
从属服务器正在使用的日志不能删
二,删除:
查找当前有哪些二进制日志文件:
mysql> show binary logs;
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| mysqld-bin.000004 | 142 |
| mysqld-bin.000005 | 142 |
| mysqld-bin.000006 | 142 |
| mysqld-bin.000007 | 142 |
| mysqld-bin.000008 | 142 |
| mysqld-bin.000009 | 142 |
| mysqld-bin.000010 | 98 |
+-------------------+-----------+
7 rows in set (0.00 sec)
删除指定的日志
例如删除mysqld-bin.000007以前的日志,注意不包括mysqld-bin.000007在内
mysql> purge binary logs to 'mysqld-bin.000007';
Query OK, 0 rows affected (0.01 sec)
mysql> show binary logs;
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| mysqld-bin.000007 | 142 |
| mysqld-bin.000008 | 142 |
| mysqld-bin.000009 | 142 |
| mysqld-bin.000010 | 98 |
+-------------------+-----------+
4 rows in set (0.00 sec)
查看被删除日志的信息(可选)
mysql> show binlog events;
+-------------------+-----+-------------+-----------+-------------+---------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+-------------------+-----+-------------+-----------+-------------+---------------------------------------+
| mysqld-bin.000007 | 4 | Format_desc | 2 | 98 | Server ver: 5.0.75-log, Binlog ver: 4 |
| mysqld-bin.000007 | 98 | Rotate | 2 | 142 | mysqld-bin.000008;pos=4 |
+-------------------+-----+-------------+-----------+-------------+---------------------------------------+
2 rows in set (0.00 sec)
还可以指定日期删除
例如删除2009年7月22日10:11:00之前的日志
mysql> purge master logs before '2009-07-22 10:11:00';
Query OK, 0 rows affected (0.00 sec)
mysql> show binary logs;
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| mysqld-bin.000009 | 142 |
| mysqld-bin.000010 | 98 |
+-------------------+-----------+
2 rows in set (0.00 sec)
也可是按天删除
例如删除3天前的 binlog
purge master logs before date_sub( now( ), interval 3 day);
before变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。
三,总结
用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。
如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。
相关文章推荐
- [MySQL] 设置自动清理binlog日志和手动删除的方法
- mysql删除binlog日志及日志恢复数据的方法
- mysql手动删除BINLOG的方法
- mysql删除binlog日志及日志恢复数据的方法
- mysql手动删除BINLOG的方法
- mysql5.5 物理删除binlog文件导致的故障
- MySql 几种查询相同字段中相同数据,及删除相同字段的相同数据的方法
- 删除mysql-bin日志(mysql-bin.00001)导致mysql无法启动的解决方法
- mysql删除binlog日志及日志恢复数据
- MySQL查询重复字段,及删除重复记录的方法
- mysql使用教程之分区表的使用方法(删除分区表)
- MySQL删除重复记录的方法
- MYSQL删除重复数据的简单方法
- 【mysql】sql删除多个字段重复数据有主键和没主键解决方法
- MySQL 数据库中删除重复记录的方法总结
- MySQL 自动清理binlog日志的方法
- Mysql Binlog数据查看的方法详解
- Error: Linux下 mysql.sock文件丢失被删除解决方法
- MySQL中有两种方法可以删除数据
- MySQL删除数据库的两种方法