mysql的组复制

1.配置server1

1.关闭server1的mysqld并删除数据,查看uuid

[root@server1 mysql]# systemctl stop mysqld
[root@server1 mysql]# rm -fr  *
[root@server1 mysql]# cat auto.cnf 
[auto]
server-uuid=ad3a5dd5-b76f-11e9-bb9b-5254004772f0

在这里插入图片描述2.编辑mysql配置文件,并重启数据库

[root@server1 mysql]# vim /etc/my.cnf
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		##指示server必须为每个事务收集写集合,并使用XXHASH64哈希算法将其编码为散列
loose-group_replication_group_name="3f7d3133-b4fb-11e9-a23a-52540039676f"		##告知插件,正在加入或创建的组要命名
loose-group_replication_start_on_boot=off		##指示插件在server启动时不自动启动组复制
loose-group_replication_local_address= "172.25.16.1:33061"		##告诉插件使用IP地址本地主机,端口33061用于接收来自组中其他成员的传入连接
loose-group_replication_group_seeds= "172.25.16.1:33061,172.25.16.2:33061,172.25.16.3:33061"
loose-group_replication_bootstrap_group=off		##配置是否自动引导组
loose-group_replication_ip_whitelist="127.0.0.1,172.25.16.0/24"		##用户白名单
		loose-group_replication_enforce_update_everywhere_checks=ON			##多主模式下为多主更新启用或禁用严格一致性检查	
loose-group_replication_single_primary_mode=OFF		##设置组自动选择一个server来处理读/写工作

[root@server1 mysql]# systemctl start mysqld
[root@server1 mysql]# systemctl restart mysqld

在这里插入图片描述
在这里插入图片描述3.获取初始密码,并登陆数据库修改密码

[root@server1 mysql]# cat /var/log/mysql.log | grep password
2019-08-05T10:56:28.716457Z 1 [Note] A temporary password is generated for root@localhost: QllupXywe3;b
[root@server1 mysql]# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24-log

Copyright (c) 2000, 2018, 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> alter user root@localhost identified by 'Szy+123en';

在这里插入图片描述4.在server1上启动组复制

mysql> show databases;  
mysql> SET SQL_LOG_BIN=0;	#禁用二进制日至
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Bgg+2019';	#创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';	#加用户权限
mysql> FLUSH PRIVILEGES;	#刷新数据
mysql> SET SQL_LOG_BIN=1;	#启用二进制日至
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Szy+123en' FOR CHANNEL 'group_replication_recovery';	#当配置了用户,使用CHANGE MASTER TO语句将服务器为下一次需要从其他成员恢复状态时使SET SQL_LOG_BIN=0;用group_replication_recovery复制通道的给定凭证,发出以下命令,用创建用户时直接使用的值替换rpl_user和密码
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';	#安装组插件
mysql> SHOW PLUGINS; 
mysql> SET GLOBAL group_replication_bootstrap_group=ON;		#master上要先打开,等打开组复制之后再开启(slave上不用进行)
mysql> START GROUP_REPLICATION; #打开组复制
mysql>  SET GLOBAL group_replication_bootstrap_group=OFF;  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述5.在server1上创建表,便于测试

mysql> create database test;
Query OK, 1 row affected (0.02 sec)

mysql> use test;
Database changed
mysql> create table class (name int primary key,grades text not null);
Query OK, 0 rows affected (0.06 sec)
mysql> insert into class values (1,'tom');
Query OK, 1 row affected (0.02 sec)

mysql> select * from class
    -> ;
+------+--------+
| name | grades |
+------+--------+
|    1 | tom    |
+------+--------+
1 row in set (0.00 sec)

6.查看server1是否加入组复制群组

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | ad3a5dd5-b76f-11e9-bb9b-5254004772f0 | server1     |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
1 row in set (0.00 sec)

2.配置server2

1.清空数据库数据

[root@server2 ~]# systemctl stop mysqld
[root@server2 ~]# cd /var/lib/mysql
[root@server2 mysql]# ls
[root@server2 mysql]# rm -rf *

2.修改数据库配置文件

[root@server2 ~]# vim /etc/my.cnf
enforce-gtid-consistency=true
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="3f7d3133-b4fb-11e9-a23a-52540039676f"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.25.16.2:33061"
loose-group_replication_group_seeds= "172.25.16.1:33061,172.25.16.2:33061,172.25.16.3:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_ip_whitelist="127.0.0.1,172.25.16.0/24"
loose-group_replication_enforce_update_everywhere_checks=ON
loose-group_replication_single_primary_mode=OFF

[root@server2 ~]# systemctl start  mysqld

在这里插入图片描述3.获取临时密码,进入数据库修改密码

[root@server2 mysql]# cat /var/log/mysqld.log | grep password
2019-08-05T11:51:03.681848Z 1 [Note] A temporary password is generated for root@localhost: >NuN6,w2sEq(
[root@server2 mysql]# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24-log

Copyright (c) 2000, 2018, 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> alter user root@localhost identified by 'Szy+123en';
Query OK, 0 rows affected (0.02 sec)

4.启动server2的组复制

mysql> SET SQL_LOG_BIN=0;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Szy+123en';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_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='rpl_user', MASTER_PASSWORD='Szy+123en' FOR CHANNE
Query OK, 0 rows affected, 2 warnings (0.09 sec)

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

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.90 sec)

测试:在server1上查看server2是否加入组复制群组,是否在线

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 4d41bf26-b777-11e9-aa93-52540039676f | server2     |        3306 | ONLINE       |
| group_replication_applier | ad3a5dd5-b76f-11e9-bb9b-5254004772f0 | server1     |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
2 rows in set (0.00 sec)

在这里插入图片描述
在server1的class表插入的数据,看server2是否同步成功
在这里插入图片描述

3.配置server3

1.将server2的安装包传给server3
在这里插入图片描述2.安装所有包
在这里插入图片描述3.编辑mysql配置文件

[root@server3 ~]# vim /etc/my.cnf
server-id=3
gtid_mode=ON
enforce-gtid-consistency=true
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="3f7d3133-b4fb-11e9-a23a-52540039676f"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.25.16.3:33061"

[root@server3 ~]# systemctl start mysqld

在这里插入图片描述

4.获取临时密码,进入数据库并修改密码

[root@server3 ~]# cat /var/log/mysqld.log | grep password
2019-08-05T12:29:43.983430Z 1 [Note] A temporary password is generated for root@localhost: bcj(gD>Uk6oF
[root@server3 ~]# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24-log

Copyright (c) 2000, 2018, 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> alter user root@localhost identified by 'Szy+123en';
Query OK, 0 rows affected (0.02 sec)

5.在server3开启组复制

mysql> SET SQL_LOG_BIN=0;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'Szy+123en';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_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='rpl_user', MASTER_PASSWORD='Szy+123en' FOR CHANNEL 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.08 sec)

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

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 (3.50 sec)

测试:
在server1上查看server3是否加入,并在线

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 4d41bf26-b777-11e9-aa93-52540039676f | server2     |        3306 | ONLINE       |
| group_replication_applier | ad3a5dd5-b76f-11e9-bb9b-5254004772f0 | server1     |        3306 | ONLINE       |
| group_replication_applier | b4443ef0-b77c-11e9-98b7-52540046c65d | server3     |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.08 sec)

server3是否能够查看class表里的数据
在这里插入图片描述

在server3的class表里添加信息
在这里插入图片描述
server2和server1可以查看到添加的信息
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值