天天看點

在kubernetes叢集中部署mysql主從

本文介紹在kubernetes環境中部署mysql主從叢集,資料持久化采用nfs。

一、環境介紹

mysql版本:5.7

mysql master節點:

主機名:vm1

ip位址:192.168.115.5/24

mysql slave節點:

主機名:vm2

ip位址:192.168.115.6/24

nfs節點:

共享目錄:/home/mysql_master、/home/mysql_slave

二、準備mysql主從的鏡像環境

dockerfile、docker-entrypoint.sh 檔案下載下傳位址如下

https://github.com/docker-library/mysql/tree/master/5.7

由于我們要配置mysql主從,是以需要對dockerfile、docker-entrypoint.sh 檔案做一點的修改,主要是在mysql主從配置部分。

準備master的鏡像

将dockerfile, docker-entrypoint.sh複制一份用于build master鏡像檔案。

在dockerfile中添加如下内容,将mysql master的server-id設定為1

在kubernetes叢集中部署mysql主從

在docker-entrypoint.sh中添加如下内容,建立一個複制使用者并賦權限,重新整理系統權限表

在kubernetes叢集中部署mysql主從

準備slave的鏡像

将dockerfile, docker-entrypoint.sh複制一份用于build slave鏡像檔案。

在dockerfile中添加如下内容,将mysql slave的server-id設定為一個随機數

在kubernetes叢集中部署mysql主從

在docker-entrypoint.sh中添加如下内容,配置連接配接master主機的host、user、password等參數,并啟動複制程序。

在kubernetes叢集中部署mysql主從

三、開始使用修改好的dockerfile建立mysql master和slave鏡像

在kubernetes叢集中部署mysql主從

四、建立pv和pvc,用于mysql主從存儲持久化資料

在nfs伺服器上把目錄建立出來

通過yaml檔案建立出兩組pv和pvc

在kubernetes叢集中部署mysql主從

五、根據yaml檔案建立mysql master replicationcontroller和services

在kubernetes叢集中部署mysql主從
在kubernetes叢集中部署mysql主從

使用mysql用戶端連接配接master測試

在kubernetes叢集中部署mysql主從

六、根據yaml檔案建立mysql slave replicationcontroller和services

七、測試與排錯

通過mysql指令行連接配接slave檢視複制的狀态,發現狀态是connecting

在kubernetes叢集中部署mysql主從

使用slave 容器連接配接master,發現使用root賬号可以正常連接配接,而使用repl賬号無法正常連接配接,提示access deny

在kubernetes叢集中部署mysql主從

修改master上的repl使用者密碼

完成上述修改後在slave上進行驗證一下,repl賬号可以正常連接配接

在kubernetes叢集中部署mysql主從

在slave上進行change master操作,因為建立鏡像的時候并未配置gtid參數,是以這裡不能使用master_auto_position=1參數,如果要開啟,需要去修改dockerfile,重新生成鏡像。

在kubernetes叢集中部署mysql主從
在kubernetes叢集中部署mysql主從

參考文檔:

https://www.jianshu.com/p/509b65e9a4f5

繼續閱讀