文件首頁
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


7.6.7.10 監控複製操作

本節說明用於監控複製操作的選項。

使用效能架構 Clone 表格監控複製操作

複製操作可能需要一些時間才能完成,具體取決於資料量和其他與資料傳輸相關的因素。您可以使用 clone_statusclone_progress 效能架構表格,在接收者 MySQL 伺服器執行個體上監控複製操作的狀態和進度。

注意

clone_statusclone_progress 效能架構表格僅可用於監控接收者 MySQL 伺服器執行個體上的複製操作。若要監控捐贈者 MySQL 伺服器執行個體上的複製操作,請使用複製階段事件,如使用效能架構階段事件監控複製操作中所述。

  • clone_status 表格提供目前或上次執行的複製操作的狀態。複製操作有四種可能的狀態:未開始進行中已完成失敗

  • clone_progress 表格按階段提供目前或上次執行的複製操作的進度資訊。複製操作的階段包括 DROP DATAFILE COPYPAGE_COPYREDO_COPYFILE_SYNCRESTARTRECOVERY

若要存取效能架構複製表格,需要效能架構上的 SELECTEXECUTE 權限。

若要檢查複製操作的狀態

  1. 連線至接收者 MySQL 伺服器執行個體。

  2. 查詢 clone_status 表格

    mysql> SELECT STATE FROM performance_schema.clone_status;
    +-----------+
    | STATE     |
    +-----------+
    | Completed |
    +-----------+

如果複製操作期間發生失敗,您可以查詢 clone_status 表格以取得錯誤資訊

mysql> SELECT STATE, ERROR_NO, ERROR_MESSAGE FROM performance_schema.clone_status;
+-----------+----------+---------------+
| STATE     | ERROR_NO | ERROR_MESSAGE |
+-----------+----------+---------------+
| Failed    |      xxx | "xxxxxxxxxxx" |
+-----------+----------+---------------+

若要檢閱複製操作每個階段的詳細資訊

  1. 連線至接收者 MySQL 伺服器執行個體。

  2. 查詢 clone_progress 表格。例如,以下查詢提供複製操作每個階段的狀態和結束時間資料

    mysql> SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;
    +-----------+-----------+----------------------------+
    | stage     | state     | end_time                   |
    +-----------+-----------+----------------------------+
    | DROP DATA | Completed | 2019-01-27 22:45:43.141261 |
    | FILE COPY | Completed | 2019-01-27 22:45:44.457572 |
    | PAGE COPY | Completed | 2019-01-27 22:45:44.577330 |
    | REDO COPY | Completed | 2019-01-27 22:45:44.679570 |
    | FILE SYNC | Completed | 2019-01-27 22:45:44.918547 |
    | RESTART   | Completed | 2019-01-27 22:45:48.583565 |
    | RECOVERY  | Completed | 2019-01-27 22:45:49.626595 |
    +-----------+-----------+----------------------------+

    如需您可以監控的其他複製狀態和進度資料點,請參閱第 29.12.19 節,「效能架構 Clone 表格」

使用效能架構階段事件監控複製操作

複製操作可能需要一些時間才能完成,具體取決於資料量和其他與資料傳輸相關的因素。有三個階段事件用於監控複製操作的進度。每個階段事件都會報告 WORK_COMPLETEDWORK_ESTIMATED 值。報告的值會隨著操作的進度而修訂。

這種監控複製操作的方法可用於捐贈者或接收者 MySQL 伺服器執行個體。

依發生順序,複製操作階段事件包括

  • stage/innodb/clone (檔案複製):表示複製操作中檔案複製階段的進度。WORK_ESTIMATEDWORK_COMPLETED 單位為檔案區塊。要傳輸的檔案數量在檔案複製階段開始時已知,區塊數量是根據檔案數量估算的。WORK_ESTIMATED 設定為估算的檔案區塊數量。WORK_COMPLETED 在每個區塊發送後更新。

  • stage/innodb/clone (頁面複製):表示複製操作中頁面複製階段的進度。WORK_ESTIMATEDWORK_COMPLETED 單位為頁面。檔案複製階段完成後,要傳輸的頁面數量已知,並且 WORK_ESTIMATED 設定為此值。WORK_COMPLETED 在每個頁面發送後更新。

  • stage/innodb/clone (重做複製):表示複製操作中重做複製階段的進度。WORK_ESTIMATEDWORK_COMPLETED 單位為重做區塊。頁面複製階段完成後,要傳輸的重做區塊數量已知,並且 WORK_ESTIMATED 設定為此值。WORK_COMPLETED 在每個區塊發送後更新。

以下範例示範如何啟用 stage/innodb/clone% 事件儀器和相關的消費者表格來監控複製操作。有關效能綱要(Performance Schema)階段事件儀器和相關消費者的資訊,請參閱 第 29.12.5 節「效能綱要階段事件表格」

  1. 啟用 stage/innodb/clone% 儀器

    mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES'
           WHERE NAME LIKE 'stage/innodb/clone%';
  2. 啟用階段事件消費者表格,包括 events_stages_currentevents_stages_historyevents_stages_history_long

    mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES'
           WHERE NAME LIKE '%stages%';
  3. 執行複製操作。在此範例中,本地資料目錄會複製到名為 cloned_dir 的目錄。

    mysql> CLONE LOCAL DATA DIRECTORY = '/path/to/cloned_dir';
  4. 透過查詢效能綱要 events_stages_current 表格,檢查複製操作的進度。顯示的階段事件會因進行中的複製階段而異。WORK_COMPLETED 欄顯示已完成的工作。WORK_ESTIMATED 欄顯示總共需要的工作。

    mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED FROM performance_schema.events_stages_current
           WHERE EVENT_NAME LIKE 'stage/innodb/clone%';
    +--------------------------------+----------------+----------------+
    | EVENT_NAME                     | WORK_COMPLETED | WORK_ESTIMATED |
    +--------------------------------+----------------+----------------+
    | stage/innodb/clone (redo copy) |              1 |              1 |
    +--------------------------------+----------------+----------------+

    如果複製操作已完成,events_stages_current 表格會傳回一個空集合。在這種情況下,您可以檢查 events_stages_history 表格,以檢視已完成操作的事件資料。例如

    mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED FROM events_stages_history
           WHERE EVENT_NAME LIKE 'stage/innodb/clone%';
    +--------------------------------+----------------+----------------+
    | EVENT_NAME                     | WORK_COMPLETED | WORK_ESTIMATED |
    +--------------------------------+----------------+----------------+
    | stage/innodb/clone (file copy) |            301 |            301 |
    | stage/innodb/clone (page copy) |              0 |              0 |
    | stage/innodb/clone (redo copy) |              1 |              1 |
    +--------------------------------+----------------+----------------+
使用效能綱要複製儀器監控複製操作

效能綱要 為進階複製操作效能監控提供儀器。若要檢視可用的複製儀器,並發出以下查詢

mysql> SELECT NAME,ENABLED FROM performance_schema.setup_instruments
       WHERE NAME LIKE '%clone%';
+---------------------------------------------------+---------+
| NAME                                              | ENABLED |
+---------------------------------------------------+---------+
| wait/synch/mutex/innodb/clone_snapshot_mutex      | NO      |
| wait/synch/mutex/innodb/clone_sys_mutex           | NO      |
| wait/synch/mutex/innodb/clone_task_mutex          | NO      |
| wait/synch/mutex/group_rpl/LOCK_clone_donor_list  | NO      |
| wait/synch/mutex/group_rpl/LOCK_clone_handler_run | NO      |
| wait/synch/mutex/group_rpl/LOCK_clone_query       | NO      |
| wait/synch/mutex/group_rpl/LOCK_clone_read_mode   | NO      |
| wait/synch/cond/group_rpl/COND_clone_handler_run  | NO      |
| wait/io/file/innodb/innodb_clone_file             | YES     |
| stage/innodb/clone (file copy)                    | YES     |
| stage/innodb/clone (redo copy)                    | YES     |
| stage/innodb/clone (page copy)                    | YES     |
| statement/abstract/clone                          | YES     |
| statement/clone/local                             | YES     |
| statement/clone/client                            | YES     |
| statement/clone/server                            | YES     |
| memory/innodb/clone                               | YES     |
| memory/clone/data                                 | YES     |
+---------------------------------------------------+---------+
等待儀器

效能綱要等待儀器追蹤需要時間的事件。複製等待事件儀器包括

  • wait/synch/mutex/innodb/clone_snapshot_mutex:追蹤複製快照互斥鎖的等待事件,該互斥鎖在多個複製執行緒之間同步對動態快照物件(在捐贈者和接收者上)的存取。

  • wait/synch/mutex/innodb/clone_sys_mutex:追蹤複製系統互斥鎖的等待事件。在 MySQL 伺服器執行個體中,有一個複製系統物件。此互斥鎖同步捐贈者和接收者上對複製系統物件的存取。複製執行緒和其他前景和背景執行緒會取得此互斥鎖。

  • wait/synch/mutex/innodb/clone_task_mutex:追蹤用於複製工作管理的複製工作互斥鎖的等待事件。clone_task_mutex 由複製執行緒取得。

  • wait/io/file/innodb/innodb_clone_file:追蹤複製操作所處理之檔案的所有 I/O 等待操作。

有關監控 InnoDB 互斥鎖等待的資訊,請參閱 第 17.16.2 節「使用效能綱要監控 InnoDB 互斥鎖等待」。有關監控一般等待事件的資訊,請參閱 第 29.12.4 節「效能綱要等待事件表格」

階段儀器

效能綱要階段事件追蹤陳述式執行過程中發生的步驟。複製階段事件儀器包括

  • stage/innodb/clone (檔案複製):表示複製操作中檔案複製階段的進度。

  • stage/innodb/clone (重做複製):表示複製操作中重做複製階段的進度。

  • stage/innodb/clone (頁面複製):表示複製操作中頁面複製階段的進度。

有關使用階段事件監控複製操作的資訊,請參閱 使用效能綱要階段事件監控複製操作。有關監控階段事件的一般資訊,請參閱 第 29.12.5 節「效能綱要階段事件表格」

陳述式儀器

效能綱要陳述式事件追蹤陳述式執行。當啟動複製操作時,複製陳述式儀器追蹤的不同陳述式類型可能會並行執行。您可以在效能綱要陳述式事件表格中觀察這些陳述式事件。執行的陳述式數量取決於 clone_max_concurrencyclone_autotune_concurrency 設定。

複製陳述式事件儀器包括

  • statement/abstract/clone:追蹤在分類為本機、用戶端或伺服器操作類型之前,任何複製操作的陳述式事件。

  • statement/clone/local:追蹤本機複製操作的複製陳述式事件;在執行 CLONE LOCAL 陳述式時產生。

  • statement/clone/client:追蹤在接收者 MySQL 伺服器執行個體上發生的遠端複製陳述式事件;在接收者上執行 CLONE INSTANCE 陳述式時產生。

  • statement/clone/server:追蹤在捐贈者 MySQL 伺服器執行個體上發生的遠端複製陳述式事件;在接收者上執行 CLONE INSTANCE 陳述式時產生。

有關監控效能綱要陳述式事件的資訊,請參閱 第 29.12.6 節「效能綱要陳述式事件表格」

記憶體儀器

效能綱要記憶體儀器追蹤記憶體使用量。複製記憶體使用量儀器包括

  • memory/innodb/clone:追蹤 InnoDB 為動態快照配置的記憶體。

  • memory/clone/data:追蹤複製外掛程式在複製操作期間配置的記憶體。

有關使用效能綱要監控記憶體使用量的資訊,請參閱 第 29.12.20.10 節「記憶體摘要表格」

Com_clone 狀態變數

Com_clone 狀態變數提供 CLONE 陳述式執行次數的計數。

如需詳細資訊,請參閱 第 7.1.10 節「伺服器狀態變數」中關於 Com_xxx 陳述式計數器變數的討論。