很重要! 請先參照備份與還原章節實施備份,再繼續往下。
以下假設由 4 台 MariaDB 組成了 Galery Cluster
服務全停的【關閉】順序:
- 關閉MariaDB服務指令是:systemctl stop mariadb
- 依權重順序關機,第四台 → 第三台 → 第二台 → 第一台
- 關機過程中,間隔請等待至少五秒,讓投票機制完善。
- 待全部依序關閉服務後,查看所有節點grastate.dat內容,執行:
cat /var/lib/mysql/grastate.dat - 看到狀態:第一台服務節點的seqno 值最大,唯獨第一台服務節點的safe_to_bootstrap值為1。表示下次開機順序該節點必須為最優先,務必記錄下來。
- 截至為止已經可以將全部資料庫節點進行關機。
- 根據上次關閉服務結果所指定的節點作為第一台。
- 第一台資料庫節點手動修改 /etc/my.cnf.d/server.cnf檔案:暫時調整為
wsrep_cluster_address='gcomm://'。 - 第一台資料庫節點的/var/lib/mysql/grastate.dat檔案safe_to_bootstrap: 1。
- 第一台資料庫節點執行啟動 systemctl start mariadb
- 第一台資料庫節點確認結果,執行:
mysql -uroot -p1qaz2wsx -e "SHOW STATUS LIKE 'wsrep%';" | grep wsrep_ready
mysql -uroot -p1qaz2wsx -e "SHOW STATUS LIKE 'wsrep%';" | grep wsrep_cluster_size
第一台資料庫節點畫面上要看到如下:
wsrep_ready ON
wsrep_cluster_size 1
註:如果發生沒有辦法啟動,肯定是背景中還有Mariadb的服務沒有關閉,可以執行:netstat -ntlp,查出mariadbd的 process id,然後執行kill -9 id號碼來關閉Mariadb的服務。
- 第二台資料庫節點執行啟動
systemctl start mariadb - 第二台資料庫節點確認結果,執行:
mysql -uroot -p1qaz2wsx -e "SHOW STATUS LIKE 'wsrep%';" | grep wsrep_ready
mysql -uroot -p1qaz2wsx -e "SHOW STATUS LIKE 'wsrep%';" | grep wsrep_cluster_size - 第二台資料庫節點畫面上要看到如下:
wsrep_ready ON
wsrep_cluster_size 2
註:如果發生沒有辦法啟動,肯定是背景中還有Mariadb的服務沒有關閉,可以執行:netstat -ntlp,查出mariadbd的 process id,然後執行kill -9 id號碼來關閉Mariadb的服務。
- 第三台資料庫節點執行啟動
systemctl start mariadb - 第三台資料庫節點確認結果,執行:
mysql -uroot -p1qaz2wsx -e "SHOW STATUS LIKE 'wsrep%';" | grep wsrep_ready
mysql -uroot -p1qaz2wsx -e "SHOW STATUS LIKE 'wsrep%';" | grep wsrep_cluster_size - 第三台資料庫節點畫面上要看到如下:
wsrep_ready ON
wsrep_cluster_size 3
註:如果發生沒有辦法啟動,肯定是背景中還有Mariadb的服務沒有關閉,可以執行:netstat -ntlp,查出mariadbd的 process id,然後執行kill -9 id號碼來關閉Mariadb的服務。
- 第四台資料庫節點執行啟動
systemctl start mariadb
- 第四台資料庫節點確認結果,執行:
mysql -uroot -p1qaz2wsx -e "SHOW STATUS LIKE 'wsrep%';" | grep wsrep_ready
mysql -uroot -p1qaz2wsx -e "SHOW STATUS LIKE 'wsrep%';" | grep wsrep_cluster_size
- 第四台資料庫節點畫面上要看到如下:
wsrep_ready ON
wsrep_cluster_size 4
註:如果發生沒有辦法啟動,肯定是背景中還有Mariadb的服務沒有關閉,可以執行:netstat -ntlp,查出mariadbd的 process id,然後執行kill -9 id號碼來關閉Mariadb的服務。
- 回到第一台資料庫節點,修改 /etc/my.cnf.d/server.cnf檔案:
調整為 wsrep_cluster_address='gcomm://所有其他節點的IP以逗號隔開'
調整好之後,已不需要再重啟服務。