MGR mysql group 初识

数据库版本信息:

Current user: root@localhost

SSL:         Not in use

Server version: 8.0.18 MySQL Community Server - GPL

Protocol version: 10

Connection:  Localhost via UNIX socket

版本选择原因:

 MySQL Group Replication 功能是在MySQL-5.7.17这个版本上引入的,MGR基于分布式paxos协议,实现组复制,保证数据一致性。内置故障检测和自动选主功能,它实现了MySQL各个结点间数据强一致性。但是在5.7.20版本之前,MySQL Group Replication还不完善,存在各种问题,所以搭建MySQL Group Replication集群建议采用5.7.20之后的版本,最好采用8.0版本。本文档采用8.0.18来搭建MGR集群环境,且采用MGR的单主模式。

搭建MGR架构:

主机IP端口

10.1.12.126

3306
10.1.12.1273306
10.1.12.1283306

配置第一个实例:

在主机10.1.12.126搭建完单机数据库实例。

其中my.cnf文件的配置调整:

其中:loose-group_replication_group_name 可通过select uuid();生成,三个实例名称一致

############### REPLICATION ###############
binlog_checksum                   = NONE
binlog_format                      = ROW
master_info_repository              = TABLE
relay_log_info_repository            = TABLE
server_id                         = 3299825126
skip_slave_start                    = ON
################Group Replication##########
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="9d247241-38c5-11e9-80a5-005056b57b19"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="10.1.12.126:24901"
loose-group_replication_group_seeds="10.1.12.126:24901,10.1.12.127:24901,10.1.12.128:24901"

loose-group_replication_bootstrap_group=off

启动10.1.12.126上实例:

cd  $MYSQL_HOME
bin/mysqld_safe  --defaults-file=/mysql/my3306/my.cnf

创建复制用户与授权,并让其作为group的第一个成员:

SET SQL_LOG_BIN=0;
CREATE USER dbsync@’%’ IDENTIFIED BY 'dbsync@1234';
GRANT REPLICATION SLAVE ON *.* TO dbsync@’%’;
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='dbsync', MASTER_PASSWORD='dbsync@1234' FOR CHANNEL 'group_replication_recovery';

安装MGR插件:

安装GR插件
(root@localhost) [(none)]> INSTALL PLUGIN group_replication SONAME 'group_replication.so';

Query OK, 0 rows affected (0.07 sec)

可以检查安装结果:
(root@localhost) [(none)]> SELECT * FROM information_schema.plugins WHERE PLUGIN_NAME LIKE '%group%'\G
*************************** 1. row ***************************
           PLUGIN_NAME: group_replication
        PLUGIN_VERSION: 1.0
         PLUGIN_STATUS: ACTIVE
           PLUGIN_TYPE: GROUP REPLICATION
   PLUGIN_TYPE_VERSION: 1.1
        PLUGIN_LIBRARY: group_replication.so
PLUGIN_LIBRARY_VERSION: 1.7
         PLUGIN_AUTHOR: Oracle
    PLUGIN_DESCRIPTION: Group Replication (1.0.0)
        PLUGIN_LICENSE: GPL
           LOAD_OPTION: ON
1 row in set (0.00 sec)

开启第一个组复制:

(root@localhost) [(none)]> SET GLOBAL group_replication_bootstrap_group=ON;
(root@localhost) [(none)]> START GROUP_REPLICATION;
(root@localhost) [(none)]> SET GLOBAL group_replication_bootstrap_group=OFF;

启动组复制之后将group_replication_bootstrap_group设置为OFF:

This option must only be set on one server and only when starting the group for the first time or restarting the entire group. After the group has been bootstrapped, set this option to OFF. It should be set to OFF both dynamically and in the configuration files

检查组复制成员

member_id是@@server_uuid的值

(root@localhost) [(none)]> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME    | MEMBER_ID  | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 9d247241-38c5-11e9-80a5-005056b57b19 | mysql01| 3306 | ONLINE  |
+---------------------------+--------------------------------------+-------------+-------------+--------------+

1 row in set (0.00 sec)

配置第二个实例10.1.12.127

2.1 安装软件

在主机10.1.12.127搭建完单机数据库实例。

其中my.cnf文件的配置调整:

其中:

loose-group_replication_group_name 可通过select uuid();生成

server_id  每个实例值不同

############# REPLICATION #############
binlog_checksum                   = NONE
binlog_format                      = ROW
master_info_repository              = TABLE
relay_log_info_repository            = TABLE
server_id                         = 3299825127
skip_slave_start                    = ON
################Group Replication##########
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="9d247241-38c5-11e9-80a5-005056b57b19"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="10.1.12.127:24901"
loose-group_replication_group_seeds="10.1.12.126:24901,10.1.12.127:24901,10.1.12.128:24901"
loose-group_replication_bootstrap_group=off

启动10.1.12.127上实例:

cd  $MYSQL_HOME
bin/mysqld_safe  --defaults-file=/mysql/my3306/my.cnf &

创建复制用户与授权,并让其作为group的第二个成员

SET SQL_LOG_BIN=0;
CREATE USER dbsync@’%’ IDENTIFIED BY 'dbsync@1234';
GRANT REPLICATION SLAVE ON *.* TO dbsync@’%’;
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='dbsync', MASTER_PASSWORD='dbsync@1234' FOR CHANNEL 'group_replication_recovery';

安装MGR插件

安装GR插件
(root@localhost) [(none)]> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
Query OK, 0 rows affected (0.07 sec)
可以检查安装结果:
(root@localhost) [(none)]> SELECT * FROM information_schema.plugins WHERE PLUGIN_NAME LIKE '%group%'\G
*************************** 1. row ***************************
           PLUGIN_NAME: group_replication
        PLUGIN_VERSION: 1.0
         PLUGIN_STATUS: ACTIVE
           PLUGIN_TYPE: GROUP REPLICATION
   PLUGIN_TYPE_VERSION: 1.1
        PLUGIN_LIBRARY: group_replication.so
PLUGIN_LIBRARY_VERSION: 1.7
         PLUGIN_AUTHOR: Oracle
    PLUGIN_DESCRIPTION: Group Replication (1.0.0)
        PLUGIN_LICENSE: GPL
           LOAD_OPTION: ON
1 row in set (0.00 sec)

开启组复制:

(root@localhost) [(none)]> START GROUP_REPLICATION;

 检查组复制情况:

(root@localhost) [(none)]> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME  | MEMBER_ID  | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 9d247241-38c5-11e9-80a5-005056b57b19 | mysql01| 3306  | ONLINE |
| group_replication_applier | 9d247241-38c5-11e9-80a5-005056b57b19 | mysql02 | 3306| ONLINE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
2 rows in set (0.00 sec)

配置第三个实例10.1.12.128:

安装软件

在主机10.1.12.128搭建完单机数据库实例。

其中my.cnf文件的配置调整:

其中:loose-group_replication_group_name 可通过select uuid();生成

server_id  每个实例值不同

############# REPLICATION #############
binlog_checksum                   = NONE
binlog_format                      = ROW
master_info_repository              = TABLE
relay_log_info_repository            = TABLE
server_id                         = 3299825128
skip_slave_start                    = ON
################Group Replication##########
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="9d247241-38c5-11e9-80a5-005056b57b19"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="10.1.12.128:24901"
loose-group_replication_group_seeds="10.1.12.126:24901,10.1.12.127:24901,10.1.12.128:24901"
loose-group_replication_bootstrap_group=off

  启动10.1.12.128上实例:

cd  $MYSQL_HOME
bin/mysqld_safe  --defaults-file=/mysql/my3306/my.cnf &

创建复制用户与授权,并让其作为group的第三个成员:

SET SQL_LOG_BIN=0;
CREATE USER dbsync@’%’ IDENTIFIED BY 'dbsync@1234';
GRANT REPLICATION SLAVE ON *.* TO dbsync@’%’;
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='dbsync', MASTER_PASSWORD='dbsync@1234' FOR CHANNEL 'group_replication_recovery';

安装MGR插件:

安装GR插件
(root@localhost) [(none)]> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
Query OK, 0 rows affected (0.07 sec)
可以检查安装结果:
(root@localhost) [(none)]> SELECT * FROM information_schema.plugins WHERE PLUGIN_NAME LIKE '%group%'\G
*************************** 1. row ***************************
           PLUGIN_NAME: group_replication
        PLUGIN_VERSION: 1.0
         PLUGIN_STATUS: ACTIVE
           PLUGIN_TYPE: GROUP REPLICATION
   PLUGIN_TYPE_VERSION: 1.1
        PLUGIN_LIBRARY: group_replication.so
PLUGIN_LIBRARY_VERSION: 1.7
         PLUGIN_AUTHOR: Oracle
    PLUGIN_DESCRIPTION: Group Replication (1.0.0)
        PLUGIN_LICENSE: GPL
           LOAD_OPTION: ON
1 row in set (0.00 sec)

开启组复制:

(root@localhost) [(none)]> START GROUP_REPLICATION;

 检查组复制情况:

(root@localhost) [(none)]> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME  | MEMBER_ID  | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 9d247241-38c5-11e9-80a5-005056b57b19 | mysql01| 3306  | ONLINE |
| group_replication_applier |9d247241-38c5-11e9-80a5-005056b57b19 | mysql02| 3306| ONLINE|
| group_replication_applier | 9d247241-38c5-11e9-80a5-005056b57b19 | mysql03| 3306 | ONLINE|
+---------------------------+--------------------------------------+-------------+-------------+--------------+
2 rows in set (0.00 sec)

常用命令:

查看成员信息:

mysql > select * from performance_schema.replication_group_members;  

查看节点信息:

mysql > select * from performance_schema.replication_group_member_stats \G

查看主节点:

mysql > select variable_value from performance_schema.global_status where variable_name='group_replication_primary_member';  

查看主节点方式2:

select @@read_only;

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值