本节介绍了监视克隆操作的选项。
使用性能模式克隆表监视克隆操作
克隆操作可能需要一些时间才能完成,具体取决于数据量和与数据传输相关的其他因素。您可以使用clone_status和 clone_progress性能模式表监视收件人MySQL服务器实例上克隆操作的状态和进度 。
注意
该clone_status和 clone_progress性能模式的表可用于监视只有收件人的MySQL服务器实例的克隆操作。要监视施主MySQL服务器实例上的克隆操作,请使用克隆阶段事件,如使用性能架构阶段事件监视克隆操作中所述 。
- 该
clone_status表提供了当前或上次执行的克隆操作的状态。克隆操作有四种可能的状态:Not Started,In Progress,Completed,和Failed。 - 该
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 | +-----------+-----------+----------------------------+有关您可以监视的其他克隆状态和进度数据点,请参见 第26.12.17节“性能架构克隆表”。
使用性能模式阶段事件监视克隆操作
克隆操作可能需要一些时间才能完成,具体取决于数据量和与数据传输相关的其他因素。存在三个阶段的事件,用于监视克隆操作的进度。每个阶段的事件报告 WORK_COMPLETED和 WORK_ESTIMATED值。报告值会随着操作的进行而修改。
这种监视克隆操作的方法可以在施主或受主MySQL服务器实例上使用。
按照发生的顺序,克隆操作阶段事件包括:
stage/innodb/clone (file copy):指示克隆操作的文件复制阶段的进度。WORK_ESTIMATED和WORK_COMPLETED单位是文件块。在文件复制阶段开始时就知道要传输的文件数,并且基于文件数估计块数。WORK_ESTIMATED设置为估计的文件块数。WORK_COMPLETED发送每个块后更新。stage/innodb/clone (page copy):指示克隆操作的页面复制阶段的进度。WORK_ESTIMATED和WORK_COMPLETED单位是页面。一旦完成文件复制阶段,就知道要传输的页数,并将WORK_ESTIMATED其设置为该值。WORK_COMPLETED发送每页后更新。stage/innodb/clone (redo copy):指示克隆操作的重做复制阶段的进度。WORK_ESTIMATED和WORK_COMPLETED单位是重做块。一旦页面复制阶段完成,就知道要传输的重做块的数量,并将WORK_ESTIMATED其设置为该值。WORK_COMPLETED发送每个块后更新。
以下示例演示了如何启用 stage/innodb/clone%事件工具和相关的使用者表来监视克隆操作。有关性能架构阶段事件工具和相关使用者的信息,请参见 第26.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 | +--------------------------------+----------------+----------------+
使用性能模式克隆工具监视克隆操作
Performance Schema 提供了用于克隆操作的高级性能监视的工具。要查看可用的克隆检测,请发出以下查询:
mysql> SELECT * FROM performance_schema.setup_instruments
WHERE NAME LIKE 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/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:跟踪克隆sys互斥锁的等待事件。MySQL服务器实例中有一个克隆系统对象。此互斥锁同步对供体和收件人上的克隆系统对象的访问。它是由克隆线程以及其他前台和后台线程获取的。wait/synch/mutex/innodb/clone_task_mutex:跟踪克隆任务互斥锁的等待事件,用于克隆任务管理。该clone_task_mutex被克隆的线程收购。wait/io/file/innodb/innodb_clone_file:跟踪克隆所操作的文件的所有I / O等待操作。
有关监视InnoDB 互斥锁等待的信息,请参见 第15.16.2节“使用性能模式监视InnoDB Mutex等待”。有关一般监视等待事件的信息,请参见 第26.12.4节“性能模式等待事件表”。
舞台乐器
Performance Schema阶段事件跟踪在语句执行过程中发生的步骤。克隆阶段事件工具包括:
stage/innodb/clone (file copy):指示克隆操作的文件复制阶段的进度。stage/innodb/clone (redo copy):指示克隆操作的重做复制阶段的进度。stage/innodb/clone (page copy):指示克隆操作的页面复制阶段的进度。
有关使用阶段事件监视克隆操作的信息,请参阅 使用性能模式阶段事件监视克隆操作。有关监视阶段事件的一般信息,请参见 第26.12.5节“性能模式阶段事件表”。
声明工具
性能架构语句事件跟踪语句执行。启动克隆操作时,可以并行执行克隆语句工具跟踪的不同语句类型。您可以在Performance Schema语句事件表中观察这些语句事件。执行的语句数取决于 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在收件人上执行语句时生成 。
有关监视性能模式语句事件的信息,请参见 第26.12.6节“性能模式语句事件表”。
记忆仪器
性能架构内存工具跟踪内存使用情况。克隆内存使用工具包括:
memory/innodb/clone:跟踪InnoDB为动态快照分配的内存。memory/clone/data:跟踪克隆操作期间克隆插件分配的内存。
有关使用性能模式监视内存使用情况的信息,请参见 第26.12.18.10节“内存摘要表”。
Com_clone状态变量
该 Com_clone 状态变量提供的计数 CLONE语句执行。
有关更多信息,请参见第5.1.10节“服务器状态变量”中有关Com_xxx 语句计数器变量 的讨论 。




