linux 安装mysql8_MySQL 8.0的新特性-克隆插件

这是学习笔记的第 2064 篇文章

今天在睡觉前想起了MySQL 8.0里面的一个很好的特性,克隆插件。这篇文章介绍的很细致,可以参考。

技术分享 | 实战 MySQL 8.0.17 Clone Plugin

当然我算是比较懒的,喜欢追求性价比,即最少的时间做最多的事情。今天也算是用一个小时完整的挑战下自己,来测试一个特性。

从我冒出想法要测试这个特性,发现8.0的软件还没有安装,要整个部署下来,那个时间是很漫长的。我打开MySQL官网,开始下载软件。

03125a2303caa88926c31422cb635750.png

结果一看网速才20多K,按照这个速度,500多M的文件需要几个小时,所以果断放弃了。但是爱偷懒的我有另外一个好方法,那就是合理利用资源优势,比如我可以使用云服务器,比如这里使用的是腾讯的服务器,如果配置了腾讯云的软件站点,那速度是杠杠的,所以我从下载到初始化完成,整个过程不到15分钟。

7c1c8f74e367b42e6394c7ec047f8b1d.png

我们来简单说下克隆插件,这个插件从我的理解中和Oracle的热备,Data Guard的文件复制传输很类似,所以试了下这个特性都几乎没有花费太多的功夫就直接上手了。

首先直接安装插件。

mysql> INSTALL PLUGIN clone SONAME 'mysql_clone.so';

Query OK, 0 rows affected (0.48 sec)

同时需要创建一个账户

CREATE USER clone_user@'%' IDENTIFIED by 'password';

GRANT BACKUP_ADMIN ON *.* TO 'clone_user';

使用如下的方式开始克隆,这个是本地克隆的操作方法:

/usr/local/mysql-8.0.17-linux-glibc2.12-x86_64/bin/mysql -uclone_user -ppassword --port=33081 -h127.0.0.1

> CLONE LOCAL DATA DIRECTORY = '/data/mysql_clone/clone_dir';

其中目录clone_dir是不存在的,在克隆的时候会创建。

可以通过如下的方式查看克隆的进度。

mysql> SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;

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

| STAGE | STATE | END_TIME |

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

| DROP DATA | Completed | 2019-08-08 23:22:05.878982 |

| FILE COPY | Completed | 2019-08-08 23:22:06.548661 |

| PAGE COPY | Completed | 2019-08-08 23:22:06.627186 |

| REDO COPY | Completed | 2019-08-08 23:22:06.627476 |

| FILE SYNC | Completed | 2019-08-08 23:22:07.531942 |

| RESTART | Not Started | NULL |

| RECOVERY | Not Started | NULL |

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

7 rows in set (0.03 sec)

我们可以直接启动这个克隆后的实例,假设端口是33083

/usr/local/mysql-8.0.17-linux-glibc2.12-x86_64/bin/mysqld_safe --defaults-file=/data/mysql_clone/clone_dir/my.cnf &

会得到如下的列表。

mysql> show databases;

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

| Database |

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

| information_schema |

| mysql |

| performance_schema |

| sys |

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

4 rows in set (0.00 sec)

远程克隆的效果就更明显了,不过需要配置两类账户,一个是源端,一个是目标端。

源端的配置:

CREATE USER clone_user2 IDENTIFIED by 'password1';

GRANT BACKUP_ADMIN ON *.* TO 'clone_user2'@'%';

目标端的配置:

CREATE USER clone_user2@'%' IDENTIFIED by 'password2';

GRANT CLONE_ADMIN ON *.* TO 'clone_user2'@'%';

SET GLOBAL clone_valid_donor_list = '127.0.0.1:33081';

远程克隆在目标端操作:

CLONE INSTANCE FROM clone_user2@'127.0.0.1':33081

IDENTIFIED BY 'password1';

可用通过如下的方式查看进度:

mysql> SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;

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

| STAGE | STATE | END_TIME |

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

| DROP DATA | Completed | 2019-08-08 23:41:44.591132 |

| FILE COPY | Completed | 2019-08-08 23:41:45.248866 |

| PAGE COPY | Completed | 2019-08-08 23:41:45.539937 |

| REDO COPY | Completed | 2019-08-08 23:41:45.646024 |

| FILE SYNC | Completed | 2019-08-08 23:41:46.637973 |

| RESTART | Completed | 2019-08-08 23:41:51.332175 |

| RECOVERY | Completed | 2019-08-08 23:41:53.916695 |

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

7 rows in set (0.01 sec)

这个特性对于已有的xtracbackup和分布式复制是一种很好的补充,也使得热备的方式可以更加灵活便捷。

e0678620bd15471682e2f5b08c53dba0.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值