mysql 5.7 安裝及MGR的設置

安裝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/

安裝后新增2個源

如想加速,執(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/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容