mysql删除查看二进制日志

来源于: http://www.livingelsewhere.net/2011/03/25/purge-view-binlog/

删除

PURGE {MASTER | BINARY} LOGS TO 'binlog-name';
删除 binlog-name 编号之前所有的日志.

PURGE {MASTER | BINARY} LOGS BEFORE 'date';
除当前使用日志外, 如果其他日志最后更新时间是小于 date, 则会被删除. 


例子

mysql> PURGE MASTER LOGS TO 'mysql-bin.000003';
Query OK, 0 rows affected (0.01 sec)

删除 000003 之前所有的日志(000003 不会被删除).
	
mysql> PURGE MASTER LOGS BEFORE '2011-03-25 23:59:59';
Query OK, 0 rows affected (0.05 sec)


expire_logs_days
MySQL 可以根據 expire_logs_days 的設置自動清除日誌。該值默認為 0, 即不會自動清除。可能的值為 0-99.
配置文件中設置
[mysqld]
expire_logs_days=1

命令端設置
mysql> SET GLOBAL expire_logs_days=1;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SHOW VARIABLES LIKE 'expire%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 1     |
+------------------+-------+
1 row in set (0.00 sec)


The number of days for automatic binary log file removal. The default is 0, which means “no automatic removal.” Possible removals happen at startup and when the binary log is flushed. Log flushing occurs as indicated in

清空二进制日志
mysql> RESET MASTER

该命令会删除之前所有的 binlog, 并重新生成新的 binlog, 后缀又会从 000001 开始. 但如果该库为主库, 且有连接从库, 而从库正在读取试图删除的日志之一,
则本语句不会起作用, 而是会失败, 并伴随一个错误. 不过, 如果从库没有连接主库, 而又删除了从库读取的日志, 则从库启动后不能复制. 当从库正在复制时, 本语句可以安全运行, 不需要停止它们.

查看当前二进制日志
	
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000009 |      180 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.01 sec)


更新二进制
mysql> FLUSH LOGS;


查看二进制日志数目
mysql> SHOW MASTER LOGS;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       117 |
| mysql-bin.000002 |       117 |
| mysql-bin.000003 |      1181 |
| mysql-bin.000004 |    491718 |
| mysql-bin.000005 |   2543824 |
| mysql-bin.000006 |   8032840 |
+------------------+-----------+
16 rows in set (0.01 sec)

列出所有的日志及其大小



查看 events
mysql> SHOW BINLOG EVENTS;



MySQL 命令终端查看当前日志中记录的日志
mysqlbinlog
[root@localhost ~]# mysqlbinlog  /usr/local/mysql/var/mysql-bin.000001


查看二进制文件 mysql-bin.000001 中记录的 DML 和 DLL.

mysqlbinlog 有用参数

  • -d, --database=dbname 列出查看的数据库
  • --start-datetime='2011-03-25 00:00:00' 查看发生在该指定时间之后的 events.
  • --stop-datetime='2011-03-25 23:59:59' 查看发生在该指定时间之前的 events.
  • --start-position=10 查看该指定偏移点之后的 events.
  • --stop-position=100 查看该指定偏移点之前的 events.
  • --set-charset=utf8 在输出的 events 之前添加上 “SET NAMES utf8″.


基于时间
[root@localhost ~]# mysqlbinlog --start-datetime='2011-03-25 00:00:0' --stop-datetime='2011-03-25 23:59:59' --database=test  /usr/local/mysql/var/mysql-bin.000001 > /tmp/1.log> /tmp/1.log 

将其重定向到 1.log, 更便于查看.


基于偏移量
	
[root@localhost ~]# mysqlbinlog --start-position=98 --stop-position=344 --database=test  /usr/local/mysql/var/mysql-bin.000001 > /tmp/1.log


猜你喜欢

转载自wen66.iteye.com/blog/1687733