mongodb数据迁移
因服务器到期,需要将之前机器上面的数据进行数据迁移,并将服务全部docker化
备份
首先需要将现有即将到期的服务器上面的mongo数据进行备份
mongodump -h dbhost -d dbname -o dbdirectory
- -h:mongodb所在服务器地址,可指定端口:127.0.0.1:27016
- -d:需要备份的数据库实例
- -o:备份数据存放位置
这里需要⚠️mongo与mysql不一样的是需要单个数据库实例进行备份,而mysql在备份的时候可能会是直接导出整个服务器的数据而不是单个库,这里在mongodb备份的时候如果不设置数据库实例 则会备份所有的实例
压缩传送
第二步我选择将备份好的文件进行压缩,方便进行服务器间传输
zip db.zip ./dbname
scp username@ip/path username2@ip/path
Docker
这一步主要是设置新机器上面的docker环境(可根据自己的服务器类型进行docker的安装,这里就不进行赘诉了,不了解的可以自行百度)
正常情况下pull镜像时会特别慢,这里建议设置下加速,创建或者修改 /etc/docker/daemon.json 文件
{
"registry-mirrors": [
// Docker中国区官方镜像
"https://registry.docker-cn.com",
// 网易
"http://hub-mirror.c.163.com",
// 中国科技大学
"https://docker.mirrors.ustc.edu.cn"
]
}
或者在阿里云生成自己的加速地址 容器镜像服务=>镜像加速器
重启docker
service docker restart
docker info
// Registry
Docker Mongo
docker pull mongo
docker images
docker run -d -p 27017:27017 -v $PWD/mongo/db:/data/db --name mongodb --auth
我这里开启了auth认证?
docker ps -a
docker exec -it mongodb bash
接下来就是配置数据库的帐号密码了
mongo
> use admin
> db.createUser({ user: 'username', pwd: 'password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
> db.auth('username', 'password')
1
> use dbname
> db.createUser({ user: 'dbusername', pwd: 'dbpassword', roles: [{ role: "readWrite", db: "dbname" }] });
> db.auth('dbusername', 'dbpassword')
1
以上表示创建用户成功,并且验证成功
退出docker 镜像 exit
恢复数据
- copy 文件至镜像中
- 执行mongorestore
cd /path
unzip db.zip
docker cp db mongodb:/home/
docker exec -it mongodb bash
cd /home
ls
mongorestore -u=dbusername -p=dbpassword -d dbname ./db
// 日志提示导入成功
测试
- 通过mongo shell 进行查询(在docker镜像中)
mongo
> use dbname
> db.col.find(query, projection)
// 数据正常 表示没问题
- 通过Navicat 连接进行验证(可能需要开启mongo端口)
以上就是数据迁移的所有内容 enjoy it?!
如果你觉得这篇内容对你挺有启发,我想邀请你帮我两个小忙:
点个【在看】,或者分享转发,让更多的人也能看到这篇内容
关注公众号【思享说】,不定期分享原创&精品技术文章。
觉得文章不错可以分享到朋友圈让更多的小伙伴看到哦~
客官!在看一下呗