今天看到有人在羣裏問如何從4.0 升級到4.2,網上說的雲裏霧裏的。此處貼出官網的升級指南,底部有原網文檔連接。像這種操作手冊的話,如果網上沒有人有詳細的對應版本的教程,最全的文檔第一時間應該想到官方。該內容範圍來源於與Google,再次鳴謝Google translate
將獨立版本升級到4.2
如果您需要有關升級到4.2的指導,則MongoDB提供主要版本升級服務,以確保平穩過渡而不會中斷您的MongoDB應用程序。
升級建議和清單
升級時,請考慮以下事項:
升級版本路徑
要將現有的MongoDB部署升級到4.2,必須運行4.0系列發行版。
要從4.0系列之前的版本升級,必須連續升級主要版本,直到升級到4.0系列爲止。例如,如果運行的是3.6系列,則必須先 升級到4.0, 然後才能升級到4.2。
防範
在開始升級之前,請參閱MongoDB 4.2中的兼容性更改文檔,以確保您的應用程序和部署與MongoDB 4.2兼容。開始升級之前,請解決部署中的不兼容性。
在升級MongoDB之前,請務必先在臨時環境中測試應用程序,然後再將升級部署到生產環境中。
降級注意事項
升級到4.2後,如果需要降級,建議將其降級到最新的4.0補丁程序。
前提條件
MMAPv1到WiredTiger存儲引擎
MongoDB 4.2刪除了對不建議使用的MMAPv1存儲引擎的支持。
如果您的4.0部署使用MMAPv1,則必須在升級到MongoDB 4.2之前將4.0部署更改爲WiredTiger Storage Engine。有關詳細信息,請參見將Standalone更改爲WiredTiger。
回顧當前配置
在MongoDB 4.2中,mongod和 mongos進程將不會以MMAPv1特定配置選項開頭 。如果指定了先前版本的運行WiredTiger的MongoDB,則它們會忽略MMAPv1配置選項。對於MongoDB 4.2,您必須從配置中刪除它們。
功能兼容版本
4.0實例必須featureCompatibilityVersion設置爲4.0。要檢查featureCompatibilityVersion:
複製
複製的
db.adminCommand ( { getParameter : 1 , featureCompatibilityVersion : 1 } )
該操作應返回包含的結果 。"featureCompatibilityVersion"
:
{
"version"
:
"4.0"
}
要設置或更新featureCompatibilityVersion,請運行以下命令:
複製
複製的
db.adminCommand ( { setFeatureCompatibilityVersion : “ 4.0” } )
有關更多信息,請參見setFeatureCompatibilityVersion。
下載4.2二進制文件
通過包管理器
如果從MongoDB的安裝MongoDB的apt,yum,dnf,或 zypper資料庫,你應該使用你的包管理器升級到4.2。
請遵循適用於您的Linux系統的4.2安裝說明。這將涉及爲新版本添加存儲庫,然後執行實際的升級過程。
手動
如果尚未使用程序包管理器安裝MongoDB,則可以從MongoDB下載中心手動下載MongoDB二進制文件。
有關更多信息,請參見4.2安裝說明。
升級過程
1個
用4.2二進制文件替換現有的4.0二進制文件。
關閉您的mongod實例。用4.2 mongod二進制文件替換現有的二進制文件。
使用4.2重新啓動部署mongod。
2
啓用向後不兼容的4.2功能。
此時,您可以運行4.2二進制文件,而沒有與4.0不兼容的4.2 功能。
要啓用這些4.2功能,請將功能兼容版本(FCV)設置爲4.2。
小費
啓用這些向後不兼容的功能可能會使降級過程複雜化,因爲在降級之前必須刪除所有持久的向後不兼容的功能。
建議在升級後,允許您在不啓用這些功能的情況下運行部署,並且要在預熱期內確保降級的可能性最小。如果您確信降級的可能性很小,請啓用這些功能。
setFeatureCompatibilityVersion針對admin數據庫運行命令:
複製
複製的
db.adminCommand ( { setFeatureCompatibilityVersion : “ 4.2” } )
此命令必須執行對內部系統集合的寫入。如果由於某種原因該命令未成功完成,則可以安全地重試該命令,因爲該操作是冪等的。
升級後
TLS選項替換不推薦使用的SSL選項
從MongoDB 4.2開始,MongoDB棄用mongod,mongos和mongo shell的SSL選項 以及相應的net.ssl Options配置文件選項。
爲避免棄用消息,請TLS對mongod,mongos和mongo shell使用新選項 。
- 有關命令行TLS選項,請參閱mongod,mongos和 mongo Shell頁面。
- 對於相應的mongod和mongos配置文件的選項,請參閱配置文件頁面。
- 有關連接字符串tls選項,請參閱 連接字符串頁面。
4.2兼容的驅動程序默認重試寫入
需要與MongoDB 3.6和4.0兼容的官方驅動程序,包括retryWrites=true在連接字符串中的選項才能 爲該連接啓用可重試的寫入。
與MongoDB 4.2兼容的官方驅動程序默認情況下啓用可重試寫入。升級到需要兼容重寫的4.2兼容驅動程序的應用程序可以忽略該retryWrites=true 選項。應用升級到需要的4.2兼容的驅動程序 禁用重試寫操作必須包括 retryWrites=false連接的字符串中。
將副本集升級到4.2
如果您需要有關升級到4.2的指導,則MongoDB提供主要版本升級服務,以確保平穩過渡而不會中斷您的MongoDB應用程序。
升級建議和清單
升級時,請考慮以下事項:
升級版本路徑
要將現有的MongoDB部署升級到4.2,必須運行4.0系列發行版。
要從4.0系列之前的版本升級,必須連續升級主要版本,直到升級到4.0系列爲止。例如,如果運行的是3.6系列,則必須先 升級到4.0, 然後才能升級到4.2。
防範
在開始升級之前,請參閱MongoDB 4.2中的兼容性更改文檔,以確保您的應用程序和部署與MongoDB 4.2兼容。開始升級之前,請解決部署中的不兼容性。
在升級MongoDB之前,請務必先在臨時環境中測試應用程序,然後再將升級部署到生產環境中。
降級注意事項
升級到4.2後,如果需要降級,建議將其降級到最新的4.0補丁程序。
讀關注多數(3成員主要-次要-仲裁器體系結構)
從MongoDB 3.6開始,"majority"默認情況下,MongoDB啓用對讀取關注的支持 。
您可以禁用讀取關注,"majority"以防止存儲高速緩存壓力固定具有主從仲裁器(PSA)體系結構的三成員副本集或具有三成員PSA分片的分片羣集。
注意
禁用"majority"讀取關注會影響對分片羣集上事務的支持 。特別:
- "snapshot"如果事務涉及已禁用讀取關注“多數”的分片,則該事務不能使用讀取關注。
- 如果事務的任何讀或寫操作中的任何一個寫入了多個分片錯誤,則該事務涉及一個已禁用讀取關注的分片"majority"。
但是,它不影響 副本集上的事務。對於副本集上的事務,即使禁用了讀取關注,也可以爲多文檔事務指定讀取關注"majority"(或"snapshot" 或"local")"majority"。
禁用"majority"讀取關注會禁用對MongoDB 4.0及更早版本的變更流的支持。對於MongoDB 4.2+,禁用讀取關注"majority"不會影響更改流的可用性。
當升級到4.2且禁用了“多數”閱讀功能時,可以將更改流用於部署。
有關更多信息,請參見禁用多數閱讀關注。
更改流恢復令牌
MongoDB 4.2使用版本4.0.7中引入的版本1(即v1)更改流 恢復令牌。
恢復令牌_data類型取決於MongoDB版本,在某些情況下,取決於更改流打開/恢復時的功能兼容性版本(fcv)(即,fcv值的更改不會影響已打開的更改流的恢復令牌。 ):
MongoDB版本 |
功能兼容版本 |
恢復令牌_data類型 |
MongoDB 4.2及更高版本 |
“ 4.2”或“ 4.0” |
十六進制編碼的字符串(v1) |
MongoDB 4.0.7及更高版本 |
“ 4.0”或“ 3.6” |
十六進制編碼的字符串(v1) |
MongoDB 4.0.6及更早版本 |
“ 4.0” |
十六進制編碼的字符串(v0) |
MongoDB 4.0.6及更早版本 |
“ 3.6” |
BinData |
MongoDB 3.6 |
“ 3.6” |
BinData |
從MONGODB 4.0.6或更早版本升級到MONGODB 4.2時
在升級過程中,客戶端可能會v1在連接到尚未更新的成員(即僅接受v0令牌)而失敗時嘗試使用新的恢復令牌恢復更改流。在這種情況下,客戶端必須等待4.2升級完成才能恢復更改流。
前提條件
所有會員版本
所有副本集成員必須正在運行版本4.0。要從3.6系列或更早的版本升級副本集,請首先 將副本集的所有成員升級到最新的4.0系列版本,然後按照從MongoDB 4.0升級到4.2的過程進行操作。
MMAPv1到WiredTiger存儲引擎
MongoDB 4.2刪除了對不建議使用的MMAPv1存儲引擎的支持。
如果您的4.0部署使用MMAPv1,則必須在升級到MongoDB 4.2之前將4.0部署更改爲WiredTiger Storage Engine。有關詳細信息,請參見將副本集設置爲WiredTiger。
回顧當前配置
在MongoDB 4.2中,mongod和 mongos進程將不會以MMAPv1特定配置選項開頭 。如果指定了先前版本的運行WiredTiger的MongoDB,則它們會忽略MMAPv1配置選項。對於MongoDB 4.2,您必須從配置中刪除它們。
功能兼容版本
4.0副本集必須 featureCompatibilityVersion設置爲4.0。
爲確保副本集的所有成員都 featureCompatibilityVersion設置爲4.0,請連接到每個副本集成員並檢查featureCompatibilityVersion:
複製
複製的
db .adminCommand ( { getParameter : 1 , featureCompatibilityVersion : 1 } )
所有成員都應返回包含的結果 。"featureCompatibilityVersion" : { "version" : "4.0" }
要設置或更新featureCompatibilityVersion,請在主服務器上運行以下命令。大多數數據承載成員必須可用:
複製
複製的
db .adminCommand ( { setFeatureCompatibilityVersion : “ 4.0” } )
有關更多信息,請參見 setFeatureCompatibilityVersion。
副本集成員狀態
確保沒有副本集成員處於ROLLBACK或 RECOVERING狀態。
下載4.2二進制文件
通過包管理器
如果從MongoDB的安裝MongoDB的apt,yum,dnf,或 zypper資料庫,你應該使用你的包管理器升級到4.2。
請遵循適用於您的Linux系統的4.2安裝說明。這將涉及爲新版本添加存儲庫,然後執行實際的升級過程。
手動
如果尚未使用程序包管理器安裝MongoDB,則可以從MongoDB下載中心手動下載MongoDB二進制文件。
有關更多信息,請參見4.2安裝說明。
升級過程
您可以使用“滾動”升級從MongoDB 4.0升級到4.2,以通過在其他成員可用時分別升級成員來最大程度地減少停機時間。
1個
升級副本集的輔助成員。
一次升級 一個副本集的輔助成員:
- 關閉mongod實例並將4.0二進制文件替換爲4.2二進制文件。
- 重新啓動成員。
2
降級主副本集。
將mongo外殼連接到主要節點,並用於 rs.stepDown()降低主要節點並強制選擇新的主要節點。
3
升級主數據庫。
當rs.status() 顯示主節點已卸任並且另一成員已PRIMARY處於狀態時,請升級已卸除的主抵押:
- 關閉降級的主數據庫,然後用mongod4.2二進制文件替換 二進制文件。
- 重新啓動成員。
4
啓用向後不兼容的4.2功能。
此時,您可以運行4.2二進制文件,而沒有與4.0不兼容的4.2 功能。
要啓用這些4.2功能,請將功能兼容版本(FCV)設置爲4.2。
小費
啓用這些向後不兼容的功能可能會使降級過程複雜化,因爲在降級之前必須刪除所有持久的向後不兼容的功能。
建議在升級後,允許您在不啓用這些功能的情況下運行部署,並且要在預熱期內確保降級的可能性最小。如果您確信降級的可能性很小,請啓用這些功能。
小費
確保沒有正在進行的初始同步。setFeatureCompatibilityVersion在進行初始同步時運行 命令將導致重新啓動初始同步。
在主數據庫上setFeatureCompatibilityVersion,在admin數據庫中運行命令:
複製
複製的
Db.adminCommand ( { setFeatureCompatibilityVersion : “ 4.2” } )
此命令必須執行對內部系統集合的寫入。如果由於某種原因該命令未成功完成,則可以安全地在主數據庫上重試該命令,因爲該操作是冪等的。
升級後
TLS選項替換不推薦使用的SSL選項
從MongoDB 4.2開始,MongoDB棄用mongod,mongos和mongo shell的SSL選項 以及相應的net.ssl Options配置文件選項。
爲避免棄用消息,請TLS對mongod,mongos和mongo shell使用新選項 。
- 有關命令行TLS選項,請參閱mongod,mongos和 mongo Shell頁面。
- 對於相應的mongod和mongos配置文件的選項,請參閱配置文件頁面。
- 有關連接字符串tls選項,請參閱 連接字符串頁面。
4.2兼容的驅動程序默認重試寫入
需要與MongoDB 3.6和4.0兼容的官方驅動程序,包括retryWrites=true在連接字符串中的選項才能 爲該連接啓用可重試的寫入。
與MongoDB 4.2兼容的官方驅動程序默認情況下啓用可重試寫入。升級到需要兼容重寫的4.2兼容驅動程序的應用程序可以忽略該retryWrites=true 選項。應用升級到需要的4.2兼容的驅動程序 禁用重試寫操作必須包括 retryWrites=false連接的字符串中。
將分片集羣升級到4.2
如果您需要有關升級到4.2的指導,則MongoDB提供主要版本升級服務,以確保平穩過渡而不會中斷您的MongoDB應用程序。
升級建議和清單
升級時,請考慮以下事項:
升級版本路徑
要將現有的MongoDB部署升級到4.2,必須運行4.0系列發行版。
要從4.0系列之前的版本升級,必須連續升級主要版本,直到升級到4.0系列爲止。例如,如果運行的是3.6系列,則必須先 升級到4.0, 然後才能升級到4.2。
防範
在開始升級之前,請參閱MongoDB 4.2中的兼容性更改文檔,以確保您的應用程序和部署與MongoDB 4.2兼容。開始升級之前,請解決部署中的不兼容性。
在升級MongoDB之前,請務必先在臨時環境中測試應用程序,然後再將升級部署到生產環境中。
降級注意事項
升級到4.2後,如果需要降級,建議將其降級到最新的4.0補丁程序。
讀關注多數(3成員主要-次要-仲裁器體系結構)
從MongoDB 3.6開始,"majority"默認情況下,MongoDB啓用對讀取關注的支持 。
您可以禁用讀取關注,"majority"以防止存儲高速緩存壓力固定具有主從仲裁器(PSA)體系結構的三成員副本集或具有三成員PSA分片的分片羣集。
注意
禁用"majority"讀取關注會影響對分片羣集上事務的支持 。特別:
- "snapshot"如果事務涉及已禁用讀取關注“多數”的分片,則該事務不能使用讀取關注。
- 如果事務的任何讀或寫操作中的任何一個寫入了多個分片錯誤,則該事務涉及一個已禁用讀取關注的分片"majority"。
但是,它不影響 副本集上的事務。對於副本集上的事務,即使禁用了讀取關注,也可以爲多文檔事務指定讀取關注"majority"(或"snapshot" 或"local")"majority"。
禁用"majority"讀取關注會禁用對MongoDB 4.0及更早版本的變更流的支持。對於MongoDB 4.2+,禁用讀取關注"majority"不會影響更改流的可用性。
當升級到4.2且禁用了“多數”閱讀功能時,可以將更改流用於部署。
有關更多信息,請參見禁用多數閱讀關注。
更改流恢復令牌
MongoDB 4.2使用版本4.0.7中引入的版本1(即v1)更改流 恢復令牌。
恢復令牌_data類型取決於MongoDB版本,在某些情況下,取決於更改流打開/恢復時的功能兼容性版本(fcv)(即,fcv值的更改不會影響已打開的更改流的恢復令牌。 ):
MongoDB版本 |
功能兼容版本 |
恢復令牌_data類型 |
MongoDB 4.2及更高版本 |
“ 4.2”或“ 4.0” |
十六進制編碼的字符串(v1) |
MongoDB 4.0.7及更高版本 |
“ 4.0”或“ 3.6” |
十六進制編碼的字符串(v1) |
MongoDB 4.0.6及更早版本 |
“ 4.0” |
十六進制編碼的字符串(v0) |
MongoDB 4.0.6及更早版本 |
“ 3.6” |
BinData |
MongoDB 3.6 |
“ 3.6” |
BinData |
從MONGODB 4.0.6或更早版本升級到MONGODB 4.2時
在升級過程中,分片羣集的成員將繼續產生v0令牌,直到mongos升級第一個 實例。升級 mongos實例將開始產生v1變更流恢復令牌。這些不能用於在mongos尚未升級的上恢復流 。
前提條件
所有會員版本
要將分片羣集升級到4.2,羣集的所有成員必須至少爲4.0版。升級過程將檢查羣集的所有組件,如果任何組件運行的版本早於4.0,則將生成警告。
MMAPv1到WiredTiger存儲引擎
MongoDB 4.2刪除了對不建議使用的MMAPv1存儲引擎的支持。
如果您的4.0部署使用MMAPv1,則必須在升級到MongoDB 4.2之前將4.0部署更改爲WiredTiger Storage Engine。有關詳細信息,請參閱將分片羣集更改爲WiredTiger。
回顧當前配置
在MongoDB 4.2中,mongod和 mongos進程將不會以MMAPv1特定配置選項開頭 。如果指定了先前版本的運行WiredTiger的MongoDB,則它們會忽略MMAPv1配置選項。對於MongoDB 4.2,您必須從配置中刪除它們。
功能兼容版本
4.0分片羣集必須 featureCompatibilityVersion設置爲4.0。
爲了確保分片羣集的所有成員都 featureCompatibilityVersion設置爲4.0,請連接到每個分片副本集成員和每個配置服務器副本集成員,然後檢查featureCompatibilityVersion:
小費
對於已啓用訪問控制的分片羣集,要對分片副本集成員運行以下命令,您必須以分片本地用戶身份連接到該成員。
複製
複製的
db.adminCommand ( { getParameter : 1 , featureCompatibilityVersion : 1 } )
所有成員都應返回包含的結果 。"featureCompatibilityVersion" : { "version" : "4.0" }
要設置或更新featureCompatibilityVersion,請在上運行以下命令mongos:
複製
複製的
db.adminCommand ( { setFeatureCompatibilityVersion : “ 4.0” } )
有關更多信息,請參見 setFeatureCompatibilityVersion。
副本集成員狀態
對於分片和配置服務器,請確保沒有副本集成員處於 ROLLBACK或RECOVERING狀態。
備份config數據庫
可選,但推薦。作爲預防措施,在升級分片羣集之前,請對config數據庫進行備份 。
PowerPC上的哈希索引
僅適用於PowerPC
對於散列索引,MongoDB 4.2確保PowerPC上浮點值2 63的散列值與其他平臺一致。
儘管可能包含大於2 63的浮點值的字段上的哈希索引是不受支持的配置,但是客戶端仍可以在索引字段具有值2 63的位置插入文檔。
- 如果PowerPC上當前的MongoDB 4.0分片羣集已將2 63的分片鍵值進行哈希處理,則在升級之前:
- 備份文檔;例如mongoexport,使用--query來在分片字段中使用2 63選擇文檔。
- 刪除值爲2 63的文檔。
按照以下步驟升級後,將導入已刪除的文檔。
- 如果PowerPC上的現有MongoDB 4.0集合具有未用作分片鍵的值2 63的哈希索引條目,則您還可以選擇在升級之前刪除索引,然後在升級完成後重新創建索引。
要列出部署的所有哈希索引並查找其索引字段包含值2 63 哈希索引和PowerPC check的文檔。
下載4.2二進制文件
使用程序包管理
如果從MongoDB的安裝MongoDB的apt,yum,dnf,或 zypper資料庫,你應該使用你的包管理器升級到4.2。
請遵循適用於您的Linux系統的4.2安裝說明。這將涉及爲新版本添加存儲庫,然後執行實際的升級過程。
下載4.2二進制手動
如果尚未使用程序包管理器安裝MongoDB,則可以從MongoDB下載中心手動下載MongoDB二進制文件。
有關更多信息,請參見4.2安裝說明。
升級過程
1個
禁用平衡器。
將mongo外殼連接到分片mongos羣集中的實例,然後運行sh.stopBalancer()以禁用平衡器:
複製
複製的
SH.stopBalancer ()
注意
如果正在進行遷移,則系統將在停止平衡器之前完成正在進行的遷移。您可以運行 sh.isBalancerRunning()以檢查平衡器的當前狀態。
要驗證是否禁用了平衡器,請運行run sh.getBalancerState(),如果禁用了平衡器,則返回false:
複製
複製的
SH.getBalancerState ()
有關禁用平衡器的更多信息,請參閱 禁用平衡器。
2
升級配置服務器。
- 一次升級 一個副本集的輔助成員:
- 關閉輔助mongod實例,並將4.0二進制文件替換爲4.2二進制文件。
- 啓動4.2二進制用--configsvr, --replSet和--port。包括部署使用的任何其他選項。
複製
複製的
mongod --configsvr --replSet <replSetName> --port <端口> --dbpath <路徑> --bind_ip localhost,<IP地址>
如果使用配置文件,更新文件來指定,, ,和,然後啓動4.2二進制文件:sharding.clusterRole: configsvrreplication.replSetNamenet.portnet.bindIp
複製
複製的
分片:
clusterRole : configsvr
複製:
replSetName : <string>
net :
port : <port>
bindIp : localhost,<IP地址>
storage :
dbpath : <path>
包括適用於您的部署的任何其他設置。
-
- 等待成員恢復SECONDARY狀態,然後再升級下一個輔助成員。要檢查成員的狀態,請rs.status()在mongoshell中發出。
對每個次要成員重複上述步驟。
- 降級主副本集。
- 將mongo外殼連接到主要數據庫,並用於 rs.stepDown()降低主要數據庫並強制選擇新的主要數據庫:
複製
複製的
rs.stepDown ()
-
- 當rs.status()顯示主節點已降級並且另一個成員已PRIMARY進入狀態時,請關閉已降級的主mongod節點,然後用4.2二進制文件替換二進制文件。
- 啓動4.2二進制用--configsvr,--replSet, --port,和--bind_ip選項。包括先前部署使用的所有可選命令行選項:
複製
複製的
mongod --configsvr --replSet <replSetName> --port <端口> --dbpath <路徑> --bind_ip localhost,<IP地址>
如果使用配置文件,更新文件來指定,, ,和,然後啓動4.2二進制文件:sharding.clusterRole: configsvrreplication.replSetNamenet.portnet.bindIp
複製
複製的
分片:
clusterRole : configsvr
複製:
replSetName : <string>
net :
port : <port>
bindIp : localhost,<IP地址>
storage :
dbpath : <path>
包括適合您的部署的任何其他配置。
3
升級碎片。
一次升級一個碎片。
對於每個分片副本集:
- 一次升級 一個副本集的輔助成員:
- 關閉mongod實例並將4.0二進制文件替換爲4.2二進制文件。
- 啓動4.2二進制用--shardsvr,--replSet, --port,和--bind_ip選項。包括適用於您的部署的所有其他命令行選項:
複製
複製的
mongod --shardsvr --replSet <replSetName> --port <端口> --dbpath <路徑> --bind_ip本地主機,<IP地址>
如果使用配置文件,更新文件,包括, ,,和 ,然後啓動4.2二進制文件:sharding.clusterRole: shardsvrreplication.replSetNamenet.portnet.bindIp
複製
複製的
sharding :
clusterRole : shardsvr
複製:
replSetName : <string>
net :
port : <port>
bindIp : localhost,<IP地址>
storage :
dbpath : <path>
包括適合您的部署的任何其他配置。
-
- 等待成員恢復SECONDARY狀態,然後再升級下一個輔助成員。要檢查成員的狀態,可以rs.status()在 mongoshell中發出。
對每個次要成員重複上述步驟。
- 降級主副本集。
將mongo外殼連接到主要數據庫,並用於 rs.stepDown()降低主要數據庫並強制選擇新的主要數據庫:
複製
複製的
rs.stepDown ()
- 當rs.status() 顯示主節點已卸任並且另一成員已PRIMARY處於狀態時,請升級已卸除的主抵押:
- 關閉降級的主數據庫,然後用mongod4.2二進制文件替換 二進制文件。
- 啓動4.2二進制用--shardsvr,--replSet, --port,和--bind_ip選項。包括適用於您的部署的所有其他命令行選項:
複製
複製的
mongod --shardsvr --replSet <replSetName> --port <端口> --dbpath <路徑> --bind_ip本地主機,<IP地址>
如果使用配置文件,更新文件來指定,, ,和,然後啓動4.2二進制文件:sharding.clusterRole: shardsvrreplication.replSetNamenet.portnet.bindIp
複製
複製的
sharding :
clusterRole : shardsvr
複製:
replSetName : <string>
net :
port : <port>
bindIp : localhost,<IP地址>
storage :
dbpath : <path>
包括適合您的部署的任何其他配置。
4
升級mongos實例。
將每個mongos實例替換爲4.2二進制文件並重新啓動。包括適合您的部署的任何其他配置。
注意
--bind_ip當分片羣集成員在不同主機上運行時,或者如果遠程客戶端連接到分片羣集,則必須指定該選項。有關更多信息,請參見 Localhost綁定兼容性更改。
複製
複製的
mongos --configdb csReplSet / <rsconfigsver1:port1>,<rsconfigsver2:port2>,<rsconfigsver3:port3> --bind_ip localhost,<IP地址>
如果從MongoDB 4.0.6或更早版本升級,
一旦mongos用於部署實例升級,即mongos例如開始產生 v1變化流恢復令牌。這些令牌不能用於在mongos尚未升級的實例上恢復流。
5
重新啓用平衡器。
使用4.2 mongoShell,連接到 mongos集羣中的並運行 sh.startBalancer()以重新啓用平衡器:
複製
複製的
SH.startBalancer()
從MongoDB 4.2開始,sh.startBalancer()還可以對分片羣集進行自動拆分。
如果您不希望在啓用平衡器時啓用自動拆分功能,則還必須運行sh.disableAutoSplit()。
有關重新啓用平衡器的更多信息,請參閱“ 啓用平衡器”。
6
啓用向後不兼容的4.2功能。
此時,您可以運行4.2二進制文件,而沒有與4.0不兼容的4.2 功能。
要啓用這些4.2功能,請將功能兼容版本(FCV)設置爲4.2。
小費
啓用這些向後不兼容的功能可能會使降級過程複雜化,因爲在降級之前必須刪除所有持久的向後不兼容的功能。
建議在升級後,允許您在不啓用這些功能的情況下運行部署,並且要在預熱期內確保降級的可能性最小。如果您確信降級的可能性很小,請啓用這些功能。
在mongos實例上,setFeatureCompatibilityVersion在admin 數據庫中運行 命令:
複製
複製的
db.adminCommand({ setFeatureCompatibilityVersion : “ 4.2” } )
此命令必須執行對內部系統集合的寫入。如果由於某種原因該命令未成功完成,則可以安全地重試該命令, mongos因爲該操作是冪等的。
注意
從MongoDB 4.0開始,mongos嘗試連接功能兼容版本(fCV)大於的mongod實例 時,二進制文件將崩潰。例如,您無法將MongoDB 4.0版本連接到fCV設置爲4.2 的4.2分片羣集。但是,您可以將MongoDB 4.0版本連接 到fCV設置爲4.0 的4.2分片羣集。mongosmongosmongos
升級後
TLS選項替換不推薦使用的SSL選項
從MongoDB 4.2開始,MongoDB棄用mongod,mongos和mongo shell的SSL選項 以及相應的net.ssl Options配置文件選項。
爲避免棄用消息,請TLS對mongod,mongos和mongo shell使用新選項 。
- 有關命令行TLS選項,請參閱mongod,mongos和 mongo Shell頁面。
- 對於相應的mongod和mongos配置文件的選項,請參閱配置文件頁面。
- 有關連接字符串tls選項,請參閱 連接字符串頁面。
4.2兼容的驅動程序默認重試寫入
需要與MongoDB 3.6和4.0兼容的官方驅動程序,包括retryWrites=true在連接字符串中的選項才能 爲該連接啓用可重試的寫入。
與MongoDB 4.2兼容的官方驅動程序默認情況下啓用可重試寫入。升級到需要兼容重寫的4.2兼容驅動程序的應用程序可以忽略該retryWrites=true 選項。應用升級到需要的4.2兼容的驅動程序 禁用重試寫操作必須包括 retryWrites=false連接的字符串中。
Power PC和2的散列索引值63
如果在PowerPC上,您發現哈希索引字段的值爲2 63,
- 如果刪除了文檔,請從導出中將其替換(作爲先決條件的一部分完成)。
- 如果在升級之前刪除了哈希索引,請重新創建索引。