windows下mysql8.0.23搭建MGR集群,单主多主模式

  • Post author:
  • Post category:mysql


MGR 8.0.23设置

192.168.6.7、192.168.6.8、192.168.6.9

第一台 192.168.6.7

创建一个实例

启动第一台

my.ini参数为:

[mysqld]

basedir = d:/wamp/mysql

datadir = d:/wamp/data8

port = 3306

default_authentication_plugin=mysql_native_password

character_set_server = utf8mb4

collation-server = utf8mb4_unicode_ci

server_id = 7

gtid_mode=ON

enforce_gtid_consistency=ON

master_info_repository=TABLE

relay_log_info_repository=TABLE

log_bin=binlog

binlog_format=ROW

log_slave_updates=ON

binlog_checksum=NONE

transaction_write_set_extraction=XXHASH64

loose-group_replication_group_name=‘aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa’

loose-group_replication_start_on_boot=off

loose-group_replication_local_address= ‘192.168.6.7:33061’

loose-group_replication_group_seeds= ‘192.168.6.7:33061,192.168.6.8:33061,192.168.6.9:33061’

loose-group_replication_bootstrap_group=off

loose-group_replication_member_weight=50

#single primary模式

loose-group_replication_single_primary_mode=on

loose-group_replication_enforce_update_everywhere_checks=off

#multi primary模式

#loose-group_replication_single_primary_mode=off

#loose-group_replication_enforce_update_everywhere_checks=on

#white list

#loose-group_replication_ip_whitelist=‘127.0.0.1/8,192.168.6.0/24,192.168.0.0/16’

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

执行命令:

SET SQL_LOG_BIN=0;

CREATE USER copy@’%’ IDENTIFIED BY ‘123456’;

GRANT REPLICATION SLAVE ON

.

TO copy@’%’;

SET SQL_LOG_BIN=1;

CHANGE MASTER TO MASTER_USER=‘copy’, MASTER_PASSWORD=‘123456’ FOR CHANNEL ‘group_replication_recovery’;

FLUSH PRIVILEGES;

INSTALL PLUGIN group_replication SONAME ‘group_replication.dll’;

#master启动

SET GLOBAL group_replication_bootstrap_group=ON;

#所有的

START GROUP_REPLICATION;

SET GLOBAL group_replication_bootstrap_group=OFF;

SELECT * FROM performance_schema.replication_group_members;

第二台:

配置信息,my.cnf

server_id = 8

loose-group_replication_local_address= ‘192.168.6.8:33061’

loose-group_replication_group_seeds= ‘192.168.6.7:33061,192.168.6.8:33061,192.168.6.9:33061’

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

创建后,不要进行任何操作:

SET SQL_LOG_BIN=0;

CREATE USER copy@’%’ IDENTIFIED BY ‘123456’;

GRANT REPLICATION SLAVE ON

.

TO copy@’%’;

SET SQL_LOG_BIN=1;

CHANGE MASTER TO MASTER_USER=‘copy’, MASTER_PASSWORD=‘123456’ FOR CHANNEL ‘group_replication_recovery’;

FLUSH PRIVILEGES;

INSTALL PLUGIN group_replication SONAME ‘group_replication.dll’;

#所有的

START GROUP_REPLICATION;

SELECT * FROM performance_schema.replication_group_members;

第三台:

配置信息,my.cnf

server_id = 9

loose-group_replication_local_address= ‘192.168.6.9:33061’

loose-group_replication_group_seeds= ‘192.168.6.7:33061,192.168.6.8:33061,192.168.6.9:33061’

创建后,不要进行任何操作:

SET SQL_LOG_BIN=0;

CREATE USER copy@’%’ IDENTIFIED BY ‘123456’;

GRANT REPLICATION SLAVE ON

.

TO copy@’%’;

SET SQL_LOG_BIN=1;

CHANGE MASTER TO MASTER_USER=‘copy’, MASTER_PASSWORD=‘123456’ FOR CHANNEL ‘group_replication_recovery’;

FLUSH PRIVILEGES;

INSTALL PLUGIN group_replication SONAME ‘group_replication.dll’;

#所有的

START GROUP_REPLICATION;

SELECT * FROM performance_schema.replication_group_members;

即可创建成功MGR

错误处理:

1、如果提示:This member has more executed transactions than those present in the grou

在节点上执行

reset master;

再进行

START GROUP_REPLICATION;

2、拉起来节点只需要依次执行

stop group_replication

start group_replication

即可

3、Primary库与secondary库间数据不一致,复制数据时发生致命错误,备库离开replication 组

解决方法:

清空从节点的数据

从主库备份数据传至备库进行恢复

在备库执行reset master

重新执行

CHANGE MASTER TO MASTER_USER=‘copy’, MASTER_PASSWORD=‘123456’ FOR CHANNEL ‘group_replication_recovery’;

START GROUP_REPLICATION

4、

主库全备传到备库,备库恢复后,发现未给复制组用户授权,在主、备库上分别执行授权后发现 一旦执行事务,备库就退出group

原因:主备库单独执行了事务,写入了自己的binlog,导致不一致

解决方法:

发现不一致时执行关闭写入binlog命令,授权完毕后再开启。

SET SQL_LOG_BIN=0;

GRANT REPLICATION SLAVE ON

.

TO copy@’%’;

FLUSH PRIVILEGES;

SET SQL_LOG_BIN=1;

若已经不一致了,需在备库reset master再执行加入group的命令。

5、从机重新启动后,怎么处理

重启wampmysqld服务

在命令里面执行:

START GROUP_REPLICATION;

即可


切换MGR到多主模式:

主要再于此处:my.ini

#single primary模式

#loose-group_replication_single_primary_mode=on

#loose-group_replication_enforce_update_everywhere_checks=off

#multi primary模式

loose-group_replication_single_primary_mode=off

loose-group_replication_enforce_update_everywhere_checks=on

1、停止组复制(在所有MGR节点上执行):

stop group_replication;

set global group_replication_single_primary_mode=OFF;

set global group_replication_enforce_update_everywhere_checks=ON;

2、随便选择某个MGR节点执行 (比如这里选择在MGR-node1节点):

SET GLOBAL group_replication_bootstrap_group=ON;

START GROUP_REPLICATION;

SET GLOBAL group_replication_bootstrap_group=OFF;

3、然后在其他的MGR节点执行 (这里指MGR-node2和MGR-node3节点上执行):

START GROUP_REPLICATION;

4、查看MGR组信息 (在任意一个MGR节点上都可以查看)

SELECT * FROM performance_schema.replication_group_members;

_______________________________________切换回单主模式

主要在于此处:my.ini

#single primary模式

#loose-group_replication_single_primary_mode=on

#loose-group_replication_enforce_update_everywhere_checks=off

#multi primary模式

loose-group_replication_single_primary_mode=off

loose-group_replication_enforce_update_everywhere_checks=on

1、停止组复制(在所有MGR节点上执行):

set global group_replication_enforce_update_everywhere_checks=OFF;

set global group_replication_single_primary_mode=ON;

2、选择一个节点作为主节点, 在主节点上执行 (这里选择MGR-node1节点作为主节点)

SET GLOBAL group_replication_bootstrap_group=ON;

START GROUP_REPLICATION;

SET GLOBAL group_replication_bootstrap_group=OFF;

3、在其他剩余的节点, 也就是从库节点上执行 (这里从库节点指的就是MGR-node2和MGR-node3):

START GROUP_REPLICATION;

4、查看MGR组信息 (在任意一个MGR节点上都可以查看)

SELECT * FROM performance_schema.replication_group_members;

如果组掉了,用reset master;

然后

START GROUP_REPLICATION;

就和新的一样。

如果需要自动启动集群,改下配置就可以了:

loose-group_replication_start_on_boot=off

改为

loose-group_replication_start_on_boot=on



版权声明:本文为lwprain原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。