MySQL各种日志介绍(二)

2015-07-16 12:09:47 · 作者: · 浏览: 5
Y | MASTER} LOGS ; #显示当前mysql有哪些二进制日志文件
mysql> SHOW MASTER STATUS; #显示当前服务器所使用的二进制日志文件及所处的位置
+------------------+----------+--------------+------------------+
| File? ? ? ? ? ? | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000021 |? ? ? 311 |? ? ? ? ? ? ? |? ? ? ? ? ? ? ? ? |
+------------------+----------+--------------+------------------+
mysql> SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];? #读取二进制日志的事件详情
mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000021';
+------------------+-----+-------------+-----------+-------------+---------------------------------------------------------+
| Log_name? ? ? ? | Pos | Event_type? | Server_id | End_log_pos | Info? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+------------------+-----+-------------+-----------+-------------+---------------------------------------------------------+
| mysql-bin.000021 |? 4 | Format_desc |? ? ? ? 1 |? ? ? ? 107 | Server ver: 5.5.36-log, Binlog ver: 4? ? ? ? ? ? ? ? ? |
| mysql-bin.000021 | 107 | Query? ? ? |? ? ? ? 1 |? ? ? ? 213 | use `mydb2`; DROP TABLE `tb2` /* generated by server */ |
| mysql-bin.000021 | 213 | Query? ? ? |? ? ? ? 1 |? ? ? ? 311 | use `mydb2`; CREATE TABLE tb2 SELECT * FROM tb1? ? ? ? |
+------------------+-----+-------------+-----------+-------------+---------------------------------------------------------
mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000021' FROM 213; #指定位置
+------------------+-----+------------+-----------+-------------+-------------------------------------------------+
| Log_name? ? ? ? | Pos | Event_type | Server_id | End_log_pos | Info? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+------------------+-----+------------+-----------+-------------+-------------------------------------------------+
| mysql-bin.000021 | 213 | Query? ? ? |? ? ? ? 1 |? ? ? ? 311 | use `mydb2`; CREATE TABLE tb2 SELECT * FROM tb1 |
+------------------+-----+------------+-----------+-------------+-------------------------------------------------+


在shell下也有相关的工具读取二进制日志文件,比在交互式环境读取的信息更可读:


1 [root@mariadb ~]# mysqlbinlog /mydata/data/mysql-bin.000021


借助二进制日志文件和mysqlbinlog命令可实现数据的恢复操作,此命令常用的4个选项:


--start-datetime=#
表示二进制日志文件中一个事件的开始时间
--stop-datetime=#
表示二进制日志文件中一个事件的结束时间


--start-position=#
表示二进制日志文件中一个事件的开始位置


--stop-position=#
表示二进制日志文件中一个事件的结束位置



二进制日志文件安全的的删除方法(删除前请备份):
语法: PURGE { BINARY | MASTER } LOGS? { TO 'log_name' | BEFORE datetime_expr }
mysql> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name? ? ? ? | File_size |
+------------------+-----------+
| mysql-bin.000001 |? ? 27702 |
| mysql-bin.000002 |? 1063490 |
| mysql-bin.000003 |? ? ? 733 |
| mysql-bin.000004 |? ? ? 150 |
| mysql-bin.000005 |? ? ? 126 |
| mysql-bin.000006 |? ? ? 126 |
| mysql-bin.000007 |? ? ? 126 |
| mysql-bin.000008 |? ? ? 126 |
| mysql-bin.000009 |? ? ? 126 |
| mysql-bin.000010 |? ? ? 126 |
| mysql-bin.000011 |? ? ? 381 |
| mysql-bin.000012 |? ? ? 126 |
| mysql-bin.000013 |? ? ? 1625 |
+------------------+-----------+
mysql> PURGE BINARY LOGS TO 'mysql-bin.000010';? #把此二进制日志文件之前的都删除
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name? ? ? ? | File_size |
+------------------+-----------+
| mysql-bin.000010 |? ? ? 126 |
| mysql-bin.000011 |? ? ? 381 |
| mysql-bin.000012 |? ? ? 126 |
| mysql-bin.000013 |? ? ? 1625 |


二进制日志相关变量:
log_bin={YES|NO}
是否启用二进制日志,如果为mysqld设定了--log-bin选项,则其值为ON,否则则为