如何檢視二進位制日誌ROW模式下最原始的SQL語句

2021-09-22 07:31:43 字數 2323 閱讀 5072

如何檢視二進位制日誌row模式下最原始的sql語句

mysql的binlog的row模式解析

在mysql5.6以後,對主從資料一致性要求變高了,statement格式逐漸不太適合業務的需求了,所以生產環境大家都採用了row模

式,row模式是傳輸最底層的資料變化的insert的模組來進行主從資料的傳輸,那麼在binlog裡面就和普通的statement模式有何差

別?能否看到最原始的sql語句呢?

1、準備錄入資料

2、row模式binlog是亂碼

row模式下面,binlog裡面的ddl語句是正常顯示的,但是dml是亂碼

3、通過--base64-output=decode-rows -v來檢視dml語句

/usr/bin/mysqlbinlog --base64-output=decode-rows -v /var/lib/mysql/mysql-bin.000005

可以看到如下效果,不過都是最原始的dml塊sql語句

ps:這時可以看到dml的insert語句,但是只看到了最終的insert塊,而看不到原始的過來的insert語句,很多時候排查問題

需要原始的insert語句而不是底層的insert塊。

4、通過binlog_rows_query_log_events引數來檢視最原始的insert sql

set binlog_rows_query_log_events=1;     

②然後重新整理日誌錄入新的資料記錄

flush logs;

insert into test1 values(0003,'tiger','man','beijing','03');

③解析binlog,沒有看到原始的insert語句

④通過mysql的命令列檢視最原始的insert sql語句

5、試驗總結

基於以上的試驗,可以得出在row模式下,可以通過mysqlbinlog --base64-output=decode-rows –v檢視最底層的insert資料

模組,也可以通過命令列show binlog events in 'mysql-bin.000216';來實時檢視最原始的insertsql記錄。

我們可以在搭建資料庫的時候,在啟動引數檔案my.cnf裡面事先設定好,如下所示:

# vim my.cnf

[mysqld]

binlog_format=row  # binlog 日誌格式

binlog_rows_query_log_events = 1  # 將原始的操作sql記錄寫入事件中

mysqlbinlog 檢視二進位制日誌

當bin log的模式設定為 row時 不僅日誌長得快 並且檢視執行的sql時 也稍微麻煩一點 1.干擾語句多 2生成sql的編碼需要解碼。binlog format row 直接mysqlbinlog出來的 檔案 執行sql部分的sql顯示為base64編碼格式 固生成sql記錄的時候 不能用常規...

mysqlbinlog檢視二進位制日誌時的乙個問題

在使用mysqlbinlog檢視日誌時,出現乙個錯誤提示如下 usr local mysql bin mysqlbinlog unknown variable default character set utf8 原因分析,是由於在my.cnf中的client選項組中新增了 default char...

MySQL日誌 配置與檢視二進位制日誌

二進位制日誌檔案的配置操作 二進位制日誌檔案包括了 hostname bin.00000x 以及 hostname bin.index,index這個是所有的二進位制日誌的索引檔案。通過修改my.cnf檔案的方式來開啟二進位制日誌了。只要新增log bin就可以開啟,其他的都使用預設。例如 也可以通...