即將停服,如何規(guī)劃 MongoDB 升級
MongoDB 4.4和5.0即將停止維護(hù),是時(shí)候升級數(shù)據(jù)庫軟件了。下面簡述升級的方法。
譯自How to Plan Your MongoDB Upgrade,作者 Jan Wieremjewicz 是 Percona 的高級產(chǎn)品經(jīng)理,領(lǐng)導(dǎo) MongoDB 和 PostgreSQL 的產(chǎn)品。他在開發(fā)、部署和維護(hù)企業(yè)系統(tǒng)方面擁有豐富的經(jīng)驗(yàn)。在專業(yè)方面,他熱衷于簡單的解決方案,以解決復(fù)雜的問題和用戶體驗(yàn)。
MongoDB 4.4 將在 2024 年 2 月結(jié)束生命周期(EOL),MongoDB 5.0 將在 8 月加入它。如果這還不足以激勵(lì)您開始規(guī)劃 MongoDB 升級,還要考慮升級有助于消除過時(shí)軟件可能帶來的安全和合規(guī)風(fēng)險(xiǎn),并提供可提高數(shù)據(jù)庫性能、安全性和可伸縮性的功能。
以下是較新版本 MongoDB 中的一些新功能,可能會(huì)促使您決定盡早升級。
MongoDB 5.x
- 數(shù)據(jù)庫的動(dòng)態(tài)分片功能允許用戶隨著工作負(fù)載和數(shù)據(jù)庫的發(fā)展改變分片鍵,而無需停機(jī)。
- 對時(shí)間序列集合進(jìn)行分片可以增強(qiáng)可伸縮性和性能。
- MongoDB 5.3 引入了集群集合,它根據(jù)相關(guān)的集群索引鍵存儲數(shù)據(jù)。這在特定順序很重要的分析查詢中,將查詢性能置于寫入速度之上。
MongoDB 6.x
- 時(shí)間序列集合中的輔助和復(fù)合索引可以提升讀性能,并啟用新的用例,例如地理索引。
- 增強(qiáng)的變更數(shù)據(jù)流允許用戶訪問已修改文檔的先前和當(dāng)前狀態(tài),以促進(jìn)下游文檔更新等任務(wù)并引用已刪除的文檔。這也支持?jǐn)?shù)據(jù)定義語言(DDL)操作,例如創(chuàng)建或刪除集合和索引。
- 管理員可以在將審計(jì)事件存儲到磁盤之前使用符合密鑰管理互操作性協(xié)議(KMIP)的密鑰管理系統(tǒng)對其進(jìn)行壓縮和加密。
MongoDB 7.x
- 修改時(shí)間序列數(shù)據(jù)的能力可增加靈活性和控制力。
- 新的聚合管道操作符和變量可實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)轉(zhuǎn)換。
- 通配符索引可改進(jìn)查詢性能,實(shí)現(xiàn)更快的搜索。
- 可查詢加密可在允許查詢加密數(shù)據(jù)的同時(shí)維護(hù)數(shù)據(jù)保密性。
我將重點(diǎn)介紹適用于任何 MongoDB 升級的一些最佳實(shí)踐,而不是給出過于技術(shù)化的 MongoDB 升級指南,無論您是由于 4.4 EOL 而激勵(lì)還是希望利用 7.0 中的最新特性。如果您正在尋找更多技術(shù)化、步驟詳細(xì)的演練,可以觀看最佳實(shí)踐 - 升級到 MongoDB 4.4。
1. 評估您當(dāng)前的環(huán)境
雖然常被忽視,但對現(xiàn)有設(shè)置進(jìn)行全面評估對于最大限度地降低風(fēng)險(xiǎn)和停機(jī)時(shí)間,并實(shí)現(xiàn)順利、成功的升級至關(guān)重要。
這可能看起來顯而易見,但首先要識別您正在使用的 MongoDB 版本。知道您當(dāng)前的版本對于確定您現(xiàn)有設(shè)置與最新版本之間的差距以及選擇適當(dāng)?shù)纳壜窂蕉挤浅V匾?/p>
接下來,評估您的資源和硬件。例如,您當(dāng)前的服務(wù)器在 CPU、內(nèi)存和存儲容量方面是否足以高效處理新版本?從長遠(yuǎn)來看,新設(shè)置是否能滿足您未來的工作負(fù)載和擴(kuò)展需求?
然后,了解您如何使用 MongoDB。它主要用于事務(wù)數(shù)據(jù)?分析查詢?游戲應(yīng)用程序?不同版本的 MongoDB 可能更適合特定的用例,因此評估新目標(biāo)版本是否與數(shù)據(jù)庫的預(yù)期用途一致至關(guān)重要。
最后,在進(jìn)行升級之前,對當(dāng)前數(shù)據(jù)執(zhí)行徹底備份。這不僅包括數(shù)據(jù)庫的內(nèi)容,還包括您的應(yīng)用程序數(shù)據(jù)、自定義設(shè)置、復(fù)制配置、索引和安全設(shè)置。Percona Backup for MongoDB是一個(gè)開源社區(qū)備份工具,可幫助您備份所有這些數(shù)據(jù)。
2. 測試,再測試,再測試
在生產(chǎn)環(huán)境中實(shí)施升級之前,極其重要的是要創(chuàng)建一個(gè)單獨(dú)的沙箱或準(zhǔn)生產(chǎn)環(huán)境來模擬您的生產(chǎn)設(shè)置。您的目標(biāo)是識別轉(zhuǎn)換期間可能出現(xiàn)的任何問題、沖突或意外行為。這使您可以在一個(gè)安全可控的環(huán)境中捕獲潛在問題,并盡量避免長時(shí)間的意外停機(jī)時(shí)間。
3. 制定回滾計(jì)劃,以防不測
您可以做所有的準(zhǔn)備工作,但不可預(yù)見的困難還是會(huì)發(fā)生。盡量找有升級經(jīng)驗(yàn)的人來幫助您,無論他們是您的員工還是顧問。至少,如果確實(shí)出了問題,十分關(guān)鍵的是要有辦法回滾到數(shù)據(jù)庫的上一個(gè)版本。
一個(gè)全面的 MongoDB 回滾計(jì)劃通常包括:
- 對數(shù)據(jù)和配置進(jìn)行備份。
- 記錄當(dāng)前狀態(tài)。
- 向關(guān)鍵利益相關(guān)者傳達(dá)您的計(jì)劃。
- 確定您的回滾觸發(fā)器。
- 創(chuàng)建詳細(xì)的、記錄了的回滾過程。
- 監(jiān)控您的環(huán)境。
- 分析和了解升級中出了什么問題。
4. 決定使用穩(wěn)定版本還是開發(fā)版本
MongoDB的穩(wěn)定版本經(jīng)過了廣泛的測試,被認(rèn)為是可用于生產(chǎn)的,而那些還在開發(fā)中的版本可能還沒有完全準(zhǔn)備好面向大眾。您在這些版本之間的選擇應(yīng)該由您組織的風(fēng)險(xiǎn)承受能力和升級的具體目標(biāo)來指導(dǎo)。
5. 確定您的升級步驟和路徑
雖然升級過程將因具體環(huán)境而異,但基本 MongoDB 升級的一般推薦路徑是:
- 進(jìn)行備份。
- 下載新二進(jìn)制文件。
- 將特性兼容值(FCV)設(shè)置為當(dāng)前/以前的版本。
- 按照您的系統(tǒng)類型,以滾動(dòng)方式以正確的順序關(guān)閉 Mongo 進(jìn)程。
- 用新二進(jìn)制文件替換您當(dāng)前的二進(jìn)制文件。
- 使用您的系統(tǒng)類型所需的滾動(dòng)方式,以正確的順序啟動(dòng) Mongo 進(jìn)程。
- 等待24-48小時(shí)(取決于您的數(shù)據(jù)庫),以確保沒有問題。
- 將 FCV 設(shè)置為新版本。
最好是以緩慢穩(wěn)定的方式進(jìn)行升級過程。從您當(dāng)前的版本逐步升級到每個(gè)主要版本,直到達(dá)到預(yù)期的版本。例如,如果您使用的是 4.4,那么該過程看起來應(yīng)該是4.4.1+ 升級到 5.0,再升級到 6.0,最后升級到 7.0。不要從 4.4 跳到 7.0。
后續(xù)步驟
完成升級后,進(jìn)行一些升級后測試和優(yōu)化,以確保新的 MongoDB 數(shù)據(jù)庫正如預(yù)期那樣運(yùn)行。我們將在下一篇文章中討論這一點(diǎn)。
如果您需要協(xié)助 MongoDB 升級,Percona 可以幫助您制定個(gè)性化的升級計(jì)劃。我們的專家將幫助您升級 MongoDB,主動(dòng)識別和緩解升級周期及之后可能出現(xiàn)的障礙、不兼容問題和潛在的性能問題。