文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  效能架構複寫資料表

29.12.11 效能架構複寫資料表

效能架構提供公開複寫資訊的資料表。這類似於從 SHOW REPLICA STATUS 陳述式取得的資訊,但以資料表形式呈現更容易存取且具有可用性優勢

  • SHOW REPLICA STATUS 的輸出對於視覺檢查很有用,但對於程式化使用則不太有用。相比之下,使用效能架構資料表,可以使用一般的 SELECT 查詢(包括複雜的 WHERE 條件、聯結等等)來搜尋關於複寫狀態的資訊。

  • 查詢結果可以儲存在資料表中以進行進一步分析,或指派給變數,從而在預存程序中使用。

  • 複寫資料表提供更好的診斷資訊。對於多執行緒複寫操作,SHOW REPLICA STATUS 使用 Last_SQL_ErrnoLast_SQL_Error 欄位回報所有協調器和工作執行緒錯誤,因此只有最近的錯誤可見,並且資訊可能會遺失。複寫資料表會將錯誤儲存在每個執行緒的基礎上,而不會遺失資訊。

  • 最後一次看到的交易會在每個工作執行緒的複寫表格中顯示。這項資訊無法從 SHOW REPLICA STATUS 中取得。

  • 熟悉 Performance Schema 介面的開發人員可以透過在表格中新增列來擴充複寫表格,以提供額外的資訊。

複寫表格說明

Performance Schema 提供下列與複寫相關的表格

當 Performance Schema 停用時,下列 Performance Schema 複寫表格會繼續填入資料

例外情況是複寫表格中的本機計時資訊(交易的開始和結束時間戳記)replication_connection_statusreplication_applier_status_by_coordinatorreplication_applier_status_by_worker。當 Performance Schema 停用時,不會收集此資訊。

以下章節更詳細地說明每個複寫表格,包括 SHOW REPLICA STATUS 產生的資料行與相同資訊出現的複寫表格資料行之間的對應關係。

此複寫表格簡介的其餘部分說明 Performance Schema 如何填入它們,以及 SHOW REPLICA STATUS 中哪些欄位未在表格中表示。

複寫表格生命週期

Performance Schema 填入複寫表格的方式如下

  • 在執行 CHANGE REPLICATION SOURCE TO 之前,表格是空的。

  • CHANGE REPLICATION SOURCE TO 之後,可以在表格中看到組態參數。此時,沒有作用中的複寫執行緒,因此 THREAD_ID 資料行是 NULL,而 SERVICE_STATE 資料行的值為 OFF

  • START REPLICA 之後,可以看到非 null 的 THREAD_ID 值。閒置或作用中的執行緒的 SERVICE_STATE 值為 ON。連線至來源的執行緒在建立連線時的值為 CONNECTING,之後只要連線持續存在,則值為 ON

  • STOP REPLICA 之後,THREAD_ID 資料行會變成 NULL,而不再存在的執行緒的 SERVICE_STATE 資料行值為 OFF

  • STOP REPLICA 或執行緒因錯誤而停止後,表格會保留下來。

  • 只有當複本以多執行緒模式運作時,replication_applier_status_by_worker 表格才會有資料。也就是說,如果 replica_parallel_workers 系統變數大於 0,則在執行 START REPLICA 時會填入此表格,而資料列數會顯示工作執行緒的數目。

複本狀態資訊未在複寫表格中

Performance Schema 複寫表格中的資訊與從 SHOW REPLICA STATUS 取得的資訊有些不同,因為表格是針對使用全域交易識別碼 (GTID) 而非檔案名稱和位置,並且它們代表伺服器 UUID 值,而不是伺服器 ID 值。由於這些差異,幾個 SHOW REPLICA STATUS 資料行未保留在 Performance Schema 複寫表格中,或以不同的方式表示

  • 下列欄位參照檔案名稱和位置,因此不保留

    Master_Log_File
    Read_Master_Log_Pos
    Relay_Log_File
    Relay_Log_Pos
    Relay_Master_Log_File
    Exec_Master_Log_Pos
    Until_Condition
    Until_Log_File
    Until_Log_Pos
  • Master_Info_File 欄位不保留。它參照用於複本來源中繼資料儲存庫的 master.info 檔案,該檔案已由使用當機安全表格取代。

  • 下列欄位是以 server_id 而非 server_uuid 為基礎,因此不保留

    Master_Server_Id
    Replicate_Ignore_Server_Ids
  • Skip_Counter 欄位是以事件計數而非 GTID 為基礎,因此不保留。

  • 這些錯誤欄位是 Last_SQL_ErrnoLast_SQL_Error 的別名,因此不保留

    Last_Errno
    Last_Error

    在 Performance Schema 中,此錯誤資訊可在 replication_applier_status_by_worker 表格(以及如果複本是多執行緒,則為 replication_applier_status_by_coordinator)的 LAST_ERROR_NUMBERLAST_ERROR_MESSAGE 資料行中取得。這些表格提供比從 Last_ErrnoLast_Error 取得的更具體的每個執行緒錯誤資訊。

  • 提供關於命令列篩選選項的欄位不保留

    Replicate_Do_DB
    Replicate_Ignore_DB
    Replicate_Do_Table
    Replicate_Ignore_Table
    Replicate_Wild_Do_Table
    Replicate_Wild_Ignore_Table
  • Replica_IO_StateReplica_SQL_Running_State 欄位不保留。如果需要,可以從程序清單中取得這些值,方法是使用適當複寫表格的 THREAD_ID 資料行,並將其與 INFORMATION_SCHEMA PROCESSLIST 表格中的 ID 資料行聯結,以選取後者表格的 STATE 資料行。

  • Executed_Gtid_Set 欄位可以顯示包含大量文字的大型集合。相反地,Performance Schema 表格會顯示目前正由複本套用的交易 GTID。或者,可以從 gtid_executed 系統變數的值取得已執行的 GTID 集合。

  • Seconds_Behind_MasterRelay_Log_Space 欄位的狀態為待決定,因此不保留。

複寫通道

複寫 Performance Schema 表格的第一個資料行是 CHANNEL_NAME。這讓表格可以根據每個複寫通道檢視。在非多重來源複寫設定中,會有一個預設的複寫通道。當您在複本上使用多個複寫通道時,您可以根據每個複寫通道篩選表格,以監控特定的複寫通道。如需更多資訊,請參閱第 19.2.2 節「複寫通道」第 19.1.5.8 節「監控多重來源複寫」