安裝mysql 5.7.23
打開 http://repo.mysql.com/ 找到最新的,如mysql57-community-release-el7-11.noarch.rpm
wget?http://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh?mysql57-community-release-el7-11.noarch.rpm
ll /etc/yum.repos.d/

如想加速,執(zhí)行?wget -O ?/etc/yum.repos.d/CentOS-Base.repo ?http://mirrors.aliyun.com/repo/Centos-7.repo
yum install mysql-server
設置,
1.開啟慢查詢
long-query-time=3
slow-query-log=1
slow-query-log-file=/var/log/mysql/log-slow-queries.log
2.獲取臨時密碼
grep "temporary" /var/log/mysqld.log 或?grep "password" /var/log/mysqld.log
3.改密碼,不修改無法進行其他操作
SET PASSWORD = PASSWORD('your new password');
ALTER USER 'root'@'localhost' ?PASSWORD EXPIRE NEVER;
FLUSH ?PRIVILEGES;
———————————至此安裝已完成,下面是MGR的設置———————————
MGR的設置
編輯/etc/my.cnf
1.設置MGR復制框架 , 開啟binlog
server_id=3 ? (id自填)
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_slave_updates=ON
log_bin=binlog ? ?(默認值log_bin即為binlog,可以不加=binlog)
binlog_format=ROW
binlog_checksum=NONE
2.設置MGR
transaction_write_set_extraction=XXHASH64 ? ?(server必須為每個事務收集寫集合,并使用XXHASH64哈希算法將其編碼為散列)
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" ? (告知插件加入或創(chuàng)建組名,必須是UUID,可用工具創(chuàng)建)
loose-group_replication_start_on_boot=off ? ? ? ? ? (server啟動時不自啟組復制)
loose-group_replication_local_address="n0:13306" ? (告訴插件使用主機名或IP,自定義端口13306用于接收組中其他成員轉入連接,端口可改 )
loose-group_replication_group_seeds="n0:13306,n1:13306,n2:13306" ?(啟動組server,種子server,加入組應該連接這些主機和端口;其他server要加入組得由組成員同意)
loose-group_replication_ip_whitelist='n0,n1,n2' ? ? (可以忽略不寫)
loose-group_replication_bootstrap_group=off ? (表示是否啟動MySQL分組,在一個分組中,只應當允許一個成員啟動MySQL分組)
loose-group_replication_single_primary_mode=off ? ? ? ( 多主模式須為off ,單主模式為on)
loose-group_replication_enforce_update_everywhere_checks=true ? ? ? ( 多主模式須為true,單主模式為false)
以下操作均是登錄mysql后進行
3.創(chuàng)建MGR的復制賬號,并授權
#下面操縱不寫入二進制日志,避免修改傳遞給其他服務器,先關閉完成后再開啟;
set sql_log_bin=0;
create user rpl_user@'%' identified by 'rpl_pass'; ? ??#創(chuàng)建擁有replication slave權限mysql用戶,用戶名可自行替換
grant replication slave on *.* to rpl_user@'%' ;
flush privileges;
set sql_log_bin=1;
4 設置group_replication_recovery
#change master to命令將server配置為在下次需要從其他成員恢復狀態(tài)時,使用group_replication_recovery復制通道的給定賬號密碼
change master to master_user='rpl_user',master_password='rpl_pass' for channel 'group_replication_recovery';
5.安裝組復制插件
install plugin group_replication soname 'group_replication.so';
show plugins
6.啟動
6-9操作均是登錄mysql后進行
# 第1臺服務器啟動組復制,復制組只須啟動一次,第1臺服務器和其他服務器在此次之后都無需再做以下操作
set global group_replication_bootstrap_group=ON;
start group_replication;
set global group_replication_bootstrap_group=OFF;
7 其他服務器設置
重復1-5的步驟
8.其他服務器啟動及加入集群
set global group_replication_allow_local_disjoint_gtids_join=ON; ? ?非必須如提示錯誤則運行
start group_replication;
9. 檢測組是否創(chuàng)建并已加入新成員
select * from performance_schema.replication_group_members;
----------------------------------排錯----------------------------------------------------------------
[ERROR] Plugin group_replication reported: 'For details please check performance_schema.replication_connection_status table and error log messages of Slave I/O for channel group_replication_recovery.'
select * from performance_schema.replication_group_members; 查出主機名
修改/etc/hosts 把主機名添加進去,也可用IP代替主機名但不一定有效
2018-08-29T03:07:33.494884Z 0 [ERROR] Plugin group_replication reported: 'This member has more executed transactions than those present in the group. Local transactions: ecd4c59e-3bdc-11e8-9582-525400373379:1-4 > Group transactions: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-46'
2018-08-29T03:07:33.494916Z 0 [ERROR] Plugin group_replication reported: 'The member contains transactions not present in the group. The member will now exit the group.'
2018-08-29T03:07:33.494919Z 0 [Note] Plugin group_replication reported: 'To force this member into the group you can use the group_replication_allow_local_disjoint_gtids_join option'
解決:set global group_replication_allow_local_disjoint_gtids_join=ON; ?
出錯重啟,先STOP GROUP_REPLICATION; ?再START GROUP_REPLICATION;
注意:開啟防火墻和SELinux會導致失敗
---------------------------------其他指令----------------------------------------------------------
show global status like '%group_replication_primary%'; ? 僅適用于單主模式
show variables where Variable_name like '%hostname%'; ? 顯示主機IP
參考:https://www.cnblogs.com/jorzy/p/8455519.html
https://dev.mysql.com/doc/refman/5.7/en/group-replication-configuring-instances.html
https://www.cnblogs.com/shengdimaya/p/8436112.html
http://axiaoxin.com/article/237/