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代码一定要高效,否则一个节点卡,其他也要等待。(写的差的找找自己的原因)





