栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL Clone插件:监视克隆操作与使用限制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL Clone插件:监视克隆操作与使用限制

作者公众号,欢迎一起交流。

 MySQL克隆插件介绍这篇文章对Clone插件做了简单的介绍,并演示了两种克隆操作:本地克隆和远程克隆。那克隆操作在执行过程中,如何对其监视、如何对其进行终止呢,使用克隆插件有什么限制呢?本篇将对这些话题进行介绍。

监视克隆操作

克隆操作在执行过程中,可以通过以下几个方面对其进行监视:

  • 使用Performace_Schema Clone表
  • 使用Performance_Schema Stage事件
  • 使用Performance_Schema Clone Instrumentation
使用Performace_Schema Clone表对克隆操作进行监视

在克隆操作进行过程中,可以使用clone_status和clone_progress查看克隆操作的状态以及进度,但是,这两个clone表只能在recipient MySQL服务器实例进行查看,不能在donor MySQL服务器实例查看。

查看clone_status表:

mysql> select * from performance_schema.clone_statusG;

*************************** 1. row ***************************

ID: 1

PID: 0

STATE: Completed

BEGIN_TIME: 2021-12-04 15:05:21.382

END_TIME: 2021-12-04 15:05:55.007

SOURCE: 192.168.56.81:3306

DESTINATION: LOCAL INSTANCE

ERROR_NO: 0

ERROR_MESSAGE:

BINLOG_FILE: mysql-bin.000009

BINLOG_POSITION: 196

GTID_EXECUTED: 6f92ea48-4ff1-11ec-aaa5-08002790c7d5:1-66

1 row in set (0.00 sec)



ERROR:

No query specified

说明:

  • ID:当前克隆操作的唯一识别符
  • PID:执行克隆操作的会话的Process list ID
  • STATE:克隆操作的当前状态,状态包括:Not Started,In Progress,Completed和Failed
  • BEGIN_TIME:克隆操作的开始时间
  • END_TIME:克隆操作的结束时间,若显示为NULL,表示还未结束
  • SOURCE:donor MySQL服务器地址,以HOST:PORT方式显示
  • DESTINATION:克隆到的目录
  • ERROR_NO:若克隆操作失败,报告一个错误号
  • ERROR_MESSAGE:若克隆操作失败,报个对应的错误信息
  • BINLOG_FILE:克隆的binlog文件的文件名
  • BINLOG_POSITION:克隆的binlog文件的位点
  • GTID_EXECUTED:最后一个克隆的事务的GTID值

查看clone_progress表:

mysql> select * from performance_schema.clone_progress;

+------+-----------+-----------+----------------------------+----------------------------+---------+------------+------------+------------+------------+---------------+

| ID | STAGE | STATE | BEGIN_TIME | END_TIME | THREADS | ESTIMATE | DATA | NETWORK | DATA_SPEED | NETWORK_SPEED |

+------+-----------+-----------+----------------------------+----------------------------+---------+------------+------------+------------+------------+---------------+

| 1 | DROp DATA | Completed | 2021-12-04 15:05:21.675889 | 2021-12-04 15:05:22.982978 | 1 | 0 | 0 | 0 | 0 | 0 |

| 1 | FILE COPY | Completed | 2021-12-04 15:05:22.983424 | 2021-12-04 15:05:46.185189 | 2 | 4379302470 | 4379302470 | 4379548465 | 0 | 0 |

| 1 | PAGE COPY | Completed | 2021-12-04 15:05:46.185348 | 2021-12-04 15:05:46.317438 | 2 | 0 | 0 | 197 | 0 | 0 |

| 1 | REDO COPY | Completed | 2021-12-04 15:05:46.317639 | 2021-12-04 15:05:46.446903 | 2 | 2560 | 2560 | 3129 | 0 | 0 |

| 1 | FILE SYNC | Completed | 2021-12-04 15:05:46.447083 | 2021-12-04 15:05:49.585813 | 2 | 0 | 0 | 0 | 0 | 0 |

| 1 | RESTART | Completed | 2021-12-04 15:05:49.585813 | 2021-12-04 15:05:53.645668 | 0 | 0 | 0 | 0 | 0 | 0 |

| 1 | RECOVERY | Completed | 2021-12-04 15:05:53.645668 | 2021-12-04 15:05:55.007075 | 0 | 0 | 0 | 0 | 0 | 0 |

+------+-----------+-----------+----------------------------+----------------------------+---------+------------+------------+------------+------------+---------------+

7 rows in set (0.00 sec)

说明:

  • ID:当前克隆操作的唯一识别符
  • STAGE:当前克隆阶段的名称,阶段包含:DROP DATA,FILE COPY,PAGE COPY,REDO COPY,FILE SYNC,RESTART和RECOVERY
  • BEGIN_TIME:当前克隆阶段的开始时间,若为NULL,则该阶段未开始
  • END_TIME:当前克隆阶段的结束时间,若为NULL,则该阶段未结束
  • THREADS:当前克隆阶段使用的并发线程数
  • ESTIMATE:当前克隆阶段评估的以bytes为单位的数据量大小
  • DATA:当前克隆阶段传输的以bytes为单位的数据量大小
  • NETWORK:当前克隆阶段网络传输的以bytes为单位的数据量大小
  • DATA_SPEED:当前真实的数据传输的速度,单位是每秒字节数
  • NETWORK_SPEED:当前网络传输的速度,单位是每秒字节数

使用Performace_Schema Stage Events对克隆操作进行监视

使用Stage Events可以在donor 和recipient MySQL 服务器实例上对克隆操作进行监控,共有三个Stage Events,分别是:

  • stage/innodb/clone (file copy)
  • stage/innodb/clone (page copy)
  • stage/innodb/clone (redo copy)

欲使用Stage Events进行监控,需要开启instruments和相关的consumers,可参照如下:

1)激活stage/innodb/clone% instruments,默认是激活的,若没激活,则需进行激活

mysql> UPDATE performance_schema.setup_instruments SET enabled='YES'

-> WHERe NAME LIKE 'stage/innodb/clone%';

Query OK, 0 rows affected (0.00 sec)

Rows matched: 3 Changed: 0 Warnings: 0

2)激活consumers表,这样可在events_stages_current、events_stages_history、events_stages_history_long查看

mysql> UPDATE performance_schema.setup_consumers SET enabled='YES'

-> WHERe NAME LIKE '%stage%';

Query OK, 0 rows affected (0.00 sec)

Rows matched: 3 Changed: 0 Warnings: 0

3)执行克隆操作

mysql> clone local data directory='/mysql/clonedata/test';

Query OK, 0 rows affected (17.80 sec)

4)查看Stage Events表

mysql> SELECT event_name,work_completed,work_estimated

-> FROM performance_schema.events_stages_history

-> WHERe event_name LIKE 'stage/innodb/clone%';

+--------------------------------+----------------+----------------+

| event_name | work_completed | work_estimated |

+--------------------------------+----------------+----------------+

| stage/innodb/clone (file copy) | 4177 | 4177 |

| stage/innodb/clone (page copy) | 0 | 0 |

| stage/innodb/clone (redo copy) | 1 | 1 |

+--------------------------------+----------------+----------------+

3 rows in set (0.00 sec)
使用Performance_Schema Clone Instrumentation

对于对克隆操作更高级的性能监控,克隆操作支持的Instrument如下,使用时需要对其激活:

mysql> SELECt NAME,enabled FROM performance_schema.setup_instruments t WHERe t.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 |

+----------------------------------------------+---------+

13 rows in set (0.00 sec)
停止克隆操作

克隆进行过程中,由于各种原因需要终止克隆操作,可以使用KILL QUERY processlist_id进行停止,PID可通过如下方式获得(也可以通过PROCESSLIST表、SHOW PROCESSLIST或THREAD表获得):

mysql> select * from performance_schema.clone_statusG;

*************************** 1. row ***************************

ID: 1

PID: 10

STATE: In Progress

BEGIN_TIME: 2021-12-12 10:12:36.801

END_TIME: NULL

SOURCE: LOCAL INSTANCE

DESTINATION: /mysql/clonedata/test/

ERROR_NO: 0

ERROR_MESSAGE:

BINLOG_FILE:

BINLOG_POSITION: 0

GTID_EXECUTED:

1 row in set (0.00 sec)



ERROR:

No query specified
使用克隆插件的限制

使用克隆插件可以给数据迁移、主从环境快速搭建等带来很大便利,但它的使用也有一定的限制,具体如下:

  • 在MySQL 8.0.27之前,在克隆操作期间不允许对donor和recipient执行DDL(包括TRUNCATE)操作,从MySQL 8.0.27开始,默认情况下允许在donor上执行并发DDL;
  • 执行clone操作的MySQL服务器版本必须相同,小版本也要相同;
  • 一次只能克隆一个MySQL实例;
  • 不支持mysqlx_port指定的X协议端口用于远程克隆操作;
  • 不支持克隆MySQL服务器配置文件;
  • 不支持克隆二进制日志文件;
  • 只克隆存储在InnoDB引擎中的数据;
  • 不支持通过MySQL Router连接到donor的MySQL服务器实例;
  • 本地克隆操作不支持使用绝对路径创建的一般表空间,因为在同一路径下克隆的表空间文件会存在冲突;

参考:官方网站(https://dev.mysql.com/doc/refman/8.0/en/clone-plugin-limitations.html)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658013.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号