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


MySQL 9.0 參考手冊  /  ...  /  Performance Schema 複製表格

29.12.11 Performance Schema 複製表格

Performance Schema 提供表格來公開複製資訊。這類似於從 SHOW REPLICA STATUS 陳述式取得的資訊,但是以表格形式呈現更易於存取,且具有可用性優勢

  • SHOW REPLICA STATUS 的輸出對於視覺檢查很有用,但對於程式化使用則不太方便。 相反地,使用 Performance Schema 表格,可以使用一般的 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 之後,可以看到非空值的 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 表格的 LAST_ERROR_NUMBERLAST_ERROR_MESSAGE 資料行中找到(如果複本為多執行緒,則也可在 replication_applier_status_by_coordinator 中找到)。這些表格提供比 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 節「監控多來源複寫」