有時候我們可能需要將雲上資料庫下載到本地,下麵是我們在操作MongoDB資料庫時遇到的五個小問題。 其實現在RDS的 幫助文檔 寫的都比較詳細了,大家在第一次操作時,可以細讀一下,避免一些不必要的問題。 Problem 1 通過wget命令下載 雲MongoDB物理備份文件 時,url 中間有特殊字 ...
有時候我們可能需要將雲上資料庫下載到本地,下麵是我們在操作MongoDB資料庫時遇到的五個小問題。
其實現在RDS的 幫助文檔 寫的都比較詳細了,大家在第一次操作時,可以細讀一下,避免一些不必要的問題。
Problem 1
通過wget
命令下載 雲MongoDB物理備份文件 時,url 中間有特殊字元&,需要把url放在‘’(單引號中)。
否則報錯;
[1] 193923 [2] 193924 [2]+ Done Expires=1565425103 .......................................................... .......................................................... .......................................................... HTTP request sent, awaiting response... 403 Forbidden 2019-08-05 16:19:50 ERROR 403: Forbidden. [1]+ Exit 8
Problem 2
啟動MongoDB服務時,報錯。查看啟動log,主要的報錯信息如下;
2019-08-05T15:30:12.099+0800 I STORAGE [initandlisten] exception in initAndListen: 72 Requested option conflicts with current storage engine option for directoryPerDB; you requested false but the current server storage is already set to true and cannot be changed, terminating 2019-08-05T15:30:12.099+0800 I NETWORK [initandlisten] shutdown: going to close listening sockets... 2019-08-05T15:30:12.099+0800 I NETWORK [initandlisten] removing socket file: /tmp/mongodb-27017.sock 2019-08-05T15:30:12.099+0800 I NETWORK [initandlisten] shutdown: going to flush diaglog... 2019-08-05T15:30:12.099+0800 I CONTROL [initandlisten] now exiting 2019-08-05T15:30:12.099+0800 I CONTROL [initandlisten] shutting down with code:100
從上面的錯誤提示中可以看出主要是 directoryPerDB 的配置問題。
提示需要將directoryperdb 設置為 true。
Problem 3
當我們將在mongodb 的配置文件中添加以下參數後。
directoryperdb=ture
報錯如下:
Aug 05 15:47:04 weixin-qq01 mongod[192116]: Error parsing INI config file: the argument ('ture') for option 'directoryperdb' is invalid. Valid choices are 'on|off', 'yes|no', '1|0' and 'true|false'
正確的設置如下;
directoryperdb=on
Problem 4
如果雲資料庫是副本集,那麼下載還原後的資料庫已也會含有副本集的信息。如果想將還原的資料庫配置成新的副本集,需要移除就的副本集信息。
移除前,添加時會報錯,報錯信息如下;
"info" : "try querying local.system.replset to see current configuration", "ok" : 0, "errmsg" : "already initialized", "code" : 23, "codeName" : "AlreadyInitialized"
移除原因的副本信息,執行如下命令;
use local
db.system.replset.remove({})
[執行後,重新下服務]
Problem 5
配置副本集時,設置的oplogSize 要和 雲資料庫 副本集 的一樣大。
小於雲上設置的oplog,會報錯,錯誤信息如下。[例如本地設置的是1024]
"ok" : 0, "errmsg" : "cmdline oplogsize (1024) different than existing (25600) see: http://dochub.mongodb.org/core/increase-oplog", "code" : 13257, "codeName" : "Location13257"
大於雲上設置的的oplogsize,會報錯,錯誤信息如下。[例如本地設置的是1024]
"ok" : 0, "errmsg" : "cmdline oplogsize (31024) different than existing (25600) see: http://dochub.mongodb.org/core/increase-oplog", "code" : 13257, "codeName" : "Location13257"
補充說明:
(1):設置為true,每個資料庫的文件存儲在DBPATH指定目錄的不同的文件夾中。使用此選項,可以配置的MongoDB將數據存儲在不同的磁碟設備上,以提高寫入吞吐量或磁碟容量。預設為false。
(2):說明 MongoDB RDS 實例將 directoryperdb 設置為了 ture。 也為我們本地其他MongodB實例的參數設置提供了參考,也建議將 directoryperdb 設置為ture。
(3):查看oplogsize大小的指令;
db.printReplicationInfo()