MongoDB数据库迁移
通过mongoimport工具迁移数据_文档数据库服务 DDS_用户指南_数据迁移_华为云
- 通过mongoexport和mongoimport工具迁移数据
- 通过mongodump和mongorestore工具迁移数据
- 通过数据复制服务迁移数据
数据复制服务(Data Replication Service,简称DRS)支持在多种场景下,将源库数据迁移到目标文档数据库实例,最大限度允许迁移过程中业务继续对外提供使用,有效地将业务系统中断时间和业务影响最小化,完成数据库平滑迁移工作。
通过mongoexport和mongoimport工具迁移数据
操作场景
文档数据库服务支持开启公网访问功能,通过EIP进行访问。您也可通过 弹性云服务器 的内网访问文档数据库。
要将已有的 MongoDB数据库迁移到文档数据库,需要先使用mongoexport工具对它做转储。再通过 弹性云服务器 或可访问文档数据库的设备,使用mongoimport工具将转储文件导入到 文档数据库服务。
注意事项
- 建议您尽量选择在业务低峰期迁移数据,避免在迁移过程中对业务造成影响。
- 不支持迁移系统库admin和local。
- 确保源库中系统库admin和local没有创建业务集合,如果已经有业务集合,必须在迁移前将这些业务集合从admin和local库中迁移出来。
- 导入数据之前,确保源端有必要的索引,即在迁移前删除不需要的索引,创建好必要的索引。
- 如果选择迁移分片集群,必须在目标库创建好要分片的集合,并配置数据分片。同时,迁移前必须要创建好索引。
前提条件
- 准备 弹性云服务器 或可访问文档数据库的设备。
- 在已准备的 弹性云服务器 或可访问文档数据库的设备上,安装数据迁移工具。
安装数据迁移工具,请参见 如何安装MongoDB客户端。
说明: -
MongoDB客户端会自带mongoexport和mongoimport工具。
导出数据
- 登录到已准备的 弹性云服务器 或可访问文档数据库的设备。
- 使用mongoexport,将源数据库转储至JSON文件。
此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的 “--ssl --sslAllowInvalidCertificates”即可。
./ mongoexport --host < DB_ADDRESS> --port <DB_PORT> --ssl --sslAllowInvalidCertificates --type json --authenticationDatabase <AUTH_DB> -u <DB_USER> --db < DB_NAME> --collection < DB_COLLECTION> --out < DB_PATH>
- 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
- 查看迁移结果。
输出内容显示如下,说明迁移成功。其中,“x”表示转储数据的记录条数。
exported x records
- 压缩导出的JSON文件。
gzip exportfile.json
压缩是为了方便网络传输,压缩后生成 “exportfile.json.gz”文件。
导入数据
- 登录到已准备的 弹性云服务器 或可访问文档数据库的设备。
- 将要导入的数据上传到 弹性云服务器 或可访问文档数据库的设备。
根据不同的平台选择相应的上传方法。Linux下可参考命令:
scp < IDENTITY_FILE> <REMOTE_USER>@ <REMOTE_ADDRESS>: <REMOTE_DIR>
- IDENTITY_FILE为存储“exportfile.json.gz”的文件目录,该文件目录权限为600。
- REMOTE_USER为 弹性云服务器 的操作系统用户。
- REMOTE_ADDRESS为 弹性云服务器 的主机地址。
- REMOTE_DIR为将“exportfile.json.gz”上传到 弹性云服务器 的文件目录。
Windows平台下,请使用传输工具上传“exportfile.json.gz”至 弹性云服务器 。
- 解压数据包。
gzip -d exportfile.json.gz
- 将转储文件导入到文档数据库。
此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的 “--ssl --sslAllowInvalidCertificates”即可。
./ mongoimport --host < DB_ADDRESS> --port < DB_PORT> --ssl --sslAllowInvalidCertificates --type json --authenticationDatabase < AUTH_DB> -u < DB_USER> --db < DB_NAME> --collection < DB_COLLECTION> --file < DB_PATH>
- 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 --authen