MySQLバイナリログ(binlog)分析を使用(2)-mysqlbinlogコマンドを使用してログ情報を表示します

MySQLバイナリログ(binlog)分析を使用(2)-mysqlbinlogコマンドを使用してログ情報を表示します

デフォルトでは、binlogログはバイナリファイルであり、直接表示することはできません。mysqlbinlogコマンドの機能は、Mysql binlogログをMysqlステートメントに変換することです。mysqlbinlogコマンドのフォーマットは次のとおりです。

1.基本機能

mysqlbinlog 日志文件名;

説明:ログファイル情報を画面に直接表示します。

コマンドの実行結果は次のとおりです。

[root@localhost wgx]# mysqlbinlog /var/lib/mysql/mysql-bin.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#200703 11:57:47 server id 2  end_log_pos 123 CRC32 0x4f25334b 	Start: binlog v 4, server v 5.7.27-log created 200703 11:57:47 at startup
ROLLBACK/*!*/;
BINLOG '
u6z+Xg8CAAAAdwAAAHsAAAAAAAQANS43LjI3LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAC7rP5eEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AUszJU8=
'/*!*/;

.......

# at 692
#200703 12:05:38 server id 2  end_log_pos 692 CRC32 0x4b642e50 	Intvar
SET INSERT_ID=1/*!*/;
#200703 12:05:38 server id 2  end_log_pos 801 CRC32 0x8929f76f 	Query	thread_id=2	exec_time=0	error_code=0
SET TIMESTAMP=1593749138/*!*/;
insert into t2(name) values('Jack')
/*!*/;
# at 801
#200703 12:05:38 server id 2  end_log_pos 832 CRC32 0x6e8cf9f7 	Xid = 12
COMMIT/*!*/;
# at 832
#200703 12:06:15 server id 2  end_log_pos 879 CRC32 0x3497fb32 	Rotate to mysql-bin.000002  pos: 4
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

2.ログファイル情報をテキストファイルにエクスポートする

[-r]パラメータまたはリダイレクト記号(>)を使用します。形式は次のとおりです。

mysqlbinlog -r 日志文件名 文本文件名;
mysqlbinlog 日志文件名 > 文本文件名;

例えば:

[root@localhost wgx]# mysqlbinlog /var/lib/mysql/mysql-bin.000001 > /tmp/log_bak001.sql
[root@localhost wgx]# mysqlbinlog -r /var/lib/mysql/mysql-bin.000001 /tmp/log_bak002.sql
[root@localhost wgx]# ls /tmp/
log_bak001.sql  log_bak002.sql

3.データベースからbinlogをエクスポートする

[-d]パラメータを使用して、特定のデータベース操作のログ情報をエクスポートします。形式は次のとおりです。

mysqlbinlog -d 数据库名称 日志文件名 > 文本文件名;

たとえば、[hist]データベースに関連する操作ログ情報をエクスポートします。

[root@localhost wgx]# mysqlbinlog -d hist /var/lib/mysql/mysql-bin.000001 > /tmp/log_bak004.sql
[root@localhost wgx]# 

4.指定した場所にログ情報を出力する

[–start-position]パラメータと[–stop-position]パラメータを使用して、[– start-position]と[–stop-position]の間のログ情報を出力します。
[-stop-position]オプションを
省略した場合、[-start-position]から最後までのログ情報を出力し、[-start-position]オプションを省略した場合先頭から[-stop-position] までのログ情報を出力します。情報;

例:
(1)1315から1451までのログ情報を出力します。

[root@localhost wgx]# mysqlbinlog --start-position=1315 --stop-position=1451 /var/lib/mysql/mysql-bin.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#200703 22:27:21 server id 2  end_log_pos 123 CRC32 0x41949ba4 	Start: binlog v 4, server v 5.7.27-log created 200703 22:27:21 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
SUD/Xg8CAAAAdwAAAHsAAAABAAQANS43LjI3LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABJQP9eEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AaSblEE=
'/*!*/;
# at 1315
#200703 22:36:34 server id 2  end_log_pos 1451 CRC32 0x8fb104a1 	Query	thread_id=4	exec_time=0	error_code=0
use `wgx`/*!*/;
SET TIMESTAMP=1593786994/*!*/;
SET @@session.pseudo_thread_id=4/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table t1(id int primary key auto_increment,name char(20))
/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

(2)ファイルの先頭から154までログ情報を出力する

[root@localhost wgx]# mysqlbinlog --stop-position=154 /var/lib/mysql/mysql-bin.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#200703 22:27:21 server id 2  end_log_pos 123 CRC32 0x41949ba4 	Start: binlog v 4, server v 5.7.27-log created 200703 22:27:21 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
SUD/Xg8CAAAAdwAAAHsAAAABAAQANS43LjI3LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABJQP9eEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AaSblEE=
'/*!*/;
# at 123
#200703 22:27:21 server id 2  end_log_pos 154 CRC32 0xa490108e 	Previous-GTIDs
# [empty]
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

(3)1741年からファイルの最後までのログ情報を出力します

[root@localhost wgx]# mysqlbinlog --start-position=1741 /var/lib/mysql/mysql-bin.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#200703 22:27:21 server id 2  end_log_pos 123 CRC32 0x41949ba4 	Start: binlog v 4, server v 5.7.27-log created 200703 22:27:21 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
SUD/Xg8CAAAAdwAAAHsAAAABAAQANS43LjI3LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABJQP9eEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AaSblEE=
'/*!*/;
# at 1741
#200703 22:36:51 server id 2  end_log_pos 1772 CRC32 0x1d33aa48 	Xid = 44
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
5.指定した時間範囲内のログ情報を出力する

[-start-datetime]パラメータと[-stop-datetime]パラメータを使用して、[-start-datetime]と[-stop-datetime]の間のログ情報を出力します。
[-stop-datetime]オプションを
省略した場合、[-start-datetime]から最後までのログ情報が出力され、[-start-datetime]オプションを省略した場合最初から[-stop-datetime]までのログ情報が出力されます。情報;

例は省略されています。

6.ログ形式がROWであるbinlogを注釈付きの疑似SQLステートメントに変換する

[-v]パラメータを使用すると、ログ形式がROWのbinlogを注釈付きの疑似SQLステートメントに変換できます。

たとえば、次のように、ログファイル情報をROW形式で直接出力します。

[root@Mysql11 ~]# mysqlbinlog --start-position=509 --stop-position=845 /var/lib/mysql/mysql-bin.000001

..........

# at 509
#200703 22:24:26 server id 1  end_log_pos 581 CRC32 0xa68d8aed 	Query	thread_id=2	exec_time=0	error_code=0
SET TIMESTAMP=1593786266/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 581
#200703 22:24:26 server id 1  end_log_pos 629 CRC32 0x220d2e02 	Table_map: `hist`.`t2` mapped to number 113
# at 629
#200703 22:24:26 server id 1  end_log_pos 845 CRC32 0x4cd0e798 	Update_rows: table id 113 flags: STMT_END_F

BINLOG '
mj//XhMBAAAAMAAAAHUCAAAAAHEAAAAAAAEABGhpc3QAAnQyAAID/gL+PAICLg0i
mj//Xh8BAAAA2AAAAE0DAAAAAHEAAAAAAAEAAgAC///8AQAAAAVKb2huefxlAAAABUpvaG55/AIA
AAADVG9t/GYAAAADVG9t/AMAAAAESmFja/xnAAAABEphY2v8BAAAAAVNZXJyefxoAAAABU1lcnJ5
/AUAAAAEUm9zZfxpAAAABFJvc2X8BgAAAAR3YW5n/GoAAAAEd2FuZ/wHAAAABXpoYW5n/GsAAAAF
emhhbmf8CAAAAAJsafxsAAAAAmxp/AkAAAAEemhhb/xtAAAABHpoYW+Y59BM
'/*!*/;
ROLLBACK /* added by mysqlbinlog */ /*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

ROW形式のログファイルは、トランザクションをバイナリ形式でログに書き込みます。ROWbin形式のログ情報は、mysqlbinlogツールを使用しても理解できません。[-v]パラメータを使用して、トランザクションのバイナリ記述を同様のSQL形式に変換し、表示します。
[-v]パラメータを使用してログ情報を出力します。

[root@Mysql11 ~]# mysqlbinlog -v --start-position=509 --stop-postion=845 /var/lib/mysql/mysql-bin.000001
mysqlbinlog: [ERROR] unknown variable 'stop-postion=845'
[root@Mysql11 ~]# mysqlbinlog --base64-output='decode-rows' -v --start-position=509 --stop-position=845 /var/lib/mysql/mysql-bin.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 509
#200703 22:24:26 server id 1  end_log_pos 581 CRC32 0xa68d8aed 	Query	thread_id=2	exec_time=0	error_code=0
SET TIMESTAMP=1593786266/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 581
#200703 22:24:26 server id 1  end_log_pos 629 CRC32 0x220d2e02 	Table_map: `hist`.`t2` mapped to number 113
# at 629
#200703 22:24:26 server id 1  end_log_pos 845 CRC32 0x4cd0e798 	Update_rows: table id 113 flags: STMT_END_F
### UPDATE `hist`.`t2`
### WHERE
###   @1=1
###   @2='Johny'
### SET
###   @1=101
###   @2='Johny'
### UPDATE `hist`.`t2`
### WHERE
###   @1=2
###   @2='Tom'
### SET
###   @1=102
###   @2='Tom'
### UPDATE `hist`.`t2`
### WHERE
###   @1=3
###   @2='Jack'
### SET
###   @1=103
###   @2='Jack'
### UPDATE `hist`.`t2`
### WHERE
###   @1=4
###   @2='Merry'
### SET
###   @1=104
###   @2='Merry'
### UPDATE `hist`.`t2`
### WHERE
###   @1=5
###   @2='Rose'
### SET
###   @1=105
###   @2='Rose'
### UPDATE `hist`.`t2`
### WHERE
###   @1=6
###   @2='wang'
### SET
###   @1=106
###   @2='wang'
### UPDATE `hist`.`t2`
### WHERE
###   @1=7
###   @2='zhang'
### SET
###   @1=107
###   @2='zhang'
### UPDATE `hist`.`t2`
### WHERE
###   @1=8
###   @2='li'
### SET
###   @1=108
###   @2='li'
### UPDATE `hist`.`t2`
### WHERE
###   @1=9
###   @2='zhao'
### SET
###   @1=109
###   @2='zhao'
ROLLBACK /* added by mysqlbinlog */ /*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

おすすめ

転載: blog.csdn.net/weixin_44377973/article/details/107117185