最近公司新購買了部服務器,原有的業務需要轉入到新的服務器,而舊的服務器操作系統是Window的,需要把數據轉移新Centos的服務器。這么一樣,就需要把MongoDB的數據導出后,再導到Centos系統了,自己嘗試了好幾款MongoDB的界面管理工具,要么就是免費的限制了導出與導入的功能,要么就是根本沒有這項功能,折騰再三后,還是回歸到使用MongoDB的命令更爽。下面我們就來實際的操作吧!
環境:Window server 2016 Standard -> Centos 7.9.2009 ,MongoDB 4.0.6
1、導出數據:
從window服務器導出數據:首先,打開CMD,通過命令,進行MongoDB所在的安裝目錄,輸入下面的命令:
mongodump -h 127.0.0.1 -d polygonImageMark -o c:/mongo/1m/
執行后,CMD會有如下的提示,如下圖所示:
執行完成后,可以在C:/mongo/lm/ 目錄中,看到以數據庫 polygonImageMark_20210414 為名稱的目錄以及相應的數據文件:
參數
到了這里,我們想要的數據便都已經導出了。接下來,我們再來具體了解一下,這個導出命令 mongodump ,以及它常用的參數有下面的這些:
參數 | 作用 | 示例 |
--host | 導出數據的主機名稱,或IP地址,以及端口號 | --host <主機名1><:端口> |
--port | 端口號可以上面的host中寫明,也可以單獨寫 | --host mongodb1.example.net --port 37017 |
--db / -d | 指定MongoDB中數據庫的名稱 | --db TestDb 或 -d TestDb |
--collection | 指定需要導出的集合的名稱,可以針對特定的集合導出數據 | --collection users |
--username / -u | 指定數據庫中,有相應權限的用戶名 | --username root 或 -u |
--password / -p | 指定數據庫中,對應用戶名的密碼 | --password "123456" 或 -p |
--out / -o | 指定備份的文件存放的路徑 | --out c:/mongo/ 或 -o c:/mongo/ |
--authenticationDatabase | 指定--username已在其中創建指定的身份驗證數據庫,后面為數據庫名稱 | --authenticationDatabase orderdb |
--query | 提供JSON 文檔作為查詢,可選擇限制mongodump,您必須將查詢文檔用單引號 ( ) 括起來,以確保它不會與您的 shell 環境交互。'{ ... }' 作為過濾數據時使用 |
--query '{json data ...}' |
--gzip | 壓縮輸出。如果輸出到轉儲目錄,則會壓縮成單個文件。后綴為.gz | --gzip |
--archive | 將輸出寫入單個存檔文件或標准輸出 ( 您不能將--archive 選項與 --out 選項一起使用 |
--archive = test.20150715.gz |
示例:
導出 test 數據庫存,壓縮存儲為 test.20150715.gz 文件
mongodump --archive = test.20150715.gz --gzip --db = test
示例:
使用 “用戶” 導出 host 為 mongodb1.example.net ,端口為 37017 的所有數據庫的集合,並存儲到 /opt/backup/mongodump-2011-10-24 的文件目錄
mongodump --host mongodb1.example.net --port 37017 --username 用戶 --password "pass" --out /opt/backup/mongodump-2011-10-24
2、導入數據
使用xftp工具,把需要上傳的備份文件上傳到Centos服務器,我這里是把文件夾改名為 LesionMark了。
接下來,通過 Xshell 連接服務器 通過下面的命令,執行導入操作即可:
/usr/bin/mongorestore -h 127.0.0.1 -d yourDbName /backup/data/path
其中 /usr/bin/mongorestore 是執行導入數據的程序的位置,可能跟你的服務器的實際情況有差別,這個時候,可以通過 find / -name mongorestore 查找它的具體位置;
參數:
-h 為主機的名稱 或者 ip地址,我這里是服務器本機,所以直接用 127.0.0.1
-d 這個是指定導入的數據庫名稱,如果數據庫不存在,則會自動新建數據庫,然后再自動導入
后面的 /root/LesionMark 則是需要導入的數據備份文件所在的目錄
--drop 恢復的時候,先刪除當前數據,然后恢復備份的數據。就是說,恢復后,備份后添加修改的數據都會被刪除,慎用哦!我這里因為是遷移數據,所以沒用到這個參數
到這里,就結束了,感謝您的閱讀,如果寫得不對,或有疑問,請在下面的評論區留言哦,謝謝!