日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql 8 group replication组复制集群单主配置图解

發(fā)布時間:2024/9/27 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql 8 group replication组复制集群单主配置图解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? 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-ens33

Step 7:修改主機名,配置IP與主機名映射。

# 定義IP與主機名映射 vi /etc/hosts

Step 8:重啟服務器

#重啟虛擬機 reboot now

Step 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组复制集群单主配置图解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。