Mysql

mysqlbinlog 輸出中的base64 BINLOG 語句是什麼意思?

  • December 22, 2011

我已經查看了該mysqlbinlog命令作為從 MySQL 5.5 到 MySQL 5.0 的回滾方法的候選者。

當我在 MySQL 5.5 伺服器中的一個 bin-log 文件上執行命令時,我注意到了這些 base64 語句:

/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#111219 19:25:06 server id 395220  end_log_pos 107      Start: binlog v 4, server v 5.5.18-log created 111219 19:25:06
BINLOG '
ko/vTg/UBwYAZwAAAGsAAAAAAAQANS41LjE4LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
# at 107
#111219 19:25:06 server id 370534  end_log_pos 171      Query   thread_id=387276        exec_time=73680 error_code=0

當我檢查 MySQL 5.0 bin-log 文件時,我注意到這些語句失去了。我的第一個猜測是這是 MySQL Replication 中的一個新特性。我知道我不應該在 MySQL 5.0 上使用來自 MySQL 5.5 的 binlog。因此,我可以保證數據回滾的唯一方法是將查詢作為查詢執行。

當我跑的時候mysqlbinlog --base64-output=NEVER,我注意到 base64 語句已經消失了。我原以為它們會被翻譯成純文字查詢,但事實並非如此。

有人可以更清楚地了解這些 base64 語句的含義嗎?

謝謝,

沙哈爾。

來自 MySQL 文件

•–base64-輸出

$$ =value $$ 此選項確定何時應使用 BINLOG 語句將事件編碼為 base-64 字元串顯示。該選項具有以下允許值(不區分大小寫): ■ AUTO(“自動”)或 UNSPEC(“未指定”)在必要時自動顯示 BINLOG 語句(即,用於格式描述事件和行事件)。如果沒有給出–base64-output 選項,效果與–base64-output=AUTO 相同。

筆記

如果您打算使用 mysqlbinlog 的輸出重新執行二進制日誌文件內容,則自動顯示 BINLOG 是唯一安全的行為。其他選項值僅用於調試或測試目的,因為它們可能會產生不包括可執行形式的所有事件的輸出。

■ 盡可能始終顯示 BINLOG 語句。如果 –base64-output 選項沒有給出值,效果與 –base64-output=ALWAYS 相同。

筆記

MySQL 5.6 中對複制的更改使此選項生成的輸出無法使用,因此從 MySQL 5.5.8 開始不推薦使用 ALWAYS,並且在 MySQL 5.6 中將是無效值

■ NEVER 導致不顯示 BINLOG 語句。如果發現必須使用 BINLOG 顯示的行事件,mysqlbinlog 將退出並出現錯誤。

■ DECODE-ROWS 通過指定–verbose 選項向mysqlbinlog 指定您打算將行事件解碼並顯示為註釋的SQL 語句。與 NEVER 一樣,DECODE-ROWS 禁止顯示 BINLOG 語句,但與 NEVER 不同,它不會在找到行事件時退出並返回錯誤。

有關顯示 –base64-output 和 –verbose 對行事件輸出的影響的範例,請參閱第 4.6.7.2 節,“mysqlbinlog 行事件顯示”。

警告

請記住,二進制日誌不向後兼容。

在伺服器故障中。有人認為master的二進制日誌損壞了,沒有意識到二進制日誌有不同的起點。我通過解釋以下內容來解決:

空二進制日誌的文件大小為

  • 對於 MySQL 5.5、107
  • 對於 MySQL 5.1, 106
  • MySQL 5.1、98 之前的版本

正如您已經指出的那樣,複製從 5.0 Master 到 5.5 Slave 工作,而不是相反。

引用自:https://dba.stackexchange.com/questions/9591