MYSQL如何利用MYSQLShell安裝INNODBCluster

今天就跟大家聊聊有關(guān)MySQL如何利用MYSQL Shell安裝 INNODB Cluster,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),澄海企業(yè)網(wǎng)站建設(shè),澄海品牌網(wǎng)站建設(shè),網(wǎng)站定制,澄海網(wǎng)站建設(shè)報(bào)價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,澄海網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

MYSQL 8 發(fā)布有一段時間了,關(guān)于MGR 哦不現(xiàn)在叫MGR,雅致的名字 innodb cluster 的官方解決方案也是有一段時間了。雖然解決方案不止這個,但官方的方案還是要熟悉了解的。(注意:一定要用官方的社區(qū)版,如果使用percona最新的8.019版本依然在使用 mysqlsh 會報(bào)用戶權(quán)限的錯誤,但這個錯誤是在官方版本8.014發(fā)生的問題,所以使用官方的解決方案,需要配合官方的社區(qū)版,另外使用 MYSQL 8.019的percona版本用傳統(tǒng)方式安裝也會有問題,唉)

基本上用了半天的時間,研究了mysql shell 的方式安裝,也看了很多其他的文章,但實(shí)際上基本按照上面去做,成功的概率......

下面是踩坑實(shí)錄

以下安裝環(huán)境均已官方社區(qū)最新版 8.019為基準(zhǔn)

【實(shí)驗(yàn)環(huán)境 

192.168.198.100

192.168.198.101

192.168.198.102

當(dāng)然官方的架構(gòu)圖如下

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

作為計(jì)劃的一部分 mysql shell 除了上次講的主要的功能,還有一個上次沒有說的,就是對集群的管理和安裝。

在使用mysql shell 之前還要給你的帳號(這里我們用 admin),賦予相關(guān)的權(quán)限,否則是無法進(jìn)行工作的,如果不賦予相關(guān)的權(quán)限,mysql shell也會在你使用的時候,報(bào)錯。(這里僅僅是指安裝集群時)

下面是相關(guān)的權(quán)限。

CREATE USER admin@'%' identified by 'admin';

GRANT BACKUP_ADMIN, CLONE_ADMIN, CREATE USER, EXECUTE, FILE, PERSIST_RO_VARIABLES_ADMIN, PROCESS, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SELECT, SHUTDOWN, SUPER, SYSTEM_VARIABLES_ADMIN ON *.* TO 'admin'@'%' WITH GRANT OPTION;
GRANT DELETE, INSERT, UPDATE ON mysql.* TO 'admin'@'%' WITH GRANT OPTION;
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata.* TO 'admin'@'%' WITH GRANT OPTION;
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_bkp.* TO 'admin'@'%' WITH GRANT OPTION;
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_previous.* TO 'admin'@'%' WITH GRANT OPTION;

以上的帳號也是我們在操作mysql innodb cluster 的帳號

直接下載mysqlshell 的rpm 安裝包,直接鍵入 mysqlsh ,每臺MYSQL 都要安裝,以后如果采用這一方案 mysql shell 將是你必要的工具

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

就進(jìn)入到了mysql shell ,其中mysql shell中有很多關(guān)于DBA 的命令集合,可以看出,這些命令基本都是圍繞我們的 innodb cluster

checkInstanceConfiguration()      

createReplicaSet()                

getReplicaSet()                   

stopSandboxInstance()
configureInstance()               

deleteSandboxInstance()           

help()                            

upgradeMetadata()
configureLocalInstance()         

deploySandboxInstance()         

 killSandboxInstance()             
configureReplicaSetInstance()      

dropMetadataSchema()               

rebootClusterFromCompleteOutage()
createCluster()                    

getCluster()                       

startSandboxInstance()

1  我們先對我們的單機(jī)的 mysql 進(jìn)行檢查,看看我們的配置哪里還有問題(針對innodb cluster)

dba.checkInstanceConfiguration('admin@192.168.198.100:3306')

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

我們可以很明顯的看出來,我當(dāng)前如果要使用 innodb cluster 中在配置有一個錯誤,我的 binlog_checksum 當(dāng)前的設(shè)置是有問題的。我需要將其改為none

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

三臺機(jī)器,在均ok的情況下,可以進(jìn)行下一步的配置 (當(dāng)然這里很可能有不會OK ,可能的問題 ,GTID 開沒有開, 你設(shè)置那個帳號是要進(jìn)行innodb cluster 集群操作的帳號,權(quán)限是否有,你的 enforce_gtid_consistency 開沒有看,如果這些都不知道,建議先百度一下)

這里假設(shè),你一切都是OK 的

我們直接通過剛才 admin 帳號來進(jìn)行操作,進(jìn)入mysqlsh 

通過 \connect 命令來連接進(jìn)來你的第一個  mysql  innodb cluster ,這里我連接了100

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

dba.createCluster('cluster')    通過這個命令我們開始建立我們的 innodb cluster

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

var cluster = dba.getCluster()
cluster.status()

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

目前到這里是一切OK ,坑就就在下面了,而且看了一輪文章,包括中文的,英文的,一概不談。

按照文檔,下面我們直接使用cluster.addInstance('admin@mgr2:3306'),將第二個節(jié)點(diǎn)加入到集群中。

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

報(bào)錯了,原因也找到了,是我其中一臺機(jī)器和其他的機(jī)器(primary 和standby 的小版本不同導(dǎo)致,雖然都是8.019,但percona 和 社區(qū)版是無法之間是無法使用 clone的功能的)。

OK 我們將所有的節(jié)點(diǎn)都更換成,官方的社區(qū)版,再次添加節(jié)點(diǎn),依然報(bào)錯

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

卡在哪里,卡在clone 里,這也是最浪費(fèi)時間的排錯的問題,因?yàn)闊o論在官方的文檔,還是第三方的中文,英文的文檔都沒有談這個問題,所以耗費(fèi)了一點(diǎn)時間。

實(shí)際上我們只要在standby節(jié)點(diǎn)做以下兩個工作即可(按正常的邏輯說,系統(tǒng)是應(yīng)該在操作clone之前判斷的,但實(shí)際上,根本沒有,導(dǎo)致操作的過程系統(tǒng)是克隆了,但對方的機(jī)器根本不接受這個clone的文件)

INSTALL PLUGIN clone SONAME 'mysql_clone.so';
SET GLOBAL clone_valid_donor_list = 'mgr1:3306';

關(guān)鍵就是差者兩句,應(yīng)該是所有的節(jié)點(diǎn)都要安裝插件,然后需要在standby節(jié)點(diǎn)設(shè)置,允許standby節(jié)點(diǎn)能接受來自mgr1節(jié)點(diǎn)的數(shù)據(jù),否則無法添加節(jié)點(diǎn),進(jìn)入到集群中。做完這兩句在mgr 2  mgr 3 后,整體的工作就很順利了。

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

所以到此為止,我的集群通過mysql shell 的方式來安裝是成功的。

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

整體的感官就是MYSQL 的集群安裝通過mysql shell的方式來安裝,很方便,但你要有一些基本的知識

1 JS 的簡單語法

2 CLONE 的基本知識

否則你的安裝很難順利。

當(dāng)然上面的安裝整體的過程,以及后續(xù)的故障轉(zhuǎn)移過程,上面的方式還會有漏洞。

1 需要設(shè)置整體集群的clone 的參數(shù)設(shè)置,這樣在故障轉(zhuǎn)移時就會游刃有余

2 每個節(jié)點(diǎn)要添加除自己以外的所有節(jié)點(diǎn)的 clone_valid_donor_list 否則故障轉(zhuǎn)移成功后,故障節(jié)點(diǎn)重新加入不會那么順利。

另外根據(jù)以上操作,以后通過mysqlshell + 程序的方式來對 INNODB CLUSTER 進(jìn)行管理,將比以前管理MYSQL 的集群要方便,并且可以進(jìn)行更多的高度自動化。

看完上述內(nèi)容,你們對MYSQL如何利用MYSQL Shell安裝 INNODB Cluster有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

當(dāng)前題目:MYSQL如何利用MYSQLShell安裝INNODBCluster
網(wǎng)站路徑:http://muchs.cn/article40/ijooeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站改版、營銷型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作標(biāo)簽優(yōu)化、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營