广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >MGR集群搭建及配置过程
  • 651
分享到

MGR集群搭建及配置过程

2024-04-02 19:04:59 651人浏览 安东尼
摘要

  MGR全称Mysql Group Replication(mysql组复制),是Mysql官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩

  MGR全称Mysql Group Replication(mysql组复制),是Mysql官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩展、高可靠的MySQL集群服务。在MGR出现之前,用户常见的MySQL高可用方式,无论怎么变化架构,本质就是Master-Slave架构。MySQL 5.7版本开始支持无损半同步复制(lossless semi-sync replication),从而进一步提示数据复制的强一致性。

  MGR是MySQL数据库未来发展的一个重要方向。

  注意:根据本人测试group_replication.so插件是mysql-commUnity-server安装包中携带,如果是rpm安装或yum安装存放地址为/usr/lib64/mysql/plugin/目录下,看下图。另外在安装5.7.16版本时是没有这个插件,而在安装5.7.20版本有这个插件,推测这是一个5.7.16到5.7.20之间新加的插件,个人建议安装5.7.20以上的版本。另外大家请在安装好mysql后查看一下是否存在这个插件。

  如果提示group_replication.so不存在,或提示有问题并且查看时发现group_replication.so不存在,请重点看一下mysql的版本。(我搜了一大圈,没有一个人说这个问题。表示怀疑自己,如果我错了,请留言。)

(1).MGR的特性

  高一致性。基于原生复制及paxos协议的组复制技术,并以插件的方式提供,提供一致数据安全保证;

  高容错性。只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理,并且内置了自动化脑裂防护机制;

  高扩展性。节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;

  高灵活性。有单主模式和多主模式,单主模式下,会自动选主,所有更新操作都在主上进行;多主模式下,所有server都可以同时处理更新操作。

(2).搭建MGR的基础结构要求和使用限制(重点)

  基础结构要求:1.引擎必须为innodb,因为需事务支持在commit时对各节点进行冲突检查;2.每个表必须有主键,在进行事务冲突检测时需要利用主键值对比;3.必须开启binlog且为row格式;4.开启GTID,且主从状态信息存于表中(--master-info-repository=TABLE 、--relay-log-info-repository=TABLE),--log-slave-updates打开;5.一致性检测设置--transaction-write-set-extraction=XXHASH64。

  使用限制:1.RP和普通复制binlog校验不能共存,需设置--binlog-checksum=none;2.不支持gap lock(间隙),隔离级别需设置为read_committed;3.不支持对表进行锁操作(lock /unlock table),不会发送到其他节点执行 ,影响需要对表进行加锁操作的情况,列入mysqldump全表备份恢复操作;4.不支持serializable(序列化)隔离级别;5.DDL语句不支持原子性,不能检测冲突,执行后需自行校验是否一;6.多主模式下不支持外键,单主模式下支持外键;最多9个节点,超过9台无法加入集群

(3).实验环境

youxi1  192.168.1.6  Centos7.6  Mysql5.7.26  端口号3306  server-id=1

youxi2  192.168.1.7  CentOS7.6  Mysql5.7.26  端口号3306  server-id=2

youxi3  192.168.1.8  CentOS7.6  Mysql5.7.26  端口号3306  server-id=3

  另外,三台服务器上都进行IP的映射(如果此处不映射,请修改/etc/my.cnf配置文件中对应的域名为IP地址)

[root@youxi1 ~]# vim /etc/hosts
192.168.1.6 youxi1.cn youxi1  //长域名和短域名只要映射一个即可
192.168.1.7 youxi2.cn youxi2
192.168.1.8 youxi3.cn youxi3

(1).单主模式

  我是在空数据库下操作,如果主数据集已存在数据,需要将主数据库的数据导出再导入到从数据库。另外还需保证引擎为innodb,每个表必须存在主键。

1)以youxi1作为主服务器,对youxi1进行配置

  创建一个复制用的用户

mysql> grant replication slave on *.* to 'repl'@'192.168.1.%' identified by '12345678';
Query OK, 0 rows affected, 1 warning (0.01 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

  修改配置文件,加入到[mysqld]模块下。然后重启mysqld

[root@youxi1 ~]# vim /etc/my.cnf
server-id=1  //Mysql服务ID
gtid-mode=on  //全局事务
enforce-gtid-consistency=on  //强制GTID的一致性
master-info-repository=TABLE  //将master.info元数据保存在系统表中
relay-log-info-repository=TABLE  //将relay.info元数据保存在系统表中
binlog-checksum=none  //禁用二进制日志事件校验
log-slave-updates=on  //级联复制
log-bin=binlog  //开启二进制日志记录
binlog-fORMat=ROW  //以行的格式记录
transaction-write-set-extraction=XXHASH64  //使用哈希算法将其编码为散列
loose-group_replication_group_name='ce9be252-2b71-11e6-b8f4-00212844f856'  //加入的组名,可以修改,只要格式对
loose-group_replication_start_on_boot=off  //不自动启用组复制集群
loose-group_replication_local_address='youxi1:33061'  //以本机端口33061接受来自组中成员的传入连接
loose-group_replication_group_seeds='youxi1:33061,youxi2:33062,youxi3:33063'  //组中成员访问表
loose-group_replication_bootstrap_group=off  //不启用引导组
[root@youxi1 ~]# systemctl restart mysqld

  注意:如果防火墙是打开的,记得添加mysql的端口号。

[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port={3306,33061}/tcp
success
[root@youxi1 ~]# firewall-cmd --reload
success
[root@youxi1 ~]# firewall-cmd --zone=public --list-ports
3306/tcp 33061/tcp

  修改master信息,构建组复制(group replication)集群信息

mysql> change master to master_user='repl',master_passWord='12345678' for channel 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.04 sec)

  安装组复制(group replication)插件,并查看组件信息

mysql> install PLUGIN group_replication SONAME 'group_replication.so';
Query OK, 0 rows affected (0.21 sec)
 
mysql> show plugins;  //查看组件是否安装成功
+----------------------------+----------+--------------------+----------------------+---------+
| Name                       | Status   | Type               | Library              | License |
+----------------------------+----------+--------------------+----------------------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCK_WaiTS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_TEMP_TABLE_INFO     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_VIRTUAL         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| ARCHive                    | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL                 | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| ngram                      | ACTIVE   | FTPARSER           | NULL                 | GPL     |
| validate_password          | DISABLED | VALIDATE PASSWORD  | validate_password.so | GPL     |
| group_replication          | ACTIVE   | GROUP REPLICATION  | group_replication.so | GPL     |
+----------------------------+----------+--------------------+----------------------+---------+
46 rows in set (0.00 sec)

  作为主服务器需要由这台服务器开启引导,开启组复制(group replication)集群

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 (2.24 sec)
mysql> set global group_replication_bootstrap_group=off;  //关闭组复制引导
Query OK, 0 rows affected (0.00 sec)

  查看到添加到组复制集群的服务器信息

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | c9e3662b-9020-11e9-94aa-000c29721e89 | youxi1      |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
1 row in set (0.00 sec)

2)对youxi2进行配置

  创建一个复制用的用户

mysql> grant replication slave on *.* to 'repl'@'192.168.1.%' identified by '12345678';
Query OK, 0 rows affected, 1 warning (0.01 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

  修改配置文件,加入到[mysqld]模块下。然后重启mysqld

[root@youxi2 ~]# vim /etc/my.cnf
server-id=2  //修改
gtid-mode=on
enforce-gtid-consistency=on
master-info-repository=TABLE
relay-log-info-repository=TABLE
binlog-checksum=none
log-slave-updates=on
log-bin=binlog
binlog-format=ROW
 
transaction-write-set-extraction=XXHASH64
loose-group_replication_group_name='ce9be252-2b71-11e6-b8f4-00212844f856'
loose-group_replication_start_on_boot=off
loose-group_replication_local_address='youxi2:33062'  //修改
loose-group_replication_group_seeds='youxi1:33061,youxi2:33062,youxi3:33063'
loose-group_replication_bootstrap_group=off
[root@youxi2 ~]# systemctl restart mysqld

  注意:如果防火墙是打开的,记得添加mysql的端口号。

[root@youxi2 ~]# firewall-cmd --permanent --zone=public --add-port={3306,33062}/tcp
success
[root@youxi2 ~]# firewall-cmd --reload
success
[root@youxi2 ~]# firewall-cmd --zone=public --list-ports
3306/tcp 33062/tcp

  修改master信息,构建组复制(group replication)集群信息

mysql> change master to master_user='repl',master_password='12345678' for channel 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.05 sec)

  安装组复制(group replication)插件

mysql> install PLUGIN group_replication SONAME 'group_replication.so';
Query OK, 0 rows affected (0.35 sec)

  把youxi2加到之前的组复制(group replication)

mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;
Query OK, 0 rows affected, 1 warning (0.00 sec)
 
mysql> start group_replication;
Query OK, 0 rows affected, 1 warning (5.92 sec)

  查看到添加到组复制集群的服务器信息

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 8fbf8b41-84fe-11e9-897e-000c29f27e52 | youxi2      |        3306 | ONLINE       |
| group_replication_applier | c9e3662b-9020-11e9-94aa-000c29721e89 | youxi1      |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
2 rows in set (0.00 sec)

3)youxi3的配置与youxi2的配置几乎一样,只需在/etc/my.cnf修改server-id和loose-group_replication_local_address即可。

  查看一下组复制集群信息

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 74df3399-91b8-11e9-be5f-000c299fdf40 | youxi3      |        3306 | ONLINE       |
| group_replication_applier | 8fbf8b41-84fe-11e9-897e-000c29f27e52 | youxi2      |        3306 | ONLINE       |
| group_replication_applier | c9e3662b-9020-11e9-94aa-000c29721e89 | youxi1      |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.01 sec)

  注意:如果防火墙是打开的,记得添加mysql的端口号。

[root@youxi3 ~]# firewall-cmd --permanent --zone=public --add-port=3306/tcp
success
[root@youxi3 ~]# firewall-cmd --permanent --zone=public --add-port=33063/tcp
success
[root@youxi3 ~]# firewall-cmd --reload
success
[root@youxi3 ~]# firewall-cmd --zone=public --list-ports
3306/tcp 33063/tcp

4)测试

  在youxi1上创建数据

mysql> create database test_db;
Query OK, 1 row affected (0.00 sec)
 
mysql> use test_db;
Database changed
mysql> create table user_tb(id int key,name varchar(20));  //id是主键,引擎默认是innodb
Query OK, 0 rows affected (0.02 sec)
mysql> insert into user_tb values(1,'zhangsan');
Query OK, 1 row affected (0.08 sec)

  在youxi2上查看

mysql> select * from test_db.user_tb;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
+----+----------+
1 row in set (0.00 sec)

  在youxi3上查看

mysql> select * from test_db.user_tb;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
+----+----------+
1 row in set (0.00 sec)

5)那么怎么区分主从服务器

  MGR区分主从服务器使用show variables like '%read_only%';查看read_only相关参数。如果是主服务器(youxi1),会显示如下:

mysql> show variables like '%read_only%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_read_only      | OFF   |
| read_only             | OFF   |
| super_read_only       | OFF   |
| transaction_read_only | OFF   |
| tx_read_only          | OFF   |
+-----------------------+-------+
5 rows in set (0.00 sec)

  如果是从服务器(youxi2)会显示如下:

mysql> show variables like '%read_only%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_read_only      | OFF   |
| read_only             | ON    |
| super_read_only       | ON    |
| transaction_read_only | OFF   |
| tx_read_only          | OFF   |
+-----------------------+-------+
5 rows in set (0.01 sec)

6)查看当前服务器的组复制集群参数设置列表

mysql> show variables like 'group_replication%';
+----------------------------------------------------+----------------------------------------+
| Variable_name                                      | Value                                  |
+----------------------------------------------------+----------------------------------------+
| group_replication_allow_local_disjoint_gtids_join  | OFF                                    |
| group_replication_allow_local_lower_version_join   | OFF                                    |
| group_replication_auto_increment_increment         | 7                                      |
| group_replication_bootstrap_group                  | OFF                                    |
| group_replication_components_stop_timeout          | 31536000                               |
| group_replication_compression_threshold            | 1000000                                |
| group_replication_enforce_update_everywhere_checks | OFF                                    |
| group_replication_exit_state_action                | READ_ONLY                              |
| group_replication_flow_control_applier_threshold   | 25000                                  |
| group_replication_flow_control_certifier_threshold | 25000                                  |
| group_replication_flow_control_mode                | QUOTA                                  |
| group_replication_force_members                    |                                        |
| group_replication_group_name                       | ce9be252-2b71-11e6-b8f4-00212844f856   |
| group_replication_group_seeds                      | youxi1:33061,youxi2:33062,youxi3:33063 |
| group_replication_gtid_assignment_block_size       | 1000000                                |
| group_replication_ip_whitelist                     | AUTOMATIC                              |
| group_replication_local_address                    | youxi1:33061                           |
| group_replication_member_weight                    | 50                                     |
| group_replication_poll_spin_loops                  | 0                                      |
| group_replication_recovery_complete_at             | TRANSACTIONS_APPLIED                   |
| group_replication_recovery_reconnect_interval      | 60                                     |
| group_replication_recovery_retry_count             | 10                                     |
| group_replication_recovery_ssl_ca                  |                                        |
| group_replication_recovery_ssl_capath              |                                        |
| group_replication_recovery_ssl_cert                |                                        |
| group_replication_recovery_ssl_cipher              |                                        |
| group_replication_recovery_ssl_crl                 |                                        |
| group_replication_recovery_ssl_crlpath             |                                        |
| group_replication_recovery_ssl_key                 |                                        |
| group_replication_recovery_ssl_verify_server_cert  | OFF                                    |
| group_replication_recovery_use_ssl                 | OFF                                    |
| group_replication_single_primary_mode              | ON                                     |
| group_replication_ssl_mode                         | DISABLED                               |
| group_replication_start_on_boot                    | OFF                                    |
| group_replication_transaction_size_limit           | 0                                      |
| group_replication_unreachable_majority_timeout     | 0                                      |
+----------------------------------------------------+----------------------------------------+
36 rows in set (0.00 sec)

7)如果主服务器出问题,MGR会自动切换主服务器

  将youxi1的mysqld人为关闭

[root@youxi1 ~]# systemctl stop mysqld

  之后前往youxi2和youxi3查看谁是主服务器

mysql> show variables like '%read_only%';  //这是youxi2的
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_read_only      | OFF   |
| read_only             | ON    |
| super_read_only       | ON    |
| transaction_read_only | OFF   |
| tx_read_only          | OFF   |
+-----------------------+-------+
5 rows in set (0.01 sec)
 
mysql> show variables like '%read_only%';  //这是youxi3的
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_read_only      | OFF   |
| read_only             | OFF   |
| super_read_only       | OFF   |
| transaction_read_only | OFF   |
| tx_read_only          | OFF   |
+-----------------------+-------+
5 rows in set (0.02 sec)

  可以看到youxi3变成了主服务器,那么尝试在youxi3中插入数据

mysql> insert into test_db.user_tb values(2,'lisi');
Query OK, 1 row affected (0.14 sec)

  再到youxi2中查看数据

mysql> select * from test_db.user_tb;   
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
+----+----------+
2 rows in set (0.00 sec)

(2).多主模式

1)在创建时就启用多主模式

  在创建时就启用多主模式只需在修改配置文件/etc/my.cnf时多加两行参数。其余保持不变

loose-group_replication_single_primary_mode=off  //关闭单master模式
loose-group_replication_enforce_update_everywhere_checks=ON  //多主一致性检查

2)由单主模式改为多主模式

  由单主改为多主时,一样需要所有服务器配置信息增加两行参数,为了下次开启就是多主模式

loose-group_replication_single_primary_mode=off  //关闭单master模式
loose-group_replication_enforce_update_everywhere_checks=ON  //开启多主一致性检查

  然后全部服务器停止组复制(GROUP_REPLICATION)集群,并设置参数

mysql> stop GROUP_REPLICATION;
Query OK, 0 rows affected (9.51 sec)
mysql> set global group_replication_single_primary_mode=off;  //关闭单主模式
Query OK, 0 rows affected (0.00 sec)
mysql> set global group_replication_enforce_update_everywhere_checks=ON;  //开启多主一致性检查
Query OK, 0 rows affected (0.00 sec)

  选择其中一台引导组复制(GROUP_REPLICATION)集群

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 (2.13 sec)
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
Query OK, 0 rows affected (0.01 sec)

  剩下的开启组复制(GROUP_REPLICATION)即可

mysql> start group_replication;
Query OK, 0 rows affected, 1 warning (6.05 sec)

  最后查看非引导组复制的服务器

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 74df3399-91b8-11e9-be5f-000c299fdf40 | youxi3      |        3306 | ONLINE       |
| group_replication_applier | 8fbf8b41-84fe-11e9-897e-000c29f27e52 | youxi2      |        3306 | ONLINE       |
| group_replication_applier | c9e3662b-9020-11e9-94aa-000c29721e89 | youxi1      |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.00 sec)
 
mysql> show variables like '%read_only%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_read_only      | OFF   |
| read_only             | OFF   |
| super_read_only       | OFF   |
| transaction_read_only | OFF   |
| tx_read_only          | OFF   |
+-----------------------+-------+
5 rows in set (0.01 sec)

(3).如果宕机了

  停掉youxi1的mysqld模拟宕机

[root@youxi1 ~]# systemctl stop mysqld

  这时候查看youxi2和youxi3谁是新的master

[root@youxi2 ~]# mysql -uroot -p123456
mysql> show variables like '%read_only%';  //这是youxi2的
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_read_only      | OFF   |
| read_only             | ON    |
| super_read_only       | ON    |
| transaction_read_only | OFF   |
| tx_read_only          | OFF   |
+-----------------------+-------+
5 rows in set (0.00 sec)
 
[root@youxi3 ~]# mysql -uroot -p123456
mysql> show variables like '%read_only%';  //这是youxi3的,可以看出youxi3成为了新的master
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_read_only      | OFF   |
| read_only             | OFF   |
| super_read_only       | OFF   |
| transaction_read_only | OFF   |
| tx_read_only          | OFF   |
+-----------------------+-------+
5 rows in set (0.00 sec)

  在youxi3上写入数据,这是因为生产环境数据库是一直在使用的状态,不可能等你修复后再用

[root@youxi3 ~]# mysql -uroot -p123456
mysql> insert into test_db.user_tb values(2,'lisi');
Query OK, 1 row affected (0.03 sec)
 
mysql> select * from test_db.user_tb;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
+----+----------+
2 rows in set (0.00 sec)

  将修好的youxi1添加回复制组

[root@youxi1 ~]# systemctl start mysqld
[root@youxi1 ~]# mysql -uroot -p123456
mysql> select * from performance_schema.replication_group_members;
+---------------------------+-----------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+-----------+-------------+-------------+--------------+
| group_replication_applier |           |             |        NULL | OFFLINE      |
+---------------------------+-----------+-------------+-------------+--------------+
1 row in set (0.00 sec)
 
mysql> change master to master_user='repl',master_password='12345678' for channel 'group_replication_recovery';  //这一步是为了以防万一,
Query OK, 0 rows affected, 2 warnings (0.01 sec)
 
mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;  //将这台服务器重新添加进复制组
Query OK, 0 rows affected (0.00 sec)
 
mysql> start group_replication;
Query OK, 0 rows affected (3.36 sec)
 
mysql> select * from performance_schema.replication_group_members;  //查看是否加入复制组
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 07c6f159-964f-11e9-b2c7-000c2934a723 | youxi3      |        3306 | ONLINE       |
| group_replication_applier | 8247f048-962f-11e9-a210-000c2975fa5d | youxi2      |        3306 | ONLINE       |
| group_replication_applier | 8b703193-962a-11e9-b582-000c29e6d627 | youxi1      |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.00 sec)
 
mysql> select * from test_db.user_tb;  //查看是否同步数据,没有同步请耐心等待,时间可能会长点
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
+----+----------+
2 rows in set (0.00 sec)

到此这篇关于MGR集群搭建的文章就介绍到这了,更多相关MGR集群搭建内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: MGR集群搭建及配置过程

本文链接: https://www.lsjlt.com/news/139413.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MGR集群搭建及配置过程
      MGR全称MySQL Group Replication(Mysql组复制),是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩...
    99+
    2022-11-13
  • docker环境搭建mgr集群的问题及原理
    目录MGR概念为何选用MGRMGR原理单主模式多主模式环境准备docker搭建MRG步骤1、拉取mysql8镜像2、创建docker专用网络3、创建存储数据相关目录4、启动3个mys...
    99+
    2022-11-13
  • redis集群的原理以及搭建配置
    理解并从头搭建redis集群部分开发人员工作当中只是在应用中使用redis,比如用来做数据结果的缓存。而且现在有很多不错的redis客户端工具(redisson),基本上可以不用关注redis命令就可以完成...
    99+
    2022-10-18
  • greenplum集群的搭建过程
    本篇内容主要讲解“greenplum集群的搭建过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“greenplum集群的搭建过程”吧!环境说明本次环境一共四台虚拟机,一台为master,三台为s...
    99+
    2023-06-02
  • Nacos集群搭建过程详解
    目录1.集群结构图2.搭建集群2.1.初始化数据库2.2.下载nacos2.3.配置Nacos2.4.启动2.5.nginx反向代理2.6.优化1.集群结构图 官方给出的Nacos集...
    99+
    2022-11-13
  • mongodb linux下集群搭建过程
    mongodb的集群结构如上图 网上有个mongo3.0的集群例子: https://www.jb51.net/article/191388.htm router提供入口,mong...
    99+
    2022-11-13
  • 搭建配置redis集群的步骤
    这期内容当中的小编将会给大家带来有关搭建配置redis集群的步骤,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节...
    99+
    2022-10-18
  • zookeeper集群搭建超详细过程
    目录一、准备三台虚拟机,并列出对应的IP地址和主机名,如下图所示二、环境准备(下面的步骤每一台虚拟机都需要做!!)1.关闭防火墙2. 配置操作系统3. 设置本机IP地址与MAC地址三...
    99+
    2022-11-13
  • Redis高可用集群的搭建配置
    这篇文章将为大家详细讲解有关Redis高可用集群的搭建配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis的集群主从模型是一种高可用的集群架构。本章主要内容有:高...
    99+
    2022-10-18
  • Hadoop集群坏境怎么搭建配置
    这篇文章主要讲解了“Hadoop集群坏境怎么搭建配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hadoop集群坏境怎么搭建配置”吧!一、硬件的选择首先,关于Hadoop集群环境硬件的选择...
    99+
    2023-06-02
  • Redis自动化安装及集群实现搭建过程
    Redis实例安装 安装说明:自动解压缩安装包,按照指定路径编译安装,复制配置文件模板到Redis实例路的数据径下,根据端口号修改 配置文件模板 配置文件,当前shell脚本,安装包 参数1:base...
    99+
    2022-10-18
  • Elasticsearches的集群搭建及数据分片过程详解
    目录Elasticsearch高级之集群搭建,数据分片广播方式单播方式选取主节点什么是脑裂错误识别Elasticsearch高级之集群搭建,数据分片 es使用两种不同的方式来发现对方...
    99+
    2022-11-12
  • Windows环境下搭建配置redis集群的教程
    Redis集群:Redis 集群是一个提供在多个Redis间节点间共享数据的程序集,集群节点共同构建了一个去中心化的网络,集群中的每个节点拥有平等的身份,节点各自保存各自的数据和集群状态。节点之间采用Gos...
    99+
    2022-10-18
  • Redis 5.02官方集群的搭建过程
    这篇文章主要介绍“Redis 5.02官方集群的搭建过程”,在日常操作中,相信很多人在Redis 5.02官方集群的搭建过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Re...
    99+
    2022-10-18
  • Docker ZooKeeper3.4.10集群安装配置过程
    目录一. 服务器规划二. 集群部署1. 配置1.1 创建宿主机映射目录1.2. 创建配置文件(3台zk节点配置文件一样)1.3. 配置zookeeper主机id,每个机器id不能相同...
    99+
    2022-11-13
  • Apache Pulsar集群搭建部署详细过程
    目录一、集群组成说明二、安装前置条件三、ZooKeeper集群搭建四、BookKeeper集群搭建五、Broker集群搭建六、docker安装pulsar-dashboard一、集群组成说明 1、搭建Pulsar集群至少...
    99+
    2022-06-05
    Apache Pulsar集群 Apache Pulsar集群搭建
  • SpringCloud eureka(server)微服务集群搭建过程
    目录工作原理:eureka 高可用集群项目创建:Maven 依赖本地hosts文件修改启动服务测试工作原理: Spring Cloud框架下的服务发现Eureka...
    99+
    2022-11-13
  • docker搭建es集群实现过程详解
    目录前言什么是es使用docker搭建es集群前言 该系列默认开启Nacos 服务,还不会搭建的小伙伴可以参考往期文章~ 本节重点是给大家介绍利用docker来搭建Es集群,废话...
    99+
    2023-01-31
    docker搭建es集群 es集群搭建
  • MySQL8.0 MIC高可用集群的搭建过程
    本篇内容主要讲解“MySQL8.0 MIC高可用集群的搭建过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL8.0 MIC高可用集群的搭建过程”吧!一,集群部署1 安装环境;操作系统:...
    99+
    2023-06-01
  • 大数据-HDFS 集群搭建的配置文件
    1.HDFS简单版集群搭建相关配置文件   1.core-site.xml文件 1 2 fs.defaultFS 3 hdfs://hadoop2:9000 4 5 6 7 hadoop....
    99+
    2018-04-22
    大数据-HDFS 集群搭建的配置文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作