在这篇文章中简单介绍对容器化的单体mongoDB从2.6升级到3.4,并将存储引擎从MMAPv1转换成WiredTiger。
此处创建用于测试的mongoDB容器,容器化的mongoDB的文件挂载到本地的/mongodb.
docker run -d --name=mongo01 -p 27017:27017 -v /mongodb:/data/db mongo:2.6
为了升级mongoDB,并改变存储引擎,我们需要做:
- mongodump导出数据
- 备份mongoDB数据
- 创建mongoDB3.4容器,该版本默认使用数据存储引擎WiredTiger
- mongorestore数据到新版本的容器
(NOTE: 只有在想要改变存储引擎时需要导入和导出数据,如果不需要改变存储引擎,只需要挂载数据路径即可)
(1)数据导出
创建临时的容器来保存导出的数据
docker run -i --rm --link mongo01 -v /tmp/mongoexport:/tmp mongo:2.6 bash -c 'mongodump -v --host mongo01:27017 --out /tmp'
(2)升级mongo
删除老版本的mongo容器,创建新版本的mongo容器
docker stop mongo01
docker rm mongo01
sudo mv /mongodb /mongodb-2-6-backup
docker run -d --name=mongo01 -p 27017:27017 -v /mongodb:/data/db mongo:3.4
(3)导入数据到新版本的mongo容器
docke run -it --rm --link mongo01 -v /tmp/mongoexport:/tmp mongo:3.4 bash -c 'mongorestore -v --host mongo01:27017 /tmp'
当临时容器完成import以后,至此mongoDB3.4升级完毕。