本節說明用於監控複製操作的選項。
複製操作可能需要一些時間才能完成,具體取決於資料量和其他與資料傳輸相關的因素。您可以使用 clone_status
和 clone_progress
效能架構表格,在接收者 MySQL 伺服器執行個體上監控複製操作的狀態和進度。
clone_status
和 clone_progress
效能架構表格僅可用於監控接收者 MySQL 伺服器執行個體上的複製操作。若要監控捐贈者 MySQL 伺服器執行個體上的複製操作,請使用複製階段事件,如使用效能架構階段事件監控複製操作中所述。
clone_status
表格提供目前或上次執行的複製操作的狀態。複製操作有四種可能的狀態:未開始
、進行中
、已完成
和失敗
。clone_progress
表格按階段提供目前或上次執行的複製操作的進度資訊。複製操作的階段包括DROP DATA
、FILE COPY
、PAGE_COPY
、REDO_COPY
、FILE_SYNC
、RESTART
和RECOVERY
。
若要存取效能架構複製表格,需要效能架構上的 SELECT
和 EXECUTE
權限。
若要檢查複製操作的狀態
連線至接收者 MySQL 伺服器執行個體。
查詢
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" |
+-----------+----------+---------------+
若要檢閱複製操作每個階段的詳細資訊
連線至接收者 MySQL 伺服器執行個體。
查詢
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_COMPLETED
值。報告的值會隨著操作的進度而修訂。WORK_ESTIMATED
這種監控複製操作的方法可用於捐贈者或接收者 MySQL 伺服器執行個體。
依發生順序,複製操作階段事件包括
stage/innodb/clone (檔案複製)
:表示複製操作中檔案複製階段的進度。
和WORK_ESTIMATED
單位為檔案區塊。要傳輸的檔案數量在檔案複製階段開始時已知,區塊數量是根據檔案數量估算的。WORK_COMPLETED
WORK_ESTIMATED
設定為估算的檔案區塊數量。WORK_COMPLETED
在每個區塊發送後更新。stage/innodb/clone (頁面複製)
:表示複製操作中頁面複製階段的進度。WORK_ESTIMATED
和WORK_COMPLETED
單位為頁面。檔案複製階段完成後,要傳輸的頁面數量已知,並且WORK_ESTIMATED
設定為此值。WORK_COMPLETED
在每個頁面發送後更新。stage/innodb/clone (重做複製)
:表示複製操作中重做複製階段的進度。WORK_ESTIMATED
和WORK_COMPLETED
單位為重做區塊。頁面複製階段完成後,要傳輸的重做區塊數量已知,並且WORK_ESTIMATED
設定為此值。WORK_COMPLETED
在每個區塊發送後更新。
以下範例示範如何啟用 stage/innodb/clone%
事件儀器和相關的消費者表格來監控複製操作。有關效能綱要(Performance Schema)階段事件儀器和相關消費者的資訊,請參閱 第 29.12.5 節「效能綱要階段事件表格」。
啟用
stage/innodb/clone%
儀器mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/clone%';
啟用階段事件消費者表格,包括
events_stages_current
、events_stages_history
和events_stages_history_long
。mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%stages%';
執行複製操作。在此範例中,本地資料目錄會複製到名為
cloned_dir
的目錄。mysql> CLONE LOCAL DATA DIRECTORY = '/path/to/cloned_dir';
透過查詢效能綱要
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_concurrency
和 clone_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 節「記憶體摘要表格」。