IE盒子

搜索
查看: 98|回复: 3

MySQL分布式高可用-MGR原理以及简单配置

[复制链接]

2

主题

7

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-1-13 21:01:34 | 显示全部楼层 |阅读模式
一、MGR介绍


  • MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解 决方案,MySQL组复制是一个MySQL Server插件,使您可以创建弹性的,高可用性的,容错的复制拓 扑。。MGR基于分布式paxos协议,实现组复制,保证数据一致性。内置故障检测和自动选主功能,只 要不是集群中的大多数节点都宕机,就可以继续正常工作。提供单主模式与多主模式,多主模式支持多 点写入。
  • MySQL组复制为分布式状态机复制提供了服务器之间的强大协调。服务器属于同一组时,它们会自动进 行协调。该组可以在具有自动主库选举的单主模式下运行,其中一次仅一个服务器接受更新。或者,对 于更高级的用户,可以在多主模式下部署组,在该模式下,所有服务器都可以接受更新,即使它们是同 时发布的。这种功能的代价是应用程序必须解决此类部署所施加的限制。
  • 有一个内置的组成员资格服务,可以使组的视图一致,并且在任何给定时间点均可用于所有服务器。服 务器可以离开并加入该组,视图将相应更新。有时服务器可能会意外离开该组,在这种情况下,故障检 测机制会检测到此情况并通知该组视图已更改,这都是自动的。
  • 对于要提交的事务,组的大多数必须在全局事务顺序中就给定事务的顺序达成一致。每个服务器分别决 定提交或中止事务,但所有服务器都要做出相同的决定。如果存在网络分区,分裂导致成员无法达成一 致,则系统将不会继续运行,直到解决此问题。因此,还有一个内置的自动裂脑保护机制。
  • 所有这些都由提供的组通信系统(GCS,Group Communication System)协议提供支持。其提供故障 检测机制、组成员资格服务、安全以及有序的消息传递。所有这些属性是创建系统的关键,该系统可确 保在服务器组之间数据的一致性复制。该技术的核心是Paxos算法的实现。它充当组通信引擎。
二、组复制背景

主从复制

传统的MySQL复制提供了一种简单的主从复制方法。有一个主服务器(主服务器),有一个或多个辅助 服务器(从服务器)。主数据库执行事务,将其提交,然后将它们稍后(因此异步)发送给从数据库, 以重新执行(在基于语句的复制中)或应用(在基于行的复制中)。它是无共享系统,默认情况下所有 服务器均具有数据的完整副本。


半同步复制,它向协议增加了一个同步步骤。这意味着主服务器在提交时等待辅助服务器确认已接收到 事务。只有这样,主服务器才会恢复提交操作





1.2组复制

单主模式


  • 可以使用group_replication_set_as_primary()指定特定成员作为新的主数据库(MySQL 8.0.13或 更高版本)
  • 如果自动选举,考虑的第一个因素是哪个或哪些成员运行最低的MySQL Server版本;
  • 考虑的第二个因素是每个成员的成员权重,具体由group_replication_member_weight 系统变量 指定;
  • 考虑的第三个因素是每个成员所生成的服务器UUID的字典顺序,由server_uuid系统变量指定,服 务器UUID最低的成员被选为主服务器
多主模式

在mysql多主模式下,在组复制中通过Group Replication Protocol协议及Paxos协议,形成的整体高可用 解决方案 同时增加了certify的概念,负责检查事务是否允许提交,是否与其它事务存在冲突,Group Replication是由多个节点共同组成一个数据库集群,每个节点都可以单独执行事务,但是readwrite(rw)的操作只有在组内验证后才可以commit,Read-only (RO)事务是不需要验证可以立即执 行,当一个事务在一个节点上提交之前,会在组内自动进行原子性的广播,告知其他节点变更了什么内 容/执行了什么事务,然后为该事务建立一个全局的排序,最终,这意味着所有的服务器都以相同的顺 序接收相同的事务集。因此,所有服务器都按照相同的顺序应用相同的变更集,因此它们在组中保持一 致。 在多主模式下,该组的所有成员都设置为读写模式,在多主模式下,不支持SERIALIZABLE事务隔 离级别,且不能完全支持级联外键约束。
组复制体系架构



配置MGR单主模式

一、实验环境介绍



二、实验需求


  • 配置MGR单主模式
  • master主机为主服务器,提供写操作;
  • 另外2台为从服务器,提供读操作
三、实验基础环境搭建

1.配置静态IP地址和DNS主机名解析
[root@yichen-master ~]# ip addr show  ens33| grep 'inet '
    inet 192.168.150.20/24 brd 192.168.150.255 scope global noprefixroute ens33
[root@yichen-slave1 ~]# ip addr show  ens33| grep 'inet '
    inet 192.168.150.21/24 brd 192.168.150.255 scope global noprefixroute ens33
[root@yichen-slave2 ~]# ip addr show  ens33| grep 'inet '
    inet 192.168.150.22/24 brd 192.168.150.255 scope global noprefixroute ens33
    [root@yichen-master ~]# cat  /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.150.20  yichen-master
192.168.150.21  yichen-slave1
192.168.150.22  yichen-slave2
[root@yichen-slave1 ~]# cat  /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.150.20  yichen-master
192.168.150.21  yichen-slave1
192.168.150.22  yichen-slave2
[root@yichen-slave2 ~]# cat  /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.150.20  yichen-master
192.168.150.21  yichen-slave1
192.168.150.22  yichen-slave22.建立SSH免秘钥登录环境(三台都要配置)
[root@yichen-master ~]# vim ssh-copy.sh
[root@yichen-master ~]# chmod  a+x ssh-copy.sh
[root@yichen-master ~]# vim check-ssh.sh
[root@yichen-master ~]# chmod  a+x check-ssh.sh
[root@yichen-master ~]# cat ssh-copy.sh
#!/usr/bin/bash
for i in  20 21 22
do  
   ssh-copy-id -i ~/.ssh/id_rsa.pub   root@192.168.150.$i
done
[root@yichen-master ~]# cat  check-ssh.sh
#!/usr/bin/bash
for i in  20 21 22
do
    ssh 192.168.150.$i  hostname
done
# 把两个脚本传到另外两台的slave上,并执行。
[root@yichen-master ~]# scp  ssh-copy.sh check-ssh.sh   root@192.168.150.21:/root
ssh-copy.sh                                                                 100%  104    79.3KB/s   00:00   
check-ssh.sh                                                                100%   77    48.0KB/s   00:00   
[root@yichen-master ~]# scp  ssh-copy.sh check-ssh.sh   root@192.168.150.22:/root
ssh-copy.sh                                                                 100%  104    68.7KB/s   00:00   
check-ssh.sh                                                                100%   77   111.2KB/s   00:00 3.防火墙放行服务,和端口(三台都要放行)
[root@yichen-master ~]# firewall-cmd   --add-service=mysql  --permanent
success
[root@yichen-master ~]# firewall-cmd  --add-port=3306/tcp  --permanent
success
[root@yichen-master ~]# firewall-cmd  --add-port=33060/tcp  --permanent
success
[root@yichen-master ~]# firewall-cmd  --add-port=33061/tcp  --permanent
success
[root@yichen-master ~]# firewall-cmd  --reload
success
[root@yichen-master ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: ssh dhcpv6-client mysql
  ports: 5000/tcp 3306/tcp 33060/tcp 33061/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@yichen-slave1 ~]# firewall-cmd  --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: ssh dhcpv6-client mysql
  ports: 5000/tcp 3306/tcp 33060/tcp 33061/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@yichen-slave2 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: ssh dhcpv6-client mysql
  ports: 5000/tcp 3306/tcp 33060/tcp 33061/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:         4.UUID必须不一样
[root@yichen-master ~]# cat  /data/mysql/auto.cnf
[auto]
server-uuid=043887ba-5ce8-11ea-8f3a-000c29d3fc7e
[root@yichen-slave1 ~]# cat  /data/mysql/auto.cnf
[auto]
server-uuid=96a3aeca-5f5e-11ea-9547-000c29035817
[root@yichen-slave2 ~]# cat  /data/mysql/auto.cnf
[auto]
server-uuid=c5b69329-5f5e-11ea-ad3f-000c292c59725.关闭SElinux
[root@yichen-master ~]# cat  /etc/sysconfig/selinux  | grep SELINUX=
# SELINUX= can take one of these three values:
SELINUX=disabled
[root@yichen-slave1 ~]# cat  /etc/sysconfig/selinux  | grep 'SELINUX='
# SELINUX= can take one of these three values:
SELINUX=disabled
[root@yichen-slave2 ~]# cat  /etc/sysconfig/selinux  | grep 'SELINUX='
# SELINUX= can take one of these three values:
SELINUX=disabled四、部署MGR单主模式

master

1.修改master的主配置文件
[root@yichen-master ~]# mysql -uroot -pCom.wang123  -e "SELECT UUID()"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------------------------+
| UUID()                               |
+--------------------------------------+
| 36da6754-5f66-11ea-ad1b-000c29ac9351 |
+--------------------------------------+
[root@yichen-master ~]# cat  /data/mysql/auto.cnf
[auto]
server-uuid=043887ba-5ce8-11ea-8f3a-000c29d3fc7e
[root@yichen-master ~]# systemctl   restart  mysqld
[root@yichen-master ~]# cat  /data/mysql/auto.cnf
[auto]
server-uuid=043887ba-5ce8-11ea-8f3a-000c29d3fc7e
[root@yichen-master ~]# vim  /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
server_id=20
log_bin=/data/mysql/master
log_bin_index=/data/mysql/master/master.index
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
plugin_load_add='group_replication.so'
group_replication_group_name="36da6754-5f66-11ea-ad1b-000c29ac9351"  
group_replication_start_on_boot=off
group_replication_local_address= "192.168.150.20:33061"
group_replication_group_seeds= "192.168.150.20:33061,192.168.150.21:33061,192.168.150.22:33061"
group_replication_bootstrap_group=off   #不随系统自启而启动
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
## 重启服务
[root@yichen-master mysql]# systemctl   restart  mysqld  2.创建用于分布式恢复的复制用户
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)
mysql> create user mgr_user@'%' identified with mysql_native_password by 'Com.123456';
Query OK, 0 rows affected (0.00 sec)
#授权用于复制
mysql> grant replication slave on *.* to 'mgr_user'@'%';
Query OK, 0 rows affected (0.00 sec)
#授权用于在捐赠者上的克隆操作
mysql> grant backup_admin on *.* to 'mgr_user'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)
# 创建用户后,使用CHANGE MASTER TO语句将服务器配置为通过分布式恢复或远程克隆操作,使用给 定凭据进行状态传输。
mysql> change master to master_user='mgr_user', master_password='Com.123456' for channel 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.21 sec)3.启动组复制
mysql> SHOW PLUGINS;
+---------------------------------+----------+--------------------+----------------------+---------+
| Name                            | Status   | Type               | Library              | License |
+---------------------------------+----------+--------------------+----------------------+---------+
| group_replication               | ACTIVE   | GROUP REPLICATION  | group_replication.so | GPL     |
+---------------------------------+----------+--------------------+----------------------+---------+
1 rows in set (0.00 sec)
mysql> use  mysql;
mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mgr_user         | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)
mysql> 4.自举启动组
mysql> set global group_replication_bootstrap_group=on;
Query OK, 0 rows affected (0.00 sec)
mysql> start group_replication;
Query OK, 0 rows affected (3.21 sec)
# 检查组信息及组成员
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST         | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 043887ba-5ce8-11ea-8f3a-000c29d3fc7e | yichen-master |        3306 | ONLINE       | PRIMARY     | 8.0.19         |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
1 row in set (0.00 sec)
# 为了证明服务器确实在一个组中并且能够处理负载,创建一个表并向其中添加一些内容。
mysql> CREATE DATABASE t;
Query OK, 1 row affected (0.00 sec)
mysql> use  t;
Database changed
mysql> CREATE TABLE t1 (id INT PRIMARY KEY, name TEXT NOT NULL);
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO t1 VALUES (1, 'lisi');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO t1 VALUES (2, 'wangwu');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO t1 VALUES (3, 'tom');
Query OK, 1 row affected (0.01 sec)
# 查看表的内容及二进制日志
mysql> select  *from t1;
+----+--------+
| id | name   |
+----+--------+
|  1 | lisi   |
|  2 | wangwu |
|  3 | tom    |
+----+--------+
3 rows in set (0.00 sec)
mysql> show  master  status;
+---------------+----------+--------------+------------------+----------------------------------------------------------------------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                                                                |
+---------------+----------+--------------+------------------+----------------------------------------------------------------------------------+
| master.000006 |     1347 |              |                  | 043887ba-5ce8-11ea-8f3a-000c29d3fc7e:1-5,
36da6754-5f66-11ea-ad1b-000c29ac9351:1 |
+---------------+----------+--------------+------------------+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show  binlog events in 'master.000006' limit 5;
+---------------+-----+----------------+-----------+-------------+-------------------------------------------------------------------+
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                                                              |
+---------------+-----+----------------+-----------+-------------+-------------------------------------------------------------------+
| master.000006 |   4 | Format_desc    |        20 |         124 | Server ver: 8.0.19, Binlog ver: 4                                 |
| master.000006 | 124 | Previous_gtids |        20 |         191 | 36da6754-5f66-11ea-ad1b-000c29ac9351:1                            |
| master.000006 | 191 | Gtid           |        20 |         264 | SET @@SESSION.GTID_NEXT= '043887ba-5ce8-11ea-8f3a-000c29d3fc7e:1' |
| master.000006 | 264 | Query          |        20 |         359 | CREATE DATABASE t /* xid=5 */                                     |
| master.000006 | 359 | Gtid           |        20 |         432 | SET @@SESSION.GTID_NEXT= '043887ba-5ce8-11ea-8f3a-000c29d3fc7e:2' |
+---------------+-----+----------------+-----------+-------------+-------------------------------------------------------------------+
5 rows in set (0.00 sec)
mysql> slave1

1.修改Slave1的主配置文件
[root@yichen-slave1 ~]# vim  /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
server_id=21
log_bin=/data/mysql/slave1
log_bin_index=/data/mysql/slave1/slave1.index
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
plugin_load_add='group_replication.so'
group_replication_group_name="36da6754-5f66-11ea-ad1b-000c29ac9351"
group_replication_start_on_boot=off
group_replication_local_address= "192.168.150.21:33061"
group_replication_group_seeds= "192.168.150.20:33061,192.168.150.21:33061,192.168.150.22:33061"
group_replication_bootstrap_group=off   #不随系统自启而启动
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON2.创建用于分布式恢复的复制用户
[root@yichen-slave1 ~]# mysql  -uroot -pCom.wang123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)
mysql> create user mgr_user@'%' identified with mysql_native_password by 'Com.123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant replication slave on *.* to 'mgr_user'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> grant backup_admin on *.* to 'mgr_user'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to master_user='mgr_user', master_password='Com.123456' for channel 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.11 sec)
set sql_log_bin=0;
create user mgr_user@'%' identified with mysql_native_password by 'Com.123456';
grant replication slave on *.* to 'mgr_user'@'%';
grant backup_admin on *.* to 'mgr_user'@'%';
flush privileges;
set sql_log_bin=1;
change master to master_user='mgr_user', master_password='Com.123456' for channel 'group_replication_recovery';3.3.启动组复制
# 启动组复制,将slave01加入组
mysql> start  group_replication;
Query OK, 0 rows affected (4.43 sec)

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST         | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 043887ba-5ce8-11ea-8f3a-000c29d3fc7e | yichen-master |        3306 | ONLINE       | PRIMARY     | 8.0.19         |
| group_replication_applier | 96a3aeca-5f5e-11ea-9547-000c29035817 | yichen-slave1 |        3306 | ONLINE       | SECONDARY   | 8.0.19         |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
2 rows in set (0.01 sec)

# 主库上创建
mysql> mysql> create database test1;
Query OK, 1 row affected (0.00 sec)
# 从库查看
mysql> show  databases;
+--------------------+
| Database           |
+--------------------+
| employees          |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| t                  |
| test1              |
| www                |
+--------------------+
8 rows in set (0.00 sec)salve2

1.修改Slave2的主配置文件
[root@yichen-slave2 ~]# cd  /data/mysql/
[root@yichen-slave2 mysql]# mkdir slave2
[root@yichen-slave2 mysql]# chown mysql:mysql slave2
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
server_id=22
log_bin=/data/mysql/slave2
log_bin_index=/data/mysql/slave2/slave2.index
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
plugin_load_add='group_replication.so'
group_replication_group_name="043887ba-5ce8-11ea-8f3a-000c29d3fc7e"  #这里的是你的master设备的UUID
group_replication_start_on_boot=off
group_replication_local_address= "192.168.150.22:33061"  ## 这里是你自己主机的IP地址
group_replication_group_seeds= "192.168.150.20:33061,192.168.150.21:33061,192.168.150.22:33061"
group_replication_bootstrap_group=off   #不随系统自启而启动

[root@yichen-slave2 mysql]# systemctl   restart mysqld2.创建用于分布式恢复的复制用户
[root@yichen-slave2 mysql]# mysql  -uroot  -pCom.wang123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)
mysql> create user mgr_user@'%' identified with mysql_native_password by 'Com.123456';
ter_user='mgr_user', master_password='Com.123456' for channel 'group_replication_recovery';Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to 'mgr_user'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> grant backup_admin on *.* to 'mgr_user'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to master_user='mgr_user', master_password='Com.123456' for channel 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.01 sec)3.启动组复制
mysql> change master to master_user='mgr_user',
    -> master_password='Com.123456' for channel 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> reset master;
Query OK, 0 rows affected (0.10 sec)
mysql> start group_replication;
Query OK, 0 rows affected (3.78 sec)
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST         | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 043887ba-5ce8-11ea-8f3a-000c29d3fc7e | yichen-master |        3306 | ONLINE       | PRIMARY     | 8.0.19         |
| group_replication_applier | 96a3aeca-5f5e-11ea-9547-000c29035817 | yichen-slave1 |        3306 | ONLINE       | SECONDARY   | 8.0.19         |
| group_replication_applier | c5b69329-5f5e-11ea-ad3f-000c292c5972 | yichen-slave2 |        3306 | ONLINE       | SECONDARY   | 8.0.19         |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
3 rows in set (0.00 sec)4.检查错误
[root@yichen-master ~]# systemctl  stop  mysqld.service
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST         | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 96a3aeca-5f5e-11ea-9547-000c29035817 | yichen-slave1 |        3306 | ONLINE       | PRIMARY     | 8.0.19         |
| group_replication_applier | c5b69329-5f5e-11ea-ad3f-000c292c5972 | yichen-slave2 |        3306 | ONLINE       | SECONDARY   | 8.0.19         |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
2 rows in set (0.00 sec)
mysql> 五、MGR多主模式


  • 按照以上实验环境,配置MGR多主模式
  • group_replication_recovery: 此通道用于与分布式恢复阶段相关的复制更改
  • group_replication_applier :此通道用于来自组的传入更改。这是用于应用直接来自组的事务的通道
1.修改所有服务器的配置文件
[root@yichen-master ~]# vim  /etc/my.cnf
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
[root@yichen-master ~]# systemctl  restart  mysqld.service
[root@yichen-slave1 ~]# vim  /etc/my.cnf
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
[root@yichen-slave1 ~]# systemctl   restart mysqld
[root@yichen-slave2 ~]# vim  /etc/my.cnf
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
[root@yichen-slave2 ~]# systemctl   restart mysqld2.启动复制组
mysql> set global group_replication_bootstrap_group=on;
Query OK, 0 rows affected (0.00 sec)

mysql> start group_replication;
ERROR 3093 (HY000): The START GROUP_REPLICATION command failed since the group is already running.
mysql> stop  group_replication;
Query OK, 0 rows affected (4.58 sec)

mysql> start group_replication;
Query OK, 0 rows affected (3.26 sec)

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST         | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 96a3aeca-5f5e-11ea-9547-000c29035817 | yichen-slave1 |        3306 | ONLINE       | PRIMARY     | 8.0.19         |
+---------------------------+--------------------------------------+---------------------+-------------+--------------+-------------+----------------+
1 row in set (0.00 sec)3.其它节点加入复制组(分别在三个节点上启动组复制)
mysql> start group_replication;
回复

使用道具 举报

1

主题

4

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2023-1-13 21:02:11 | 显示全部楼层
楼主您好,我这边因公司停电重启mysql集群时出现组复制33061端口无法启动的情况,您有遇到过吗,之前是正常的。检查了配置文件是生效的,多谢
回复

使用道具 举报

4

主题

7

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2023-1-13 21:02:55 | 显示全部楼层
可能端口被占用了,看看日志
回复

使用道具 举报

2

主题

11

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2023-1-13 21:03:33 | 显示全部楼层
多谢指导,用lsof看过,没被占用,现已重建集群了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表