1.在使用 Clone Plugin 时,注意以下限制:
克隆期间,会阻塞 DDL 。同样,DDL 也会阻塞克隆命令的执行。不过从 MySQL 8.0.27 开始,克隆命令不会阻塞 Donor 上的 DDL 。
- Clone Plugin 不会拷贝 Donor 的配置参数。
- Clone Plugin 不会拷贝 Donor 的 Binlog。
- Clone Plugin 只会拷贝 InnoDB 表的数据,对于其它存储引擎的表,只会拷贝表结构。
- Donor 实例中如果有表通过 DATA DIRECTORY 子句设置了绝对路径,在进行本地克隆时,会提示文件已存在。在进行远程克隆时,绝对路径必须存在且有可写权限。
- 不允许通过 MySQL Router 连接 Donor 实例。
- 执行 CLONE INSTANCE 操作时,指定的 Donor 端口不能为 X Protocol 端口。
除此之外,在进行远程克隆时,还有如下要求:
-
MySQL 版本(包括小版本)必须一致。
-
主机的操作系统和位数(32 位,64 位)必须一致。两者可基于参数 version_compile_os,version_compile_machine 获取。
-
Recipient 必须有足够的磁盘空间存储克隆数据。
-
字符集相关参数必须一致,具体包括:character_set_server(字符集),collation_server(校验集)和 character_set_filesystem。
-
参数 innodb_page_size 必须一致。
-
无论是 Donor ,还是 Recipient ,同一时间,只能执行一个克隆操作。
-
Recipient 需要重启,所以其必须通过 mysqld_safe 或 systemd 等进程管理工具进行管理,否则的话,实例关闭后,需手动拉起。
2.clone plugin与xtrabackup的异同
下面看看 Clone Plugin 和 XtraBackup 的异同点:
- 在实现上,两者都有 FILE COPY 和 REDO COPY 阶段,但 Clone Plugin 比 XtraBackup 多了一个 PAGE COPY 阶段。由此带来的好处是,Clone Plugin 的恢复速度比XtraBackup 快。
- XtraBackup 没有 Redo Archiving 特性,有可能出现未拷贝的 Redo 日志被覆盖的情况。
- GTID 下建立复制, Clone Plugin 无需额外执行 SET GLOBAL GTID_PURGED 操作。
3.clone plugin的参数解析
- clone_autotune_concurrency
是否自动调节克隆过程中并发线程数的数量,默认为 ON ,此时,最大线程数由参数 clone_max_concurrency 控制。若设置为 OFF ,并发线程数将是固定的,等于 clone_max_concurrency 。后者的默认值为 16 。
- clone_block_ddl
克隆过程中是否对 Donor 实例加备份锁。如果加了,则会阻塞 DDL。默认为 OFF,不加。该参数是 MySQL 8.0.27 引入的。
- clone_delay_after_data_drop
Drop 完用户表空间,等待多久才执行数据拷贝操作。引入该参数的初衷是某些文件系统(如 VxFS)是异步释放空间的。如果 Drop 完用户表空间,就马上执行数据拷贝操作,有可能会因为空间不足而导致克隆失败。该参数是 MySQL 8.0.29 引入的,默认为 0,不等待。
- clone_buffer_size
本地克隆时,中转缓冲区的大小,默认 4M 。缓冲区越大,备份速度越快,相应地,对磁盘 IO 的压力也越大。
- clone_ddl_timeout
克隆操作需要获取备份锁。在执行 CLONE 命令时,如果有 DDL 正在执行,则 CLONE 命令会被阻塞,等待获取备份锁(Waiting for backup lock)。等待的最大时长由 Recipient 实例上的 clone_ddl_timeout 决定,该参数默认为 300s。如果在这个时间内还没获取到备份锁,CLONE 命令会失败,且提示 ERROR 3862 (HY000): Clone Donor Error: 1205 : Lock wait timeout exceeded; try restarting transaction.需要注意的是,在执行 DDL 时,如果有 CLONE 命令在执行,DDL 同样也会因为备份锁而阻塞,只不过,DDL 操作的等待时长由lock_wait_timeout 决定,该参数默认为 31536000s,即 365 天。
- clone_donor_timeout_after_network_failure
远程克隆时,如果出现了网络错误,克隆操作不会马上终止,而是会等待一段时间。如果在这个时间内,网络恢复了,操作会继续进行。在 MySQL 8.0.24 之前,等待时间是固定的 5 min。从 MySQL 8.0.24 开始,可通过 clone_donor_timeout_after_network_failure 设置这个时间,默认是 5 min。
- clone_enable_compression
远程克隆传输数据时,是否开启压缩。默认为 OFF 。开启压缩能节省网络带宽,但相应地,会增加 CPU 消耗。
- clone_max_data_bandwidth
远程克隆时,可允许的最大数据拷贝速率,单位 MB/s 。默认为 0,不限制。如果 Donor 的磁盘 IO 存在瓶颈,可通过该参数来限速。
注意,这里限制的只是单个线程的拷贝速率。如果是多个线程并行拷贝,实际最大拷贝速率 = clone_max_data_bandwidth * 线程数。
- clone_max_network_bandwidth
远程克隆时,可允许的最大网络传输速率,单位 MiB/s 。默认为 0,不限制。如果网络带宽存在瓶颈,可通过该参数来限速。
- clone_valid_donor_list
在 Recipient 上设置 Donor 白名单,Recipient 只能克隆白名单中指定的实例。在执行克隆操作之前,必须设置该参数。
- clone_ssl_ca,clone_ssl_cert,clone_ssl_key
SSL 相关。
标签:插件,克隆,plugin,Clone,参数,Donor,拷贝,clone From: https://www.cnblogs.com/zmc60/p/17279560.html