科技新知
Galera 4 (Mariadb cluster) 的冷開機
前次我們介紹了 Galera 4 在Ubuntu 24的架設方式,這次我們來補充一個最常見的問題Cold Start
冷開機 cold start
平常, Cluster 中只有其中一個 node 需要更新重啟,基本上所有節點回覆正常後,都可以互相通訊。而有些情況,例如斷電問題,需要所有節點全數關機,那麼 Galera cluster 就需要一定的方式重啟系統。那是一些狀態的保護機制,因為在全關機後再同步,系統不知道哪台機才有最新的狀態,它也不敢貿然同步(因為正常使用下, Galera cluster 只有兩台機也會開步)。所以需要人手介入,指定以某台機作為 cluster 的起始點。
舉個最簡單的例子,前述三台機 pocdbnode3 , pocdbnode2 , pocdbnode1 順序關閉,那麼 pocdbnode1 應該就會有最新的資訊。 在ubuntu中,可以查看 /var/lib/mysql/grastate.dat
中的 safe_to_bootstrap:
是否為1。如果是1,代表當初它有最後的 transaction ,以它為起始點重新起 cluster。
$ cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid: 0c38b6dd-7bdb-11f0-a4dd-1f4be36a6ea9
seqno: -1
safe_to_bootstrap: 1
我們使用galera_recovery
, galera_new_cluster
, 就可以把該機器重新救起mariadb process。
$ galera_recovery
WSREP: Recovered position 0c38b6dd-7bdb-11f0-a4dd-1f4be36a6ea9:11
--wsrep_start_position=0c38b6dd-7bdb-11f0-a4dd-1f4be36a6ea9:11
$ galera_new_cluster
然後其餘兩個 node 可以直接重啟 mariadb 服務
# node 2
$ systemctl start mariadb
# node 3
$ systemctl start mariadb
Reference
- Getting Started with MariaDB Galera Cluster 官方文件
- How to Set up MariaDB Galera Clusters on Ubuntu 22.04
- How to Bootstrap MySQL or MariaDB Galera Cluster – Updated : 還有比較複雜的救機狀況,例如:safe_to_bootstrap全為0,即是可能是全部node都沒有好好地關掉,就掛了。大家有需要可以看看這個link的解決