MongoDB备份数据引擎升级

MongoDB备份数据引擎升级

准备工作

  1. 确认已经安装需要运行的MongoDB版本
  2. 确保有足够的空间进行数据导出导入
  3. 您必须使用MongoDB版本3.0或更高版本才能使用WireldTiger存储引擎。 如果使用较早的MongoDB版本,则必须在继续更改存储引擎之前升级MongoDB版本。本文使用的是MongoDB 3.6
  4. 本文使用docker来操作,请自行安装好docker环境。
  5. 直接在裸机安装MongoDB 3.6进行操作亦可。
  6. 这里演示从MongoDB 2.6备份出来的数据还原到MongoDB 3.6 并以WireldTiger引擎启动运行

步骤

1、启动你要运行的MongoDB版本,本文用的是3.6 ,Docker运行,配置文件写明要以wiredTiger 启动。

1
docker run -d --name $CONTAINER_NAME -v $DATA_PATH:/data/db -v $OLD_DATA_PATH:/data2 -v /$CONFIG_PATH/mongod.conf:/etc/mongod.conf.orig -p $IP:27017:27017 mongo:3.6
变量名 作用说明
$CONTAINER_NAME 自定义的容器名字
$DATA_PATH 容器在宿主机上的数据卷路径
$OLD_DATA_PATH 待升级的老版本MongoDB备份数据
$CONFIG_PATH 新版MongoDB的配置文件目录
$IP MongoDB容器对外提供服务的IP地址

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
engine: wiredTiger

# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

# network interfaces
net:
port: 27017
bindIp: 127.0.0.1

# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo

2、把 MongoDB 2.6的备份数据解压到$OLD_DATA_PATH

3、进入MongoDB 3.6的容器中执行以下命令

1
2
docker exec -it $CONTAINER_NAME /bin/bash #进入docker并分配bash终端
mongorestore data2/ #从data2目录中导入备份数据

OK,接下来静候佳音即可。中间会有一段漫长的导入数据,转换引擎,重建索引的过程。

当然,你要是土豪,用固态硬盘也是极好的。

4、最后一步,查看一下数据引擎。运行db.serverStatus()命令,查询结果包含如下内容即可:

1
2
3
4
5
"storageEngine" : {
"name" : "wiredTiger",
"supportsCommittedReads" : true,
"readOnly" : false,
"persistent" : true
0%