中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

發布時間:2021-10-25 09:33:02 來源:億速云 閱讀:226 作者:柒染 欄目:大數據

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

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

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

下面是踩坑實錄

以下安裝環境均已官方社區最新版 8.019為基準

【實驗環境 

192.168.198.100

192.168.198.101

192.168.198.102


當然官方的架構圖如下

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

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

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

下面是相關的權限。

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

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

checkInstanceConfiguration()      

createReplicaSet()                

getReplicaSet()                   

stopSandboxInstance()
configureInstance()               

deleteSandboxInstance()           

help()                            

upgradeMetadata()
configureLocalInstance()         

deploySandboxInstance()         

 killSandboxInstance()             
configureReplicaSetInstance()      

dropMetadataSchema()               

rebootClusterFromCompleteOutage()
createCluster()                    

getCluster()                       

startSandboxInstance()

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

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

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

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

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

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

這里假設,你一切都是OK 的

我們直接通過剛才 admin 帳號來進行操作,進入mysqlsh 

通過 \connect 命令來連接進來你的第一個  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'),將第二個節點加入到集群中。

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

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

OK 我們將所有的節點都更換成,官方的社區版,再次添加節點,依然報錯

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

卡在哪里,卡在clone 里,這也是最浪費時間的排錯的問題,因為無論在官方的文檔,還是第三方的中文,英文的文檔都沒有談這個問題,所以耗費了一點時間。

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

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

關鍵就是差者兩句,應該是所有的節點都要安裝插件,然后需要在standby節點設置,允許standby節點能接受來自mgr1節點的數據,否則無法添加節點,進入到集群中。做完這兩句在mgr 2  mgr 3 后,整體的工作就很順利了。

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

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

MYSQL如何利用MYSQL Shell安裝 INNODB Cluster

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

1 JS 的簡單語法

2 CLONE 的基本知識

否則你的安裝很難順利。

當然上面的安裝整體的過程,以及后續的故障轉移過程,上面的方式還會有漏洞。

1 需要設置整體集群的clone 的參數設置,這樣在故障轉移時就會游刃有余

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

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

看完上述內容,你們對MYSQL如何利用MYSQL Shell安裝 INNODB Cluster有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

什邡市| 双柏县| 玛纳斯县| 阿合奇县| 和田县| 河北省| 五寨县| 逊克县| 苏州市| 二连浩特市| 和林格尔县| 新邵县| 商城县| 新余市| 桓仁| 柳江县| 宜章县| 太和县| 九台市| 威信县| 江西省| 阜康市| 长岛县| 蒙山县| 乌恰县| 迁安市| 万年县| 寿光市| 霍州市| 岢岚县| 东宁县| 新巴尔虎右旗| 金门县| 惠安县| 巨野县| 鸡西市| 寿宁县| 化隆| 清苑县| 尼木县| 桂阳县|