当前位置:嗨网首页>书籍在线阅读

12-查看二进制日志

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

14.3.2 查看二进制日志

可以通过以下命令查询二进制日志。

Mysql>show variables like 'log_bin' +-------------------+-----------+ |Variable_name |Value | +-------------------+-----------+ |log_bin| ON | +-------------------+-----------+ 1 rows in set (0.00 sec) 从结果“ON”可以看出已经开启了二进制日志。 mysql> show binary logs; +-------------------+-----------+ |Log_name |File_size| +-------------------+-----------+ |binary_log.000001| 168| |binary_log.000002| 168| |binary_log.000003| 143| |binary_log.000004| 1024| |binary_log.000005| 168| |binary_log.000006| 120| |binary_log.000007| 143| |binary_log.000008| 143| |binary_log.000009| 120| +-------------------+-----------+ 9 rows in set (0.00 sec)

由于binlog以是binary方式存取,不能直接在Windows下查看,可以通过MySQL提供的mysqlbinlog工具查看。

也可以通过SHOW命令查看对数据库的操作事件。

mysql> show binlog events in 'binary_log.000004'\G 1.row Log_name: binary_log.000004 Pos: 4 Event_type: Format_desc Server_id: 1 End_log_pos: 120 Info: Server ver: 5.6.22-log, Binlogver: 4 2.row Log_name: binary_log.000004 Pos: 120 Event_type: Query Server_id: 1 End_log_pos: 199 Info: BEGIN 3.row Log_name: binary_log.000004 Pos: 199 Event_type: Query Server_id: 1 End_log_pos: 338 Info:use'xscj';insert into kc values('304','物联网高级应用','8','64','4') 4.row Log_name: binary_log.000004 Pos: 338 Event_type: Query Server_id: 1 End_log_pos: 418 Info: COMMIT 5.row Log_name: binary_log.000004 Pos: 418 Event_type: Query Server_id: 1 End_log_pos: 497 Info: BEGIN 6.row Log_name: binary_log.000004 Pos: 497 Event_type: Query Server_id: 1 End_log_pos: 640 Info: use 'xscj'; update kc set 课程号='309' where 课程名='物联网高级应用' 7.row Log_name: binary_log.000004 Pos: 640 Event_type: Query Server_id: 1 End_log_pos: 720 Info: COMMIT 8.row Log_name: binary_log.000004 Pos: 720 Event_type: Query Server_id: 1 End_log_pos: 799 Info: BEGIN 9.row Log_name: binary_log.000004 Pos: 799 Event_type: Query Server_id: 1 End_log_pos: 921 Info: use 'xscj'; delete from kc where 课程名='数据库原理' 10.row Log_name: binary_log.000004 Pos: 921 Event_type: Query Server_id: 1 End_log_pos: 1001 Info: COMMIT 11.row Log_name: binary_log.000004 Pos: 1001 Event_type: Stop Server_id: 1 End_log_pos: 1024 Info: 11 rows in set (0.00 sec)

通过二进制日志文件的内容可以看出对数据库操作记录,对于管理员对数据库进行管理或数据恢复提供了依据。

通过mysqlbinlog工具查看二进制日志的所有内容。

C:>mysqlbinlog --no-defaults e:\mysql-5.6.22-winx64\data\binary_log.000013 /!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1/; /!40019 SET @@session.max_insert_delayed_threads=0/; /!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0/; DELIMITER /!/;

at 4

#150314 14:39:42 server id 1 end_log_pos 120 CRC32 0xd4463b7a Start:binlog v
4, server v 5.6.22-log created 150314 14:39:42
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
rtcDVQ8BAAAAdAAAAHgAAAABAAQANS42LjIyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKG RkAAXo7
RtQ=
'/*!*/;
# at 120
#150314 14:47:46 server id 1 end_log_pos 199 CRC32 0x5eb36fb3 Query thread_i
d=11  exec_time=0  error_code=0
SET TIMESTAMP=1426315666/*!*/;
SET @@session.pseudo_thread_id=11/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.uniq
ue_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@sessio
n.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 199
#150314 14:47:46 server id 1 end_log_pos 332 CRC32 0xa15ded0d Query thread_i
d=11  exec_time=0  error_code=0
use `xscj`/*!*/;
SET TIMESTAMP=1426315666/*!*/;
insert into kc value("310","Computer English","7","64","4")
/*!*/;
# at 332
#150314 14:47:46 server id 1 end_log_pos 412 CRC32 0xdf2795ef Query thread_i
d=11  exec_time=0  error_code=0
SET TIMESTAMP=1426315666/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

在二进制日志文件中,对数据库的DML操作和DDL都记录到了binlog中了,而SELECT并没有记录。如果用户想记录SELECT和SHOW操作,就只能使用查询日志,而不是二进制日志。此外,二进制日志还包括了执行数据库更改操作的时间等其他额外信息。

总之,开启二进制日志可以实现以下几个功能。

⑴恢复(Recovery):某些数据的恢复需要二进制日志,例如,在一个数据库全备文件恢复后,用户可以通过二进制日志进行point-in-time的恢复。

⑵复制(Replication):其原理与恢复类似,通过复制和执行二进制日志使一台远程的MySQL数据库(一般称为Slave或Standby)与一台MySQL数据库(一般称为Master或Primary)进行实时同步。

⑶审计(Audit):用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击。