Skip to content

Latest commit

 

History

History
124 lines (85 loc) · 7.3 KB

通过mongodump和mongorestore工具迁移数据.md

File metadata and controls

124 lines (85 loc) · 7.3 KB

通过mongodump和mongorestore工具迁移数据

操作场景

文档数据库服务支持开启公网访问功能,通过EIP进行访问。通过弹性云服务器访问,迁移前需要创建一台弹性云服务器,并安装mongodump和mongorestore工具。

关于迁移增强版实例数据的注意事项,请参见《文档数据库服务最佳实践》中“DDS增强版使用须知”的内容。

注意事项

  • 建议您尽量选择在业务低峰期迁移数据,避免在迁移过程中对业务造成影响。
  • 不支持迁移系统库admin和local。
  • 确保源库中系统库admin和local没有创建业务集合,如果已经有业务集合,必须在迁移前将这些业务集合从admin和local库中迁移出来。
  • 导入数据之前,确保源端有必要的索引,即在迁移前删除不需要的索引,创建好必要的索引。
  • 如果选择迁移分片集群,必须在目标库创建好要分片的集合,并配置数据分片。同时,迁移前必须要创建好索引。
  • 如果使用mongodump工具备份失败(示例:备份进度至97%时报错),建议您尝试增大虚拟机磁盘空间,预留部分冗余空间,再重新执行备份。

前提条件

  1. 准备弹性云服务器或可访问文档数据库的设备。

    • 通过内网连接文档数据库实例,需要创建并登录弹性云服务器,请参见购买弹性云服务器登录弹性云服务器
    • 通过公网地址连接文档数据库实例,需具备以下条件。
      1. 为实例中的节点绑定公网地址,如何绑定公网地址,请参见《文档数据库服务快速入门》各实例类型下“绑定和解绑弹性IP”的内容。
      2. 保证本地设备可以访问文档数据库绑定的公网地址。
  2. 在已准备的弹性云服务器或可访问文档数据库的设备上,安装数据迁移工具。

    安装数据迁移工具,请参见如何安装MongoDB客户端

    说明:
    MongoDB客户端会自带mongoexport和mongoimport工具。

备份数据

  1. 登录到已准备的弹性云服务器或可访问文档数据库的设备。

  2. 使用mongodump工具,备份源数据库中的数据。

    此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的“--ssl --sslCAFile <FILE_PATH> --sslAllowInvalidCertificates”即可。

    **mongodump --host <__DB_HOST> --port <DB_PORT> -u <DB_USER> --authenticationDatabase **<AUTH_DB> --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidCertificates

    • DB_HOST为数据库地址。
    • DB_PORT为数据库端口号。
    • DB_USER为数据库用户名。
    • AUTH_DB为存储DB_USER信息的数据库,一般为admin。
    • FILE_PATH是存放根证书的路径。

    出现如下提示时,输入数据库管理员对应的密码:

    Enter password:
    

    示例如下,命令执行后,源数据库中的数据将备份至当前目录下的“dump”文件夹中。

    ./mongodump --host 192.168.6.39 --port 8635 -u rwuser --authenticationDatabase admin --ssl --sslCAFile /tmp/ca.crt --sslAllowInvalidCertificates

    2019-03-04T18:42:10.687+0800    writing admin.system.users to
    2019-03-04T18:42:10.688+0800    done dumping admin.system.users (1 document)
    2019-03-04T18:42:10.688+0800    writing admin.system.roles to
    2019-03-04T18:42:10.690+0800    done dumping admin.system.roles (0 documents)
    2019-03-04T18:42:10.690+0800    writing admin.system.version to
    2019-03-04T18:42:10.691+0800    done dumping admin.system.version (2 documents)
    2019-03-04T18:42:10.691+0800    writing test.test_collection to
    2019-03-04T18:42:10.691+0800    writing admin.system.profile to
    2019-03-04T18:42:10.692+0800    done dumping admin.system.profile (4 documents)
    2019-03-04T18:42:10.695+0800    done dumping test.test_collection (198 documents)
    

导入数据

  1. 登录到已准备的弹性云服务器或可访问文档数据库的设备。

  2. 将要导入的数据上传到弹性云服务器或可访问文档数据库的设备。

    根据不同的平台选择相应的上传方法。Linux下可参考命令:

    scp -r <_IDENTITY_DIR> <REMOTE_USER>@<REMOTE_ADDRESS>:<REMOTE_DIR>_

    • IDENTITY_DIR为备份文件夹所在的目录。
    • REMOTE_USER为1中的弹性云服务器的操作系统用户。
    • REMOTE_ADDRESS为1中的弹性云服务器的主机地址。
    • REMOTE_DIR为待导入的目标弹性云服务器的文件目录。

    Windows平台下,请使用传输工具上传备份目录至弹性云服务器。

  3. 将备份的数据导入到文档数据库。

    此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的“--ssl --sslCAFile <FILE_PATH> --sslAllowInvalidCertificates”即可。

    ./mongorestore --host <__DB_HOST> --port **<DB_PORT> -u <DB_USER> --authenticationDatabase <AUTH_DB>_ _<Backup directory> --ssl --sslCAFile** <FILE_PATH> --sslAllowInvalidCertificates

    • DB_HOST为数据库地址。
    • DB_PORT为数据库端口号。
    • DB_USER为数据库管理员帐号名,默认为rwuser。
    • AUTH_DB为DB_USER进行权限验证的数据库,一般为admin。
    • Backup directory:备份文件存储目录,默认为“dump”。
    • FILE_PATH是存放根证书的路径。

    出现如下提示时,输入数据库管理员对应的密码:

    Enter password:
    

    示例如下:

    ./mongorestore --host 192.168.6.187 --port 8635 -u rwuser --authenticationDatabase admin dump --ssl --sslCAFile /tmp/ca.crt --sslAllowInvalidCertificates

    2019-03-05T14:19:43.240+0800    preparing collections to restore from
    2019-03-05T14:19:43.243+0800    reading metadata for test.test_collection from dump/test/test_collection.metadata.json
    2019-03-05T14:19:43.263+0800    restoring test.test_collection from dump/test/test_collection.bson
    2019-03-05T14:19:43.271+0800    restoring indexes for collection test.test_collection from metadata
    2019-03-05T14:19:43.273+0800    finished restoring test.test_collection (198 documents)
    2019-03-05T14:19:43.273+0800    restoring users from dump/admin/system.users.bson
    2019-03-05T14:19:43.305+0800    roles file 'dump/admin/system.roles.bson' is empty; skipping roles restoration
    2019-03-05T14:19:43.305+0800    restoring roles from dump/admin/system.roles.bson
    2019-03-05T14:19:43.333+0800    done