Mysql8 InnoDB Cluster Shell Router HA配置图解
? ? ? ? ? ? ? ? ? ? ? ? ? ?Mysql8 InnoDB集群配置圖解
聲明與簡介
本文的數(shù)據(jù)來自網(wǎng)絡(luò),部分代碼也有所參照,這里做了注釋和延伸,旨在技術(shù)交流,如有冒犯之處請聯(lián)系博主及時(shí)處理。本文主要介紹mysql InnoDB Cluster(集群)的配置及操作。
注: 1??當(dāng)前已經(jīng)在CentOS8里安裝配置單主MGR集群,詳見?Mysql 8 MGR集群單主配置圖解?、??Mysql8 MGR集群操作圖解
? ? ? ? 2? 當(dāng)前各節(jié)點(diǎn)內(nèi)mysql版本是8.0.23,其中host_128是單主、host_129、Host_130是從節(jié)點(diǎn)。
? ? ? ? 3 當(dāng)前安裝方式是RPM離線包。
官方介紹
- MySQL InnoDB Cluster為MySQL提供了完整的高可用性解決方案。
- MySQL Shell的AdminAPI可以輕松地配置和管理一組至少三個(gè)MySQL服務(wù)器實(shí)例,以充當(dāng)InnoDB集群。每個(gè)數(shù)據(jù)庫實(shí)例都運(yùn)行組復(fù)制,這通過內(nèi)置故障轉(zhuǎn)移提供一個(gè)復(fù)制 InnoDB Clusters數(shù)據(jù)的方法。有了AdminAPI,客戶端將不在與InnoDB群集直接交互。
- MySQL Router可以根據(jù)之前的部署自動配置, 可以協(xié)助客戶端程序跟數(shù)據(jù)庫服務(wù)實(shí)例無感連接,在集群內(nèi)某個(gè)實(shí)例掉線時(shí)集群會自動重新配置。
- 在單主模式下,InnoDB集群僅有一個(gè)讀寫服務(wù)器實(shí)例(即單主節(jié)點(diǎn))。多個(gè)從節(jié)點(diǎn)是單主的副本。如果主發(fā)生故障,則從節(jié)點(diǎn)會選舉一個(gè)作為單主。MySQL Router會檢測到這種變化并將客戶端應(yīng)用程序轉(zhuǎn)發(fā)到新的單主上。高級用戶還可以將集群配置配置成多主模式。
個(gè)人理解
- MySQL InnoDB Cluster是建立在group repalication基礎(chǔ)之上的高可用方案,其中MGR是基礎(chǔ)。
- Mysql shell作為客戶端提供對集群的管理和訪問,支持JS、Python、SQL三種方式。可謂新一代mysql client。
- Mysql Router主要提供對集群的檢測和自動配置以及訪問端口的映射。
- MySQL InnoDB Cluster的HA方案有三劍客MySQL MGR、MySQL SHELL、MySQL Router構(gòu)成。
InnoDB集群工作流程
MySQL InnoDB Cluster Workflow:
下載安裝Mysql Shell
下載并安裝Mysql Shell,這里采用離線rpm的方式,免安裝(解壓配置環(huán)境變量)方式,后文會有提及。
下載Mysql Shell
Step 1 下載安裝Mysql Shell
MySQL :: Download MySQL Shell?里找到 Archives(歸檔)按鈕下載Mysql Shell 8.0.23
Step 2 :選擇軟件版本、操作系統(tǒng)、操作系統(tǒng)版本
注:綠色(免安裝)版可下載gz文件如 mysql-shell-8.0.23-linux-glibc2.12-x86-64bit.tar.gz,見下例:
安裝Mysql Shell
此步驟在集群的3臺主機(jī)上都要操作。
Step 1 通過SSH客戶端重新上傳Mysql Shell rpm包。
Step 2:切換到上傳后的目錄準(zhǔn)備安裝
#切換到rpm包目錄 cd /root/softwares/mysql/Step 3:通過rpm方式離線安裝
# 安裝mysql-shell rpm -ivh mysql-shell-8.0.23-1.el8.x86_64.rpm注:如果不知道Mysql Shell目錄行的位置,可以通過 rpm的ql參數(shù)查詢:
#查詢r(jià)pm包的安裝路徑 rpm -ql mysql-shell-8.0.23-1.el8.x86_64Step 4:查看mysql-shell版本
# 查看mysql shell的版本,結(jié)果見如下注釋部分 mysqlsh –V #mysqlsh?? Ver 8.0.23 for Linux on x86_64 - for MySQL 8.0.23 (MySQL Community Server (GPL))Step 5:分發(fā)到其它節(jié)點(diǎn),重復(fù)Step1到Step4,這里僅演示分發(fā)。
# SCP分發(fā)到從節(jié)點(diǎn),并以上述步驟安裝 scp -r mysql-shell-8.0.23-1.el8.x86_64.rpm root@host_129:/root/softwares/mysql/使用Mysql Shell配置集群
Step 1:Mysql shell連入單主節(jié)點(diǎn)
# 通過mysqlsh進(jìn)入本機(jī)數(shù)據(jù)庫 mysqlsh -uroot -proot1234Step 2:創(chuàng)建Innodb集群,這里adoptFromGR即以適應(yīng)當(dāng)前group replication方式加入集群。
// 創(chuàng)建集群 dba.createCluster('testInnodbCluster', {adoptFromGR: true});?注:這里mysql的root用戶訪問主機(jī)權(quán)限(比如'%')需要打開,如果僅能訪問localhost則命令為報(bào)錯(cuò)。詳見文末的問題章節(jié)。
Step 3:查看集群狀態(tài)
//查看集群狀態(tài) dba.getCluster("testInnodbCluster").status()Step 4:生成Innodb Cluster集群管理員,單獨(dú)管理集群而不再以root方式。
//通過root用戶登錄后指定新的集群管理員,手動輸入用戶密碼。 dba.getCluster("testInnodbCluster").setupAdminAccount('icadmin');注:icadmin用戶密碼是icadmin123
下載安裝mysql router
下載mysql router
Step 1 下載安裝Mysql Router
MySQL :: Download MySQL Router?里找到 Archives(歸檔)按鈕下載Mysql Router 8.0.23
Step 2 :選擇軟件版本、操作系統(tǒng)、操作系統(tǒng)版本
安裝mysql router
Step 1 通過SSH客戶端重新上傳Mysql Shell rpm包。
Step 2 集群里單主節(jié)點(diǎn)安裝mysql router。
#切換到rpm包目錄 cd /root/softwares/mysql/ #rpm 安裝mysql router rpm -ivh mysql-router-community-8.0.23-1.el8.x86_64.rpmStep 3 查看mysql router版本
#查看mysql router版本 mysqlrouter -V配置啟動mysql router
Step 1 :初始化mysql router,這里配置文件地址為/data/mysqlrouter,可自行修改。conf-bind-address可選集群內(nèi)其它節(jié)點(diǎn),當(dāng)前選擇是單主節(jié)點(diǎn)。
#初始化mysqlrouter mysqlrouter --bootstrap root@localhost:3306 --directory /data/mysqlrouter --conf-use-sockets --user=mysql --conf-bind-address=192.168.111.128Step 2:查看router目錄及配置信息
#切換到mysqlrouter配置目錄 cd /data/mysqlrouter tree . #查看router配置信息 more mysqlrouter.conf注:不難發(fā)現(xiàn)單主映射端口為6446,從節(jié)點(diǎn)端口為6447.
Step 3: 啟動mysql router
#啟動mysqlrouter(以指定配置文件的方式)并查看mysqlrouter進(jìn)程 mysqlrouter -c /data/mysqlrouter/mysqlrouter.conf ps –ef | grep mysqlrouterStep 4 其它節(jié)點(diǎn)均安裝mysql router(選做,當(dāng)前環(huán)境僅安裝在單主節(jié)點(diǎn))
客戶端訪問集群
訪問單主節(jié)點(diǎn)(RW)
#通過綁定地址和映射的端口訪問集群里可RW的節(jié)點(diǎn) mysql -uicadmin -p -h 192.168.111.128 -P 6446 # 執(zhí)行查看主機(jī)和端口號SQL命令 # select @@hostname,@@port; # exit;訪問從節(jié)點(diǎn)(RO)
這里模擬兩次訪問,同樣的客戶端命令,mysql router可能會轉(zhuǎn)發(fā)不到不同的從節(jié)點(diǎn)上。
#通過綁定地址和映射的端口訪問集群里可RO的節(jié)點(diǎn) # 這里模擬兩次訪問,對應(yīng)到兩個(gè)從節(jié)點(diǎn)。 mysql -uicadmin -p -h 192.168.111.128 -P 6447; # 執(zhí)行查看主機(jī)和端口號SQL命令 # select @@hostname,@@port; # exit; mysql -uicadmin -p -h 192.168.111.128 -P 6447; #select @@hostname,@@port; #exit;可見mysql router會根據(jù)內(nèi)部算法(如Round-Robin)選舉某個(gè)從節(jié)點(diǎn)接受客戶端的訪問。是不是有點(diǎn)像HAPRoxy?
問題
Issue 1: ?mysqlsh直連,不加任何參數(shù)報(bào)錯(cuò)。
解決方法:msqlsh需要以某個(gè)用戶連接進(jìn)入。
Issue 2: 集群名參數(shù)錯(cuò)誤
解決方法:集群名只能以字符、數(shù)字和下劃線“_”,其它符號如空格屬非法。
?Issue 3:當(dāng)前管理用戶root訪問從節(jié)點(diǎn)受限,當(dāng)前虛擬機(jī)內(nèi)mysql root用戶不能以IP方式訪問自己和從節(jié)點(diǎn)。
解決方法: 在組復(fù)制的單主節(jié)點(diǎn)上創(chuàng)建個(gè)集群管理員用戶root或者更新root的host限制為%。
-- Way 1: create user 'root'@'%' identified by 'root1234'; grant all on *.* to 'root'@'%'; flush privileges /* 注:此時(shí)會有兩個(gè)root用戶,但訪問的host不一樣,一個(gè)是localhost,一個(gè)是無限制。可用Way 2直接更新host為‘%’(無限制)。 */ -- Way 2: use mysql update user set host = '%' where user = 'root';注:該操作僅需要在單主上執(zhí)行,其它節(jié)點(diǎn)會自動同步。
總結(jié)
以上是生活随笔為你收集整理的Mysql8 InnoDB Cluster Shell Router HA配置图解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql8 group replica
- 下一篇: linux cmake编译源码,linu