本文介紹在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
在docker-entrypoint.sh中添加如下内容,建立一個複制使用者并賦權限,重新整理系統權限表
準備slave的鏡像
将dockerfile, docker-entrypoint.sh複制一份用于build slave鏡像檔案。
在dockerfile中添加如下内容,将mysql slave的server-id設定為一個随機數
在docker-entrypoint.sh中添加如下内容,配置連接配接master主機的host、user、password等參數,并啟動複制程序。
三、開始使用修改好的dockerfile建立mysql master和slave鏡像
四、建立pv和pvc,用于mysql主從存儲持久化資料
在nfs伺服器上把目錄建立出來
通過yaml檔案建立出兩組pv和pvc
五、根據yaml檔案建立mysql master replicationcontroller和services
使用mysql用戶端連接配接master測試
六、根據yaml檔案建立mysql slave replicationcontroller和services
七、測試與排錯
通過mysql指令行連接配接slave檢視複制的狀态,發現狀态是connecting
使用slave 容器連接配接master,發現使用root賬号可以正常連接配接,而使用repl賬号無法正常連接配接,提示access deny
修改master上的repl使用者密碼
完成上述修改後在slave上進行驗證一下,repl賬号可以正常連接配接
在slave上進行change master操作,因為建立鏡像的時候并未配置gtid參數,是以這裡不能使用master_auto_position=1參數,如果要開啟,需要去修改dockerfile,重新生成鏡像。
參考文檔:
https://www.jianshu.com/p/509b65e9a4f5