mysql克隆

  1. 本地克隆(Local Cloning)
    1.1 克隆插件安装
mysql> INSTALL PLUGIN clone SONAME 'mysql_clone.so';
或者
[mysqld]
plugin-load-add=mysql_clone.so
clone=FORCE_PLUS_PERMANENT
# 查看克隆插件加载情况
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';

1.2 创建克隆专用用户

mysql> create user clone_user@'%' identified by 'password';
# backup_admin权限是mysql 8.0才有的备份导出的权限;
mysql> grant backup_admin on *.* to 'clone_user';

1.3 进行本地克隆操作

mkdir -p /clone
chown -R mysql.mysql  /clone
mysql -uclone_user -p1
mysql> clone local data directory = '/clone/test';
# 完成本地数据库目录的克隆操作,如果出现异常需要删除克隆目录,在进行重新克隆操作

1.4 查看本地克隆状态

mysql>  select stage,state,end_time from performance_schema.clone_progress;

1.5 实现克隆日志观测

mysql>  set global log_error_verbosity=3;
# log_warnings 为0, 表示不记录告警信息。
# log_warnings 为1, 表示告警信息写入错误日志。
# log_warnings 大于1, 表示各类告警信息,例如有关网络故障的信息和重新连接信息写入错误日志。

1.6 启动运行克隆实例

mysqld_safe --datadir=/clone/test --port=5555 --socket=/tmp/mysql5555.sock --user=mysql --mysqlx=off &
# 核实查看克隆后数据库信息
  1. 远程克隆(Remote Cloning)
    2.1 克隆插件安装
 mysql> INSTALL PLUGIN clone SONAME 'mysql_clone.so';
或者
[mysqld]
plugin-load-add=mysql_clone.so
clone=FORCE_PLUS_PERMANENT
# 克隆插件信息需要在克隆主机的捐赠者和接受者上都进行安装

2.2 查看克隆插件加载情况
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';
2.3 创建克隆专用用户

# 在克隆捐赠者主机上进行授权
mysql> create user test_jz@'%' identified by '1';
mysql> grant backup_admin on *.* to test_jz@'%' ;
# backup_admin权限是mysql 8.0才有的备份导出的权限

# 在克隆接收者主机上进行授权
mysql> create user test_js@'%' identified by '1';
mysql> grant clone_admin on *.* to test_js@'%' ;
# clone_admin权限是mysql 8.0才有的克隆同步数据的权限;
# 说明:可以在克隆捐赠者主机上和接收者主机上均创建两个用户信息,防止克隆同步数据后,接收者主机上不再含有接收用户信息;

2.4 进行远程克隆操作
在克隆接收者主机上进行设置

mysql> set global clone_valid_donor_list='10.0.0.51:3306';
# 设置克隆同步数据的信任列表

# 在克隆接收者主机上进行克隆
mysql -utest_js -p1 -h10.0.0.52 -P3306
mysql> clone instance from test_jz@'10.0.0.51':3306 identified by '1';
# 在接收者主机上实现远程克隆操作

2.5 观测本地克隆状态

mysql>  select stage,state,end_time from performance_schema.clone_progress;
# 当克隆数据量比较大的时候,可以使用此SQL语句进行克隆状态查看,在克隆接收者主机上进行查看
mysql> show databases;
# 此时克隆接收者主机上查看到的数据信息,与克隆捐赠者主机上查看到的数据信息一致,即远程克隆操作完成
posted @ 2025-09-16 09:49  运维实习生  阅读(31)  评论(0)    收藏  举报