docker備份mongodb數據,導入導出

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

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

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

 

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

--auth ,開啓帳戶驗證bash

設置密碼服務器

docker exec -it <docker_mongodb_name> mongo bashspa

user testrest

db.createUser( {code

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

 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/(此爲真機目錄)

相關文章
相關標籤/搜索