MySQL8 中文参考(二十二)(3)https://developer.aliyun.com/article/1566119
等待仪器
性能模式等待仪器跟踪需要时间的事件。克隆等待事件仪器包括:
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 (file copy)
: 表示克隆操作的文件复制阶段的进度。stage/innodb/clone (redo copy)
: 表示克隆操作的重做复制阶段的进度。stage/innodb/clone (page copy)
: 表示克隆操作的页面复制阶段的进度。
关于使用阶段事件监控克隆操作的信息,请参阅使用性能模式阶段事件监控克隆操作。关于一般监控阶段事件的信息,请参阅第 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 节,“内存摘要表”。
Com_clone 状态变量
Com_clone
状态变量提供了 CLONE
语句执行次数的计数。
欲了解更多信息,请参考关于 Com_xxx
语句计数变量的讨论,见 第 7.1.10 节,“服务器状态变量”。
7.6.7.11 停止克隆操作
如有必要,您可以使用KILL QUERY *
processlist_id*
语句停止克隆操作。
在接收端的 MySQL 服务器实例中,您可以从clone_status
表的PID
列中检索克隆操作的进程列表标识符(PID)。
mysql> SELECT * FROM performance_schema.clone_status\G *************************** 1\. row *************************** ID: 1 PID: 8 STATE: In Progress BEGIN_TIME: 2019-07-15 11:58:36.767 END_TIME: NULL SOURCE: LOCAL INSTANCE DESTINATION: /*path/to/clone_dir*/ ERROR_NO: 0 ERROR_MESSAGE: BINLOG_FILE: BINLOG_POSITION: 0 GTID_EXECUTED:
您还可以从INFORMATION_SCHEMA
PROCESSLIST
表的ID
列,SHOW PROCESSLIST
输出的Id
列,或性能模式threads
表的PROCESSLIST_ID
列中检索进程列表标识符。这些获取 PID 信息的方法可用于捐赠者或接收者的 MySQL 服务器实例。
dev.mysql.com/doc/refman/8.0/en/clone-plugin-option-variable-reference.html
7.6.7.12 克隆系统变量参考
表 7.7 克隆系统变量参考
名称 | 命令行 | 选项文件 | 系统变量 | 状态变量 | 变量范围 | 动态 |
自动调整并发性 | 是 | 是 | 是 | 全局 | 是 | |
克隆块 DDL | 是 | 是 | 是 | 全局 | 是 | |
克隆缓冲区大小 | 是 | 是 | 是 | 全局 | 是 | |
DDL 超时 | 是 | 是 | 是 | 全局 | 是 | |
数据丢弃后的延迟 | 是 | 是 | 是 | 全局 | 是 | |
网络故障后的捐赠者超时 | 是 | 是 | 是 | 全局 | 是 | |
启用压缩 | 是 | 是 | 是 | 全局 | 是 | |
最大并发数 | 是 | 是 | 是 | 全局 | 是 | |
最大数据带宽 | 是 | 是 | 是 | 全局 | 是 | |
克隆最大网络带宽 | 是 | 是 | 是 | 全局 | 是 | |
SSL CA | 是 | 是 | 是 | 全局 | 是 | |
SSL 证书 | 是 | 是 | 是 | 全局 | 是 | |
SSL 密钥 | 是 | 是 | 是 | 全局 | 是 | |
克隆有效捐赠者列表 | 是 | 是 | 是 | 全局 | 是 | |
名称 | 命令行 | 选项文件 | 系统变量 | 状态变量 | 变量范围 | 动态 |
原文:
dev.mysql.com/doc/refman/8.0/en/clone-plugin-options-variables.html
7.6.7.13 克隆系统变量
本节描述了控制克隆插件操作的系统变量。如果在启动时指定的值不正确,则克隆插件可能无法正确初始化,服务器也不会加载它。在这种情况下,服务器可能还会因为不识别它们而为其��克隆设置产生错误消息。
每个系统变量都有一个默认值。系统变量可以在服务器启动时使用命令行选项或选项文件进行设置。它们可以使用SET
语句在运行时动态更改,这使您能够修改服务器的操作而无需停止和重新启动它。
通常,设置全局系统变量的运行时值需要SYSTEM_VARIABLES_ADMIN
权限(或已弃用的SUPER
权限)。有关更多信息,请参见第 7.1.9.1 节,“系统变量权限”。
克隆变量在执行克隆操作的接收方 MySQL 服务器实例上进行配置。
clone_autotune_concurrency
命令行格式 | --clone-autotune-concurrency |
引入 | 8.0.17 |
系统变量 | clone_autotune_concurrency |
范围 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 布尔 |
默认值 | ON |
- 当启用
clone_autotune_concurrency
(默认情况下),为了优化数据传输速度,为远程克隆操作动态生成额外的线程。此设置仅适用于接收方 MySQL 服务器实例。在克隆操作期间,线程数逐渐增加,直至达到当前线程数的两倍目标。在每个增量评估数据传输速度的影响。根据以下规则,该过程要么继续,要么停止:
- 如果数据传输速度在增量增加时下降超过 5%,则该过程停止。
- 如果在达到目标的 25%后有至少 5%的改进,则该过程继续。否则,该过程停止。
- 如果在达到目标的 50%后有至少 10%的改进,则该过程继续。否则,该过程停止。
- 如果在达到目标后有至少 25%的改进,则该过程继续,朝着当前线程数的两倍新目标前进。否则,该过程停止。
- 自动调整过程不支持减少线程数。
clone_max_concurrency
变量定义了可以生成的最大线程数。
如果禁用clone_autotune_concurrency
,clone_max_concurrency
定义了远程克隆操作生成的线程数。 clone_buffer_size
命令行格式 | --clone-buffer-size |
引入版本 | 8.0.17 |
系统变量 | clone_buffer_size |
作用域 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 整数 |
默认值 | 4194304 |
最小值 | 1048576 |
最大值 | 268435456 |
单位 | 字节 |
- 定义本地克隆操作期间传输数据时使用的中间缓冲区的大小。默认值为 4 兆字节(MiB)。较大的缓冲区大小可以允许 I/O 设备驱动程序并行获取数据,从而提高克隆性能。
clone_block_ddl
命令行格式 | --clone-block-ddl |
引入版本 | 8.0.27 |
系统变量 | clone_block_ddl |
作用域 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 布尔 |
默认值 | OFF |
- 在克隆操作期间在捐赠者 MySQL 服务器实例上启用独占备份锁,这会阻止捐赠者上的并发 DDL 操作。参见第 7.6.7.4 节,“克隆和并发 DDL”。
clone_delay_after_data_drop
命令行格式 | --clone-delay-after-data-drop |
引入版本 | 8.0.29 |
系统变量 | clone_delay_after_data_drop |
作用域 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 3600 |
单位 | 字节 |
- 指定在远程克隆操作开始时,在接收 MySQL 服务器实例上删除现有数据后立即延迟的时间段。延迟旨在在从捐赠者 MySQL 服务器实例克隆数据之前为接收主机上的文件系统释放足够的空间。某些文件系统(如 VxFS)会在后台进程中异步释放空间。在这些文件系统上,在删除现有数据后太快克隆数据可能导致由于空间不足而克隆操作失败。最大延迟时间为 3600 秒(1 小时)。默认设置为 0(无延迟)。
此变量仅适用于远程克隆操作,并配置在接收 MySQL 服务器实例上。 clone_ddl_timeout
命令行格式 | --clone-ddl-timeout |
引入版本 | 8.0.17 |
系统变量 | clone_ddl_timeout |
范围 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 整数 |
默认值 | 300 |
最小值 | 0 |
最大值 | 2592000 |
单位 | 秒 |
- 克隆操作等待备份锁的时间(以秒为单位)。备份锁在执行克隆操作时阻止并发 DDL。此设置应用于捐赠者和接收者 MySQL 服务器实例。
设置为 0 意味着克隆操作不会等待备份锁。在这种情况下,执行并发的 DDL 操作可能会导致克隆操作失败。
在 MySQL 8.0.27 之前,在克隆操作期间,备份锁会阻止捐赠者和接收者上的并发 DDL 操作,并且在当前 DDL 操作完成之前,克隆操作无法继续进行。从 MySQL 8.0.27 开始,如果clone_block_ddl
变量设置为OFF
(默认值),则在克隆操作期间允许在捐赠者上进行并发 DDL 操作。在这种情况下,克隆操作不必等待捐赠者上的备份锁。参见第 7.6.7.4 节,“克隆和并发 DDL”。 clone_donor_timeout_after_network_failure
命令行格式 | --clone-donor-timeout-after-network-failure |
引入版本 | 8.0.24 |
系统变量 | clone_donor_timeout_after_network_failure |
范围 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 整数 |
默认值 | 5 |
最小值 | 0 |
最大值 | 30 |
单位 | 分钟 |
- 定义了在网络故障后,捐赠方允许接收方重新连接并重新启动克隆操作的时间长度(以分钟为单位)。更多信息请参见第 7.6.7.9 节,“远程克隆操作失败处理”。
此变量设置在捐赠 MySQL 服务器实例上。在接收 MySQL 服务器实例上设置它没有任何效果。 clone_enable_compression
命令行格式 | --clone-enable-compression |
引入版本 | 8.0.17 |
系统变量 | clone_enable_compression |
范围 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 布尔 |
默认值 | OFF |
- 启用在远程克隆操作期间在网络层对数据进行压缩。压缩可以节省网络带宽,但会消耗 CPU。启用压缩可能会提高数据传输速率。此设置仅应用于接收 MySQL 服务器实例。
clone_max_concurrency
命令行格式 | --clone-max-concurrency |
引入版本 | 8.0.17 |
系统变量 | clone_max_concurrency |
范围 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 整数 |
默认值 | 16 |
最小值 | 1 |
最大值 | 128 |
单位 | 线程 |
- 定义了远程克隆操作的最大并发线程数。默认值为 16。更多的线程数可以提高克隆性能,但也会减少允许的同时客户端连接数,这可能会影响现有客户端连接的性能。此设置仅应用于接收 MySQL 服务器实例。
如果启用了clone_autotune_concurrency
(默认情况下),clone_max_concurrency
是可以为远程克隆操作动态生成的最大线程数。如果禁用了clone_autotune_concurrency
,clone_max_concurrency
定义了为远程克隆操作生成的线程数。
推荐远程克隆操作每个线程的最小数据传输速率为 1 Mebibyte(MiB)每秒。远程克隆操作的数据传输速率由clone_max_data_bandwidth
变量控制。 clone_max_data_bandwidth
命令行格式 | --clone-max-data-bandwidth |
引入版本 | 8.0.17 |
系统变量 | clone_max_data_bandwidth |
作用范围 | 全局 |
动态 | 是 |
SET_VAR Hint Applies |
否 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 1048576 |
单位 | MiB/秒 |
- 定义了远程克隆操作每秒的最大数据传输速率(以 Mebibytes(MiB)为单位)。此变量有助于管理克隆操作的性能影响。仅当捐赠端磁盘 I/O 带宽饱和,影响性能时,才应设置限制。值为 0 表示“无限制”,允许克隆操作以最高可能的数据传输速率运行。此设置仅适用于接收端 MySQL 服务器实例。
每个线程的最小数据传输速率为每秒 1 MiB。例如,如果有 8 个线程,则最小传输速率为每秒 8 MiB。clone_max_concurrency
变量控制了远程克隆操作生成的最大线程数。
由clone_max_data_bandwidth
指定的请求数据传输速率可能与performance_schema.clone_progress
表中的DATA_SPEED
列报告的实际数据传输速率不同。如果您的克隆操作未达到所需的数据传输速率,并且有可用带宽,请检查接收端和捐赠端的 I/O 使用情况。如果有未充分利用的带宽,则 I/O 是下一个最可能成为瓶颈的地方。 clone_max_network_bandwidth
命令行格式 | --clone-max-network-bandwidth |
引入版本 | 8.0.17 |
系统变量 | clone_max_network_bandwidth |
作用范围 | 全局 |
动态 | 是 |
SET_VAR Hint Applies |
否 |
类型 | 整数 |
默认值 | 0 |
最小值 | 0 |
最大值 | 1048576 |
单位 | MiB/秒 |
- 指定远程克隆操作每秒的最大近似网络传输速率(以 mebibytes(MiB)为单位)。此变量可用于管理克隆操作对网络带宽的性能影响。仅当网络带宽饱和,影响捐赠��实例上的性能时才应设置该值。值为 0 表示“无限制”,允许以网络上最高可能的数据传输速率进行克隆,提供最佳性能。此设置仅适用于接收端 MySQL 服务器实例。
clone_ssl_ca
命令行格式 | --clone-ssl-ca=file_name |
引入版本 | 8.0.14 |
系统变量 | clone_ssl_ca |
作用范围 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 文件名 |
默认值 | 空字符串 |
- 指定证书颁发机构(CA)文件的路径。用于配置远程克隆操作的加密连接。此设置在接收端配置,并在连接到捐赠者时使用。
clone_ssl_cert
命令行格式 | --clone-ssl-cert=file_name |
引入版本 | 8.0.14 |
系统变量 | clone_ssl_cert |
作用范围 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 文件名 |
默认值 | 空字符串 |
- 指定公钥证书的路径。用于配置远程克隆操作的加密连接。此设置在接收端配置,并在连接到捐赠者时使用。
clone_ssl_key
命令行格式 | --clone-ssl-key=file_name |
引入版本 | 8.0.14 |
系统变量 | clone_ssl_key |
作用范围 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 文件名 |
默认值 | 空字符串 |
- 指定私钥文件的路径。用于配置远程克隆操作的加密连接。此设置在接收端配置,并在连接到捐赠者时使用。
clone_valid_donor_list
命令行格式 | --clone-valid-donor-list=value |
引入版本 | 8.0.17 |
系统变量 | clone_valid_donor_list |
作用范围 | 全局 |
动态 | 是 |
SET_VAR 提示适用 |
否 |
类型 | 字符串 |
默认值 | NULL |
- 定义远程克隆操作的有效捐赠主机地址。此设置应用于接收方 MySQL 服务器实例。允许以逗号分隔的值列表,格式如下:“
HOST1:PORT1,HOST2:PORT2,HOST3:PORT3
”。不允许有空格。clone_valid_donor_list
变量通过控制克隆数据源提供了一层安全性。配置clone_valid_donor_list
所需的权限与执行远程克隆操作所需的权限不同,这允许将这些责任分配给不同的角色。配置clone_valid_donor_list
需要SYSTEM_VARIABLES_ADMIN
权限,而执行远程克隆操作需要CLONE_ADMIN
权限。
不支持 Internet Protocol version 6 (IPv6)地址格式。可以使用 IPv6 地址的别名。IPv4 地址可以直接使用。
原文:
dev.mysql.com/doc/refman/8.0/en/clone-plugin-limitations.html
7.6.7.14 克隆插件限制
克隆插件受到以下限制:
- 无法从不同的 MySQL 服务器系列克隆实例。例如,您不能在 MySQL 8.0 和 MySQL 8.4 之间克隆,但可以在同一系列内克隆,例如 MySQL 8.0.37 和 MySQL 8.0.42。在 8.0.37 之前,点发布号也必须匹配,因此不允许克隆类似于 8.0.36 到 8.0.42 或反之亦然。
- 在 MySQL 8.0.27 之前,在克隆操作期间不允许在捐赠者和接收者上进行 DDL,包括
TRUNCATE TABLE
。在选择数据源时应考虑此限制。一种解决方法是使用专用的捐赠者实例,在克隆数据时可以阻止 DDL 操作。允许并发 DML。
从 MySQL 8.0.27 开始,默认情况下允许在捐赠者上进行并发 DDL。对于捐赠者上的并发 DDL 的支持由clone_block_ddl
变量控制。请参见第 7.6.7.4 节,“克隆和并发 DDL”。 - 仅在 MySQL 8.0.26 及更高版本中支持从捐赠者 MySQL 服务器实例克隆到相同版本和发布的热修复 MySQL 服务器实例。
- 一次只能克隆一个 MySQL 实例。不支持在单个克隆操作中克隆多个 MySQL 实例。
- 未支持远程克隆操作(在
CLONE INSTANCE
语句中指定捐赠者 MySQL 服务器实例的端口号时)的mysqlx_port
指定的 X 协议端口。 - 克隆插件不支持克隆 MySQL 服务器配置。接收方 MySQL 服务器实例保留其配置,包括持久化的系统变量设置(参见第 7.1.9.3 节,“持久化系统变量”)。
- 克隆插件不支持克隆二进制日志。
- 克隆插件仅克隆存储在
InnoDB
中的数据。不会克隆其他存储引擎的数据。存储在任何模式中的MyISAM
和CSV
表将被克隆为空表。 - 通过 MySQL 路由器连接到捐赠者 MySQL 服务器实例不受支持。
- 本地克隆操作不支持使用绝对路径创建的通用表空间的克隆。克隆的表空间文件与源表空间文件具有相同路径会引起冲突。
MySQL8 中文参考(二十二)(5)https://developer.aliyun.com/article/1566121