文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


19.2.4.1 中繼日誌

中繼日誌與二進制日誌類似,由一組編號的檔案組成,其中包含描述資料庫變更的事件,以及一個索引檔案,其中包含所有已使用的中繼日誌檔的名稱。中繼日誌檔的預設位置是資料目錄。

術語 中繼日誌檔通常表示包含資料庫事件的個別編號檔案。術語 中繼日誌統稱表示一組編號的中繼日誌檔加上索引檔案。

中繼日誌檔案的格式與二進位日誌檔案相同,可以使用 mysqlbinlog 讀取(請參閱第 6.6.9 節,「mysqlbinlog — 處理二進位日誌檔案的工具」)。如果正在使用二進位日誌交易壓縮,則寫入中繼日誌的交易酬載會以與二進位日誌相同的方式壓縮。有關二進位日誌交易壓縮的更多資訊,請參閱第 7.4.4.5 節,「二進位日誌交易壓縮」

對於預設的複製通道,中繼日誌檔案名稱的預設格式為 主機名稱-relay-bin.nnnnnn,其中 主機名稱 是副本伺服器主機的名稱,而 nnnnnn 是序號。連續的中繼日誌檔案會使用連續的序號建立,從 000001 開始。對於非預設的複製通道,預設的基本名稱為 主機名稱-relay-bin-通道,其中 通道 是中繼日誌中記錄的複製通道名稱。

副本使用索引檔案來追蹤目前正在使用的中繼日誌檔案。對於預設通道,預設的中繼日誌索引檔案名稱為 主機名稱-relay-bin.index,對於非預設複製通道,則為 主機名稱-relay-bin-通道.index

預設的中繼日誌檔案和中繼日誌索引檔案名稱和位置可以分別使用 relay_logrelay_log_index 系統變數覆寫(請參閱第 19.1.6 節,「複製和二進位記錄選項和變數」)。

如果副本使用基於主機的預設中繼日誌檔案名稱,則在設定複製後變更副本的主機名稱可能會導致複製失敗,並出現 Failed to open the relay logCould not find target log during relay log initialization 錯誤。這是一個已知問題(請參閱錯誤 #2122)。如果您預期副本的主機名稱將來可能會變更(例如,如果在副本上設定網路,使其主機名稱可以使用 DHCP 修改),您可以透過在最初設定副本時使用 relay_logrelay_log_index 系統變數明確指定中繼日誌檔案名稱,來完全避免此問題。這樣做可以讓名稱獨立於伺服器主機名稱變更。

如果您在複製開始後遇到此問題,一種解決方法是停止副本伺服器,將舊的中繼日誌索引檔案的內容附加到新的索引檔案中,然後重新啟動副本。在 Unix 系統上,可以像這樣操作:

$> cat new_relay_log_name.index >> old_relay_log_name.index
$> mv old_relay_log_name.index new_relay_log_name.index

在下列情況下,副本伺服器會建立新的中繼日誌檔案:

複製 SQL(套用)執行緒會在執行完檔案中的所有事件且不再需要該檔案後,自動刪除每個中繼日誌檔案。由於複製 SQL 執行緒會負責執行此操作,因此沒有明確的機制來刪除中繼日誌。但是,FLUSH LOGS 會輪換中繼日誌,這會影響複製 SQL 執行緒何時刪除它們。