Mysql 8 group replication组复制集群单主配置图解
? ? ? ? ? ? ? ? ? ? ? ? ? ? Mysql 8 MGR集群單主配置圖解
聲明與簡介
本文的數(shù)據(jù)來自網(wǎng)絡,部分代碼也有所參照,這里做了注釋和延伸,旨在技術交流,如有冒犯之處請聯(lián)系博主及時處理。本文主要介紹mysql的MGR集群的配置。
MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引進的一個數(shù)據(jù)庫高可用與高擴展的解決方案,以插件形式提供,實現(xiàn)了分布式下數(shù)據(jù)的最終一致性。其特點如下:
- 高一致性:基于分布式paxos協(xié)議實現(xiàn)組復制,保證數(shù)據(jù)一致性;
- 高容錯性:自動檢測機制,只要不是大多數(shù)節(jié)點都宕機就可以繼續(xù)工作,內置防腦裂保護機制;
- 高擴展性:節(jié)點的增加與移除會自動更新組成員信息,新節(jié)點加入后,自動從其他節(jié)點同步增量數(shù)據(jù),直到與其他節(jié)點數(shù)據(jù)一致;
- 高靈活性:提供單主模式和多主模式,單主模式在主庫宕機后能夠自動選主,所有寫入都在主節(jié)點進行,多主模式支持多節(jié)點寫入
注:1 當前MGR集群驗證環(huán)節(jié)在VVMware虛擬機內,真實環(huán)境可略過虛擬機復制環(huán)節(jié)。
? ? ? ?2 當前虛擬機內mysql庫運行在Centos 8內,版本號是 8.0.23、端口號3306。
? ? ? ?3 MGR集群當前驗證環(huán)境192.168.111.128(host_128)是單主節(jié)點,host_129、host_130是從節(jié)點。
虛擬機復制
Step 1:先選擇一臺虛擬機(鼠標點中),然后找到克隆按鈕。
Step 2:克隆虛擬機當前狀態(tài)
?Step 3:選擇創(chuàng)建完整克隆
Step4:配置虛擬機名字和存儲位置
Step 5:耐心等待克隆完畢
Step 6:修改新克隆的虛擬機,修改IP
#修改網(wǎng)卡信息 vi /etc/sysconfig/network-scripts/ifcfg-ens33Step 7:修改主機名,配置IP與主機名映射。
# 定義IP與主機名映射 vi /etc/hostsStep 8:重啟服務器
#重啟虛擬機 reboot nowStep 9:同樣的方式操作另外一臺虛擬機。
準備環(huán)境
- 準備3臺版本一致(一樣)的mysql數(shù)據(jù)庫的主機,當前主服務數(shù)據(jù)庫服務的操作系統(tǒng)都是linux。詳見虛擬機復制環(huán)節(jié)。
- 192.168.111.128(host_128)是單主節(jié)點,192.168.111.129(host_129)、192.168.111.130(host_130)是從節(jié)點。
配置MGR集群
安裝MGR插件
-- 三臺主機里都安裝group_replication插件,可事先三臺都執(zhí)行該操作。 -- Step 1查看 MGR插件是否安裝,如果已安裝可忽略如下安裝插件環(huán)節(jié)。 SELECT?? PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE,?? PLUGIN_LIBRARY, PLUGIN_LICENSE FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'group%' AND PLUGIN_STATUS='ACTIVE'; -- Step 2 安裝MGR插件 install PLUGIN group_replication SONAME 'group_replication.so'; -- Step 3 驗證MGR插件狀態(tài) SELECT PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE, PLUGIN_LIBRARY, PLUGIN_LICENSE FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'group%' AND PLUGIN_STATUS='ACTIVE';生成集群組名
-- Way1 :參照官網(wǎng)使用固定的值aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,該值在三個節(jié)點都配置成一樣。-- Way2:通過uuid生成唯一的id。 select replace(uuid(),"-","") as uuid;配置單主節(jié)點MGR參數(shù)
Step? 1: 修改mysql配置文件/etc/my.cnf,追加引用外部文件參數(shù)
!include /etc/my.cnf.d/ mgr_auth.cnf
Step 2:? /etc/my.cnf.d目錄內新建MGR配置文件mgr_auth.cnf
Step 3 mgr_auth.cnf文件內配置如下內容:
[mysqld]
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
server_id=1 #其它節(jié)點相應修改,不能重復
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address= "host_128:33091" #修改成節(jié)點對應主機名
group_replication_group_seeds= "host_128:33091,host_129:33091,host_130:33091"
group_replication_bootstrap_group=off
注:1 這里的step 1外部引用MGR配置文件是為了mysql配置和MGR參數(shù)分離,如果不需要可以將MGR參數(shù)放置于mysql的配置文件內。
2 這里的group_replication_group_name來源于生成組名環(huán)節(jié)。
?端口加入防火墻信任列表
#MGR集群組復制端口33091加入信任列表 firewall-cmd --add-port=33091/tcp --permanent firewall-cmd --reload firewall-cmd --list-all #注:如果防火墻關閉,可忽略此步驟。重啟單主mysql
#重啟單主節(jié)點數(shù)據(jù)庫 service mysqld restart創(chuàng)建同步用戶
--單主節(jié)點創(chuàng)建該用戶并賦予從服務復制權限,從節(jié)點在配置其它節(jié)點環(huán)節(jié)會有相同的操作。 SET SQL_LOG_BIN=0; create user rpl_user@'%' identified by 'Rpl_user123'; GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%'; GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%'; FLUSH PRIVILEGES; SET SQL_LOG_BIN=1;啟動MGR集群主節(jié)點
--在單主節(jié)點上啟動MGR集群引導 SET GLOBAL group_replication_bootstrap_group=ON;--用之前創(chuàng)建的用戶rpl_user創(chuàng)建同步規(guī)則認證 CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Rpl_user123' FOR CHANNEL 'group_replication_recovery';-- 啟動MGR start group_replication;-- 查看MGR集群狀態(tài) SELECT * FROM performance_schema.replication_group_members;--在主庫上關閉MGR集群引導 SET GLOBAL group_replication_bootstrap_group=OFF;配置其它從節(jié)點
#Step 1:scp分發(fā)mysql配置文件到129和130主機上去 scp -r /etc/my.cnf root@host_129:/etc/ scp -r /etc/my.cnf root@host_130:/etc/ #Step 2:分發(fā)MGR配置文件到129和130主機上去 scp -r /etc/my.cnf.d/mgr_auth.cnf root@host_129:/etc/my.cnf.d/ scp -r /etc/my.cnf.d/mgr_auth.cnf root@host_130:/etc/my.cnf.d/ #Step3: 分別修改129、130 里的MGR配置文件。 #host_129內mgr_auth.cnf文件里修改部分的參數(shù)有: server-id = 2 group_replication_local_address= "host_129:33091"#host_130內mgr_auth.cnf文件里修改部分的參數(shù)有: server-id = 3 group_replication_local_address= "host_130:33091"啟動MGR集群從節(jié)點
-- 將節(jié)點host_129里接入組。 -- Step 1:重復創(chuàng)建同步用戶環(huán)節(jié)在從節(jié)點里創(chuàng)建用戶并賦權。-- Step 2:添加用戶認證 CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='Rpl_user123' FOR CHANNEL 'group_replication_recovery';-- 注: mysql 8.0.23之前版本用以下命令: /* CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD=' Rpl_user123' FOR CHANNEL 'group_replication_recovery'; */-- Step 3:開始group_replication組復制,使得當前節(jié)點接入組。 START GROUP_REPLICATION;-- Step 4:當前節(jié)點上查看MGR集群 成員與狀態(tài) SELECT * FROM performance_schema.replication_group_members;以上同樣的操作應用于host130,最終集群的狀態(tài)都在線且一個是Primary,另外兩個是SECONDARY。至此MGR單主模式搭建完畢。
驗證
從節(jié)點數(shù)據(jù)庫修改
從庫里插入數(shù)據(jù)時報錯,符合單主模式的特點(即僅主節(jié)點可寫,從節(jié)點不可寫)。
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement
延展閱讀
查看插件系統(tǒng)路徑
-- SQL命令查看插件的系統(tǒng)路徑 show variables like 'plugin%';查看MGR插件位置
#查看MGR插件系統(tǒng)路徑 ll /usr/lib64/mysql/plugin/ | grep group*查看plugin命令幫助手冊
-- 查看SQL命令的使用說明 ? show plugins;注:show plugins命令官方詳細介紹。
重新初始化數(shù)據(jù)庫
#Step 1初始化數(shù)據(jù)庫 #賦予數(shù)據(jù)目錄訪問權限給mysql用戶 chown -R mysql:mysql /data/mysql/ # 刪除數(shù)據(jù)目錄下文件 rm -rf /data/mysql/* #初始化數(shù)據(jù)庫 mysqld --initialize --user=mysql --basedir=/usr/ --datadir=/data/mysql/ # 找到生成的臨時密碼 grep 'temporary password'? /var/log/mysqld.log注:1 初始化數(shù)據(jù)庫操作僅限于實驗或者新環(huán)境。
? ? ? ?2 初始化mysql時配置參數(shù)不能有錯誤。
# Step 2 啟動服務修改數(shù)據(jù)庫密碼 # 啟動mysql服務 service mysqld start # 以初始密碼登入數(shù)據(jù)庫 mysql -uroot -p'czkik+j)y84A' # 修改新的數(shù)據(jù)庫密碼(Mysql里操作) alter user root@localhost identified by 'root1234';總結
以上是生活随笔為你收集整理的Mysql 8 group replication组复制集群单主配置图解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农业银行的卡能在别的银行存钱吗
- 下一篇: 支付宝办理的etc怎么安装激活