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


7.6.7.10 監控複製操作

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

使用效能綱要複製表格監控複製操作

複製操作可能需要一些時間才能完成,具體取決於資料量和其他與資料傳輸相關的因素。您可以使用 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 節「效能綱要複製表格」

使用 Performance Schema 階段事件監控複製操作

複製操作可能需要一些時間才能完成,具體時間取決於資料量和其他與資料傳輸相關的因素。有三個階段事件可用於監控複製操作的進度。每個階段事件都會報告 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. 透過查詢 Performance Schema 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 |
    +--------------------------------+----------------+----------------+
使用 Performance Schema 複製儀器監控複製操作

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

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 (頁面複製):表示複製操作的頁面複製階段的進度。

如需關於使用階段事件監控複製操作的資訊,請參閱 使用 Performance Schema 階段事件監控複製操作。如需關於一般監控階段事件的資訊,請參閱 第 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 陳述式計數器變數的討論。