文档简介:
通过mongoexport和mongoimport工具迁移数据
操作场景
文档数据库服务支持开启公网访问功能,通过EIP进行访问。您也可通过弹性云服务器的内网访问文档数据库。
要将已有的MongoDB数据库迁移到文档数据库,需要先使用mongoexport工具对它做转储。再通过弹性云服务器或可访问文档数据库的设备,使用mongoimport工具将转储文件导入到文档数据库服务。
前提条件
1. 准备弹性云服务器或可访问文档数据库的设备。
-
通过内网连接文档数据库实例,需要创建并登录弹性云服务器,请参见《弹性云服务器用户指南》中“创建并登录Windows弹性云服务器”或“创建并登录Linux弹性云服务器”的内容。
-
通过弹性公网IP连接文档数据库实例,需要具备以下条件。
i. 为实例中的节点绑定公网地址,如何绑定公网地址,请参见“集群”或“副本集”下“绑定和解绑弹性IP”的内容。
ii. 保证本地设备可以访问文档数据库绑定的公网地址。
2. 在已准备的弹性云服务器或可访问文档数据库的设备上,安装数据迁移工具。
安装数据迁移工具,请参见16.3.10 如何安装MongoDB客户端。
说明:MongoDB客户端会自带mongoexport和mongoimport工具。
导出数据
步骤 1 登录到已准备的弹性云服务器或可访问文档数据库的设备。
步骤 2 使用mongoexport,将源数据库转储至JSON文件。
此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的“--ssl --sslAllowInvalidCertificates”即可。
./mongoexport --host--port--ssl --sslAllowInvalidCertificates --type json --authenticationDatabase-u--db--collection--out
-
DB_ADDRESS为数据库地址。
-
DB_PORT为数据库端口。
-
AUTH_DB为存储DB_USER信息的数据库,一般为admin。
-
DB_USER为数据库用户。
-
DB_NAME为要迁移的数据库名称。
-
DB_COLLECTION为要迁移的数据库集合。
-
DB_PATH为存储数据JSON文件所在的路径。
出现如下提示时,输入数据库管理员对应的密码:
Enter password:
示例如下,命令执行完会生成“exportfile.json”文件:
./mongoexport --host 192.168.1.21 --port 8635 --ssl --sslAllowInvalidCertificates --type json --authenticationDatabase admin -u rwuser --db test02 --collection Test --out /tmp/mongodb/export/exportfile.json
步骤 3 查看迁移结果。
输出内容显示如下,说明迁移成功。其中,“x”表示转储数据的记录条数。
exported x records
步骤 4 压缩导出的JSON文件。
gzip exportfile.json
压缩是为了方便网络传输,压缩后生成“exportfile.json.gz”文件。
导入数据
步骤 1 登录到已准备的弹性云服务器或可访问文档数据库的设备。
步骤 2 将要导入的数据上传到弹性云服务器或可访问文档数据库的设备。
根据不同的平台选择相应的上传方法。Linux下可参考命令:
scp@:
-
IDENTITY_FILE为存储“exportfile.json.gz”的文件目录,该文件目录权限为600。
-
REMOTE_USER为弹性云服务器的操作系统用户。
-
REMOTE_ADDRESS为弹性云服务器的主机地址。
-
REMOTE_DIR为将“exportfile.json.gz”上传到弹性云服务器的文件目录。
Windows平台下,请使用传输工具上传“exportfile.json.gz”至弹性云服务器。
步骤 3 解压数据包。
gzip -d exportfile.json.gz
步骤 4 将转储文件导入到文档数据库。
此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的“--ssl --sslAllowInvalidCertificates”即可。
./mongoimport --host--port--ssl --sslAllowInvalidCertificates --type json --authenticationDatabase-u--db--collection--file
-
DB_ADDRESS为数据库实例的IP地址。
-
DB_PORT为数据库端口。
-
AUTH_DB为DB_USER进行权限验证的数据库,一般为admin。
-
DB_USER为数据库管理员帐号名。
-
DB_NAME为要导入的数据库。
-
DB_COLLECTION为要导入的数据库中的集合。
-
DB_PATH为转储数据JSON文件所在的路径。
出现如下提示时,输入数据库管理员对应的密码:
Enter password:
示例如下:
./mongoimport --host 192.168.1.21 --port 8635 --ssl --sslAllowInvalidCertificates --type json --authenticationDatabase admin -u rwuser --db test02 --collection Test --file /tmp/mongodb/export/exportfile.json
步骤 5 查看迁移结果。
输出内容显示如下,说明迁移成功。其中,“x”表示转储数据的记录条数。
imported x records