docker備份mongodb數據,導入導出


場景:服務器要升級,之前在linux部署的mongodb沒有用docker,升級后,mongodb要用docker部署,並將原有的mongodb數據導入到docker部署的mongodb中。

1.在linux安裝的mongodb文件下導出mongodb數據

 ./bin/mongodump -h ip:port  -d 數據庫名 -o  linux環境下指定的文件夾 //如有用戶名,則加上 --username xxx --password xxx

 

2.安裝docker :docker run -p 27018(容器外部訪問的端口):27017 -v $PWD/db:/data/db -d  --name mymongo mongo  --smallfiles

--auth ,開啟賬戶驗證

設置密碼

docker exec -it <docker_mongodb_name> mongo bash

user test

db.createUser( {

 user: "root",
 pwd: "root",

 roles: [ { role: "userAdminAnyDatabase", db: "test" } ]})

也可以:-e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secret

 參考文檔:https://docs.docker.com/samples/library/mongo/#mongo_initdb_root_username-mongo_initdb_root_password

3.進入docker mongodb容器:docker exec -it mymongo /bin/sh

在docker容器新建mongodb數據要導入的目錄,mkdir -p /opt/mongodbBack/

 

4.退出docker mongodb容器,進入真機linux

docker cp linux備份mongodb的數據文件(不是文件夾)  mymongo(容器名稱或id):/opt/mongodbBack/  

docker exec -it mymongo bash

執行: mongorestore -h localhost:27017 -d pac(數據庫名字,可以隨便寫,存在不存在都可以) --dir /opt/mongoData/

 

至此,已完成docker mongodb的數據導入linux的mongodb數據

 

5.將docker mongodb的數據導出到真機中

docker exec -it mymongo /bin/bash

mongodump -h 127.0.0.1 --port 27017 -d test -o /test/mongodBack     //在容器內部,導出數據到容器內部的指定文件夾

退出docker mongodb容器:docker cp <mongodb容器名>:/test/mongodBack/    /home/opt/mongodbData/(此為真機目錄)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM