1 安裝mysql5.7
2 配置hosts映射
cat /etc/hosts
172.19.84.44 mgr1
172.19.84.45 mgr2
172.19.84.43 mgr3
重啟服務(wù)器
3 my.cnf [mysqld]下增加如下配置
#基本配置
server_id=1
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
# 組復(fù)制設(shè)置
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="172.19.84.44:36901"
loose-group_replication_group_seeds= "172.19.84.44:36901,172.19.84.45:36901,172.19.84.43:36901"
loose-group_replication_bootstrap_group=off
如果使用多主模式增加
[group_replication_single_primary_mode=OFF](https://dev.mysql.com/doc/refman/5.7/en/group-replication- options.html#sysvar_group_replication_single_primary_mode) #關(guān)閉指示組自動(dòng)選擇單個(gè)服務(wù)器作為處理讀/寫(xiě)工作負(fù)載的服務(wù)器
group_replication_enforce_update_everywhere_checks=ON #在所有位置啟用多主數(shù)據(jù)更新的嚴(yán)格一致性檢查,在單主模式下,這不是問(wèn)題,因?yàn)樗辉试S并發(fā)寫(xiě)入組的多個(gè)成員,因此不存在未檢測(cè)到的沖突的風(fēng)險(xiǎn)。
組中其他服務(wù)器的配置類(lèi)似。server_id,loose-group_replication_local_address等需要根據(jù)當(dāng)前服務(wù)器的情況設(shè)置.
執(zhí)行:
service mysqld restart
6
mysql> create user repl@'%' identified by 'mysql';
grant replication slave on . to repl@'%';
FLUSH PRIVILEGES;
默認(rèn)不允許公網(wǎng)的互相連接,如果未明確指定白名單,則服務(wù)器會(huì)自動(dòng)將白名單設(shè)置為服務(wù)器具有接口的專(zhuān)用網(wǎng)絡(luò)。這意味著服務(wù)器即使在公共IP上具有接口,也不會(huì)默認(rèn)允許來(lái)自外部主機(jī)的連接。
需要為所有成員指定相同的白名單。
SET GLOBAL group_replication_ip_whitelist="192.0.2.21/24,198.51.100.44,203.0.113.0/24,example.org,www.example.com/24";
7 CHANGE MASTER TO MASTER_USER='repl',MASTER_PASSWORD='mysql' FOR CHANNEL 'group_replication_recovery';
change master to master_user='repl', master_password='mysql' for channel 'group_replication_recovery';
8 INSTALL PLUGIN group_replication SONAME 'group_replication.so';
SHOW PLUGINS;
9 啟動(dòng)組
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
10 檢查組是否創(chuàng)建成功
SELECT * FROM performance_schema.replication_group_members;
11 檢測(cè)服務(wù)器確實(shí)在一個(gè)組中并且它能夠處理負(fù)載:
mysql> CREATE DATABASE test;
mysql> USE test;
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);
mysql> INSERT INTO t1 VALUES (1, 'Luis');
SELECT * FROM t1;
SHOW BINLOG EVENTS;
12 在第二個(gè)服務(wù)器
SET SQL_LOG_BIN=0;
CREATE USER repl@'%' IDENTIFIED BY 'mysql';
GRANT REPLICATION SLAVE ON . TO repl@'%';
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='repl',MASTER_PASSWORD='mysql' FOR CHANNEL 'group_replication_recovery';
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
SHOW PLUGINS;
set global group_replication_allow_local_disjoint_gtids_join=ON;
將服務(wù)器s2添加到組中: START GROUP_REPLICATION;
SELECT * FROM performance_schema.replication_group_members;
驗(yàn)證:
SHOW DATABASES LIKE 'test';
SELECT * FROM test.t1;
SHOW BINLOG EVENTS;
===========================查找主服務(wù)器========================================
SHOW STATUS LIKE 'group_replication_primary_member'
=============================主要問(wèn)題解決==================================
從服務(wù)器啟動(dòng)之后一直報(bào):
RECOVERING :
方法1 :重啟服務(wù)器之后。
主服務(wù)器mysql執(zhí)行reset master.
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
從服務(wù)器;
reset master
直接
set global group_replication_allow_local_disjoint_gtids_join=ON;
START GROUP_REPLICATION;
reset master。
方法2:
1 在正常節(jié)點(diǎn):
select * from performance_schema.replication_group_member_stats \G ;
2 獲取正常節(jié)點(diǎn)的TRANSACTIONS_COMMITTED_ALL_MEMBERS
值: eg: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-151,b376058d-5762-11e7-baa0-000c29e6b568:1-47678
3 在非正常節(jié)點(diǎn)執(zhí)行:
set global gtid_purged='740ab1ab-d818-11e8-a6bc-00163e0aecff:1-7,
aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-37';
4 start group_replication;
5 如果還不行,第一步加上reset master;
6 如果第3步提示 提示ERROR 1840 (HY000): @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty. ,先執(zhí)行reset master;
=============================================================
1:沒(méi)有設(shè)置白名單網(wǎng)段:需要添加自己所在網(wǎng)段.
報(bào)錯(cuò):'[GCS] The member is leaving a group without being on one.'
解決:set global group_replication_ip_whitelist="127.0.0.1/32,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,192.168.1.0/24"; START GROUP_REPLICATION;
從服務(wù)啟動(dòng)復(fù)制如果報(bào)錯(cuò):
2:ERROR 3092 (HY000): The server is not configured properly to be an active member of the group. Please see more details on error log.1
解決方案:
根據(jù)提示打開(kāi)group_replication_allow_local_disjoint_gtids_join選項(xiàng),mysql命令行執(zhí)行:
mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;
再次啟動(dòng)組復(fù)制
mysql> START GROUP_REPLICATION;