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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql8 InnoDB Cluster Shell Router HA配置图解

發(fā)布時(shí)間:2024/9/27 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql8 InnoDB Cluster Shell Router HA配置图解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

Step 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 -proot1234

Step 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.rpm

Step 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.128

Step 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 mysqlrouter

Step 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)容,希望文章能夠幫你解決所遇到的問題。

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