暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL8的MGR

四海内皆兄弟 2021-05-14
649

       MGR这个已经出来好几年了。是5.7中后期推出的。对此我已经轻车熟路,5min足以搞好一套。现在大家都陆续使用8版本了,我在8中用以前轻车熟路的脚本搭建一次,发现根本搭不起来了。

      分析各种问题以后决定采用8的新功能克隆数据库来搭建这样成功概率高。Oracle的克隆库之前讲过了,MySQL的克隆库也不难。

首先建立3个数据库。由于仅仅是为了验证功能效果,在一台机器上操作这些会方便一点。我们在一个机器上开3个实例。3307是基准库  3308  和3309是空的。这两个空的主要是为了克隆。

先验证3个的可用性。

然后在基准库上:

主库上

SET SQL_LOG_BIN=0;

CREATE USER rpl_user@'%' IDENTIFIED BY '1';

GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';

install plugin clone soname 'mysql_clone.so';

grant backup_admin on *.* to clone_user;

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='1' FOR CHANNEL 'group_replication_recovery';

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

SHOW PLUGINS;

install plugin clone soname 'mysql_clone.so';

grant backup_admin on *.* to clone_user;

   ALTER USER rpl_user@'%' IDENTIFIED BY '1' PASSWORD EXPIRE NEVER;   

   ALTER USER rpl_user@'%' IDENTIFIED WITH mysql_native_password BY '1'; 

SET SQL_LOG_BIN=1;

这样基准库的准备工作就完成了。

在其他库上(3308  3309)

其他库上

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

install plugin clone soname 'mysql_clone.so';

SHOW PLUGINS;

set global clone_valid_donor_list = '10.60.143.138:3307';

clone instance from root@'10.60.143.138':3307 identified by '1';

可以看到克隆库和非克隆库中间有个clone的区别。

基准库执行。

set global group_replication_bootstrap_group=ON;

START group_replication;

set global group_replication_bootstrap_group=OFF;

非基准库执行

START group_replication;

SELECT * FROM performance_schema.replication_group_members;

检查一致性。

那么如果想再动态增加实例呢?

继续复制库。

新建一个空的数据库3310

启动起来(空的)

数据也复制过来了。

整个过程最大问题是5.7的这个参数没有了。

group_replication_allow_local_disjoint_gtids_join = ON

以及密码改变了,上面红色。一直在recover。

由于强一致性。所以带来两个问题。

1、网络一定要好,否则一个节点不行其他也要等待

2、SQL代码一定要高效,否则一个节点卡,其他也要等待。(写的差的找找自己的原因)

文章转载自四海内皆兄弟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论