將 MariaDB Galera 集群從 5.5 升級到 10.0 - 可以滾動升級嗎?
我已經進行了很好的搜尋,但找不到關於該主題的太多內容。我們希望將我們的實時 MariaDB 5.5 Galera 集群升級到 MariaDB 10.0 分支,理想情況下沒有任何停機時間。我們最初使用官方 APT 儲存庫(在 Ubuntu 上)安裝(並在 5.5 分支上升級)。
我發現這篇關於從 5.5 升級到 10.0 的有用文章,但它沒有在任何地方提到 Galera。有誰知道我們是否可以從 5.5 分支滾動升級到 10.0 分支?
謝謝你的幫助。
幾個月來我一直在問同樣的問題,也無法在網際網路上找到明確的答案。也許這意味著我比我應該更關心;也許我不應該進行數據庫伺服器維護……
所以我昨天被迫這樣做,一切都很好。這就是我的做法:
我使用循環技術一次升級伺服器。因此,將對集群中的每台伺服器重複這些步驟,一次一個。
使節點失效
關閉 MySQL。(
service mysql stop
在 CentOS 上)解除安裝 Galera 伺服器
yum remove MariaDB-Galera-server
在 CentOS 上。對我來說,解除安裝和重新安裝是必要的,因為包管理器讓我適合升級。你的旅費可能會改變。必要時更新儲存庫
您將需要安裝或配置您的系統以指向具有更高版本 Galera 的儲存庫。請參閱 Galera 儲存庫配置頁面
安裝 Galera 伺服器 10.0
yum install MariaDB-Galera-server
在 CentOS 上。完成安裝後,我還升級了系統上的所有其他軟體包,以幫助確保必要的客戶端庫等是最新的。此外,如果您的軟體包管理器在解除安裝軟體時重命名中央配置文件,請確保在再次安裝 Galera 後撤消此操作。否則,對我來說,
/etc/my.cnf.d/server.cnf
不會有正確的資訊。啟動新版本的 Galera
這對我來說似乎是最危險的一步,但進展順利。伺服器日誌可能會包含幾行關於某些內部表中的列。別擔心
升級內部架構
這是棘手的部分。您要確保應用於內部表的更新不會復製到集群中的其他節點。有兩個 wsrep 設置可以幫助解決這個問題。一個叫做
wsrep_desync
,它是第 10 版的新功能。它做了一些我不太了解的事情,這將有助於防止該節點在升級過程中減慢集群的其餘部分。另一個wsrep_on
用於配置本地節點是否應將更改複製到集群中的其他節點。通過在本地登錄數據庫來調整設置
root
。
set global wsrep_desync = on;
set global wsrep_on = off;
現在您可以退回命令行並安全地升級內部架構。
mysql_upgrade --skip-write-binlog -u root -p
我使用該
skip-write-binlog
選項進一步幫助避免複製更新。(可選)重建數據庫
我這樣做是因為過去的升級失敗等等。它不會花費太多時間,並有助於確保您的所有數據都是一致的並採用新格式。
mysqlcheck --optimize --all-databases -u root -p
將節點帶回集群
只需反轉
wsrep_desync
和wsrep_on
設置,節點將與集群重新同步。重新登錄 MySQL 命令行客戶端並重新設置這些全域變數。
set global wsrep_desync = off;
set global wsrep_on = on;