mysql 8.0 MRG

MRG部署

1.首先对部署的节点配置好hosts文件,如下

172.16.227.157 weisir01

172.16.227.158 weisir02

172.16.227.159 weisir03

2.关掉防火墙,一定切记

3.配置资源准备

ipportrole备注
172.16.227.1573311主节点(primary)端口对外提供数据请求
172.16.227.1573301端口作为集群通信端口
172.16.227.1583312从节点(secondary)端口对外提供数据请求
172.16.227.1583302端口作为集群通信端口
172.16.227.1593313从节点(secondary)端口对外提供数据请求
172.16.227.1593303端口作为集群通信端口

4.初始化数据(三个节点都执行)

PS:我这三个节点配置都相同,一条命令执行在三个机器

/usr/local/mysql80/bin/mysqld --no-defaults --initialize-insecure --user=mysql --basedir=/usr/local/mysql80 --datadir=/80/data

5.配置文件配置

 primary节点
[mysqld]
datadir=/80/data
basedir=/usr/local/mysql80
plugin_dir=/usr/local/mysql80/lib/plugin
port=3311
socket=/tmp/mysql80.sock
server_id=11
log-bin=/80/log/mysql-bin
gtid_mode= ON
enforce_gtid_consistency= ON
binlog_checksum=NONE
transaction_write_set_extraction = XXHASH64
loose-group_replication_recovery_use_ssl= ON
loose-group_replication_group_name = '5dbabbe6-8050-49a0-9131-1de449167446'
loose-group_replication_start_on_boot = OFF
loose-group_replication_local_address = '172.16.227.157:3301'
loose-group_replication_group_seeds = '172.16.227.157:3301,172.16.227.158:3302,172.16.227.159:3303'
loose-group_replication_bootstrap_group = OFF
[mysql]
port=3311
socket=/tmp/mysql80.sock

secondary(172.16.227.158)
[mysqld]
datadir=/80/data
basedir=/usr/local/mysql80
plugin_dir=/usr/local/mysql80/lib/plugin
port=3312
socket=/tmp/mysql80.sock
server_id=12
log-bin=/80/log/mysql-bin
gtid_mode= ON
enforce_gtid_consistency= ON
binlog_checksum=NONE
transaction_write_set_extraction = XXHASH64
loose-group_replication_recovery_use_ssl= ON
loose-group_replication_group_name = '5dbabbe6-8050-49a0-9131-1de449167446'
loose-group_replication_start_on_boot = OFF
loose-group_replication_local_address = '172.16.227.158:3302'
loose-group_replication_group_seeds = '172.16.227.157:3301,172.16.227.158:3302,172.16.227.159:3303'
loose-group_replication_bootstrap_group = OFF

[mysql]
port=3312
socket=/tmp/mysql80.sock


secondary(172.16.227.159)
[mysqld]
datadir=/80/data
basedir=/usr/local/mysql80
plugin_dir=/usr/local/mysql80/lib/plugin
port=3313
socket=/tmp/mysql80.sock
server_id=13
log-bin=/80/log/mysql-bin
gtid_mode= ON
enforce_gtid_consistency= ON
binlog_checksum=NONE
transaction_write_set_extraction = XXHASH64
loose-group_replication_recovery_use_ssl= ON
loose-group_replication_group_name = '5dbabbe6-8050-49a0-9131-1de449167446'
loose-group_replication_start_on_boot = OFF
loose-group_replication_local_address = '172.16.227.159:3303'
loose-group_replication_group_seeds = '172.16.227.157:3301,172.16.227.158:3302,172.16.227.159:3303'
loose-group_replication_bootstrap_group = OFF

[mysql]
port=3313
socket=/tmp/mysql80.sock

6.启动实例

  /usr/local/mysql80/bin/mysqld --defaults-file=/80/conf/my.cnf &

当启动的时候可能会报错,根据提示需要用root用户启动

[root@weisir01 data] # 2021-04-19T08:44:44.003913Z 0 [System] [MY-010116] [Server] /usr/local/mysql80/bin/mysqld (mysqld 8.0.18) starting as process 1383
2021-04-19T08:44:44.019504Z 0 [ERROR] [MY-010123] [Server] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
2021-04-19T08:44:44.019547Z 0 [ERROR] [MY-010119] [Server] Aborting
2021-04-19T08:44:44.019760Z 0 [System] [MY-010910] [Server] /usr/local/mysql80/bin/mysqld: Shutdown complete (mysqld 8.0.18)  MySQL Community Server - GPL.

然后就在命令行配上,启动成功了

/usr/local/mysql80/bin/mysqld --defaults-file=/80/conf/my.cnf --user=root &
[root@weisir01 data] # 2021-04-19T08:47:16.097975Z 0 [System] [MY-010116] [Server] /usr/local/mysql80/bin/mysqld (mysqld 8.0.18) starting as process 1506
2021-04-19T08:47:17.704598Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2021-04-19T08:47:17.709934Z 0 [Warning] [MY-000067] [Server] unknown variable 'loose-group_replication_recovery_use_ssl=ON'.
2021-04-19T08:47:17.710093Z 0 [Warning] [MY-000067] [Server] unknown variable 'loose-group_replication_group_name=5dbabbe6-8050-49a0-9131-1de449167446'.
2021-04-19T08:47:17.710252Z 0 [Warning] [MY-000067] [Server] unknown variable 'loose-group_replication_start_on_boot=OFF'.
2021-04-19T08:47:17.710384Z 0 [Warning] [MY-000067] [Server] unknown variable 'loose-group_replication_local_address=172.16.227.157:3301'.
2021-04-19T08:47:17.710539Z 0 [Warning] [MY-000067] [Server] unknown variable 'loose-group_replication_group_seeds=172.16.227.157:3301,172.16.227.158:3302,172.16.227.159:3303'.
2021-04-19T08:47:17.710674Z 0 [Warning] [MY-000067] [Server] unknown variable 'loose-group_replication_bootstrap_group=OFF'.
2021-04-19T08:47:17.729800Z 0 [System] [MY-010931] [Server] /usr/local/mysql80/bin/mysqld: ready for connections. Version: '8.0.18'  socket: '/tmp/mysql80.sock'  port: 3311  MySQL Community Server - GPL.
2021-04-19T08:47:17.874472Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx.sock' bind-address: '::' port: 33060

前面是基础,后面才是重头戏,来吧,让我们接着往下走,嗨起来
在启动的时候也可以把输出信息追加到一个文件中

mysqld --defaults-file=/80/conf/my.cnf  --user=root > /tmp/primary_output.log 2>&1 &

如果不加的话,每次有信息输出都会打印在屏幕上,看着心烦,😂
7.安装复制插件(所有节点)

mysql>INSTALL PLUGIN group_replication SONAME ‘group_replication.so’;

查看插件状态show plugins或者information_schema.plugins系统表中查询插件信息

select * from information_schema.plugins where plugin_name = 'group_replication'\G;

8.创建复制组用户(所有节点)

在启动mysql实例之后,必须创建一个用户,供服务器用于彼此连接。在组复制中,服务器都是互相“交流”的。这些命令与我们在mysql复制中使用的命令相同,我们需要在所有服务器实例上创建这个用户。

set sql_log_bin=0;

create user rpl@'%' identified by 'mysql';

grant replication slave on *.* to rpl@'%';

flush privileges;

set sql_log_bin=1;

9.在primary上启动复制(primary上执行)

group_replication_bootstrap_group参数通常在第一次启动的时候设置成OFF,因为复制组还没有启动,我们在primary上启动复制组。参数group_replication_boostrap_group是可以动态设置的,我们可以动态的打开和关闭这个参数。

set global group_replication_bootstrap_group=ON;

start group_replication;

10.连接secondaries到primary节点(secondaries上执行)

mysql> change master to master_user="rpl",master_password='mysql' for channel 'group_replication_recovery';

ps:现在我们已经将辅助设备配置为连接到主服务器,但是连接还没建立,我们必须通过启动组复制来完成此过程。

11.在secondaries上启动组复制

mysql> start group_replication;

12.确认集群状态

select * from performance_schema.replication_group_members\G;

13.关闭MGR集群(secondaries先,primary后)

node02:
mysql> stop group_replication;
Query OK, 0 rows affected (4.68 sec)

node03:
mysql> stop group_replication;
Query OK, 0 rows affected (4.68 sec)

node01:
mysql> stop group_replication;
Query OK, 0 rows affected (5.17 sec)

开启MGR集群(primary先,secondaries后)

node01:
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
Query OK, 0 rows affected (0.00 sec)

node02:
mysql> start group_replication;

node03:
mysql> start group_replication;
 
node01:
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 | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 195ef6aa-a0eb-11eb-b7ba-000c29070575 | weisir01    |        3311 | ONLINE       | PRIMARY     | 8.0.18         |
| group_replication_applier | 263d17b3-a0eb-11eb-b0c8-000c296885dd | weisir02    |        3312 | ONLINE       | SECONDARY   | 8.0.18         |
| group_replication_applier | 2c63b397-a0eb-11eb-bb42-000c2950f4c9 | weisir03    |        3313 | ONLINE       | SECONDARY   | 8.0.18         |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
3 rows in set (0.00 sec)

如果以上每个步骤都执行了,一般都不会出错误,我是踩了一天的坑部署好的,第一次部署的时候是hosts没有配,报错,第二次报错的时候是因为。。。。我也忘了,第三次报错是因为主节点没有开启组复制(SET GLOBAL group_replication_bootstrap_group=ON;)第四次部署报错是因为没有关闭防火墙,踩了一遍又一遍的坑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值