文档首页> 云数据库 GeminiDB> GeminiDB Mongo接口> 用户指南> 数据迁移> 通过mongodump和mongorestore工具迁移数据
更新时间:2024-01-10 GMT+08:00

通过mongodump和mongorestore工具迁移数据

mongodump和mongorestore是MongoDB客户端自带的备份恢复工具。您可以在本地设备或ECS中安装MongoDB客户端,通过mongodump和mongorestore工具将自建MongoDB数据库或其他云数据库MongoDB迁移至华为云GeminiDB Mongo 实例。

使用须知

  • mongodump和mongorestore工具仅支持全量数据迁移。为保障数据一致性,迁移操作开始前请停止源数据库的相关业务,并停止数据写入。
  • 建议您尽量选择在业务低峰期迁移数据,避免在迁移过程中对业务造成影响。
  • 不支持迁移系统库admin和local。
  • 确保源库中系统库admin和local没有创建业务集合,如果已经有业务集合,必须在迁移前将这些业务集合从admin和local库中迁移出来。
  • 导入数据之前,确保源端有必要的索引,即在迁移前删除不需要的索引,创建好必要的索引。
  • 如果选择迁移分片集群,必须在目标库创建好要分片的集合,并配置数据分片。同时,迁移前必须要创建好索引。
  • 如果使用mongodump工具备份失败(示例:备份进度至97%时报错),建议您尝试增大虚拟机磁盘空间,预留部分冗余空间,再重新执行备份。
  • 客户侧使用的是rwuser账号,仅支持操作客户业务库表。所以,在使用时建议指定库和表,仅对业务数据执行导入导出。不指定库表,全量进行导入导出,可能会遇到权限不足的问题。

前提条件

  1. 准备弹性云服务器或可访问GeminiDB Mongo 的设备。
    • 通过内网连接GeminiDB Mongo 数据库实例,需要创建并登录弹性云服务器,请参见购买弹性云服务器登录弹性云服务器
    • 通过公网地址连接GeminiDB Mongo数据库实例,需具备以下条件。
      1. 为实例中的节点绑定公网地址,如何绑定公网地址,请参见绑定弹性公网IP
      2. 保证本地设备可以访问GeminiDB Mongo 数据库绑定的公网地址。
  2. 在已准备的弹性云服务器或可访问GeminiDB Mongo 的设备上,安装数据迁移工具。

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

    • MongoDB客户端会自带mongodump和mongorestore工具。
    • MongoDB客户端版本须和实例相匹配,若版本不匹配则会有兼容性问题出现。

导出源库数据

  1. 登录到已准备的弹性云服务器或可访问源数据库的设备。
  2. 使用mongodump工具,备份源数据库中的数据。

    • SSL命令格式:

      ./mongodump --host <DB_HOST> --port <DB_PORT> --authenticationDatabase <AUTH_DB> -u <DB_USER> --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidCertificates --db <DB_NAME> --collection <DB_COLLECTION> --gzip --archive=<Backup_directory>

    • 非SSL命令格式:

      ./mongodump --host <DB_HOST> --port <DB_PORT> --authenticationDatabase <AUTH_DB> -u <DB_USER> --db <DB_NAME> --collection <DB_COLLECTION> --gzip --archive=<Backup_directory>

    表1 参数说明

    参数

    说明

    DB_HOST

    数据库地址。

    DB_PORT

    数据库端口号。

    DB_USER

    数据库用户名。

    AUTH_DB

    存储<DB_USER>信息的数据库,一般为admin。

    FILE_PATH

    存放根证书的路径。

    DB_NAME

    需要迁移的数据库名称。

    DB_COLLECTION

    需要迁移的数据库中的集合。

    Backup_directory

    导出数据的存放路径,可以自定义路径。

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

    Enter password:

    示例如下:

    ./mongodump --host 192.168.xx.xx --port 8635 --authenticationDatabase admin -u rwuser --db test --collection usertable --gzip --archive=/tmp/usertable.tar.gz

将数据导入至目标GeminiDB Mongo

  1. 登录到已准备的弹性云服务器或可访问GeminiDB Mongo 的设备。
  2. 将要导入的数据上传到弹性云服务器或可访问GeminiDB Mongo 的设备。

    根据不同的平台选择相应的上传方法。

    • Linux系统可参考如下命令:

      scp -r <IDENTITY_DIR> <REMOTE_USER>@<REMOTE_ADDRESS>:<REMOTE_DIR>

      表2 参数说明

      参数

      说明

      <IDENTITY_DIR>

      备份文件夹所在的目录。

      <REMOTE_USER>

      1中的弹性云服务器的操作系统用户。

      <REMOTE_ADDRESS>

      1中的弹性云服务器的主机地址。

      <REMOTE_DIR>

      待导入的目标弹性云服务器的文件目录。

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

  3. 将备份的数据导入到GeminiDB Mongo

    • SSL命令格式:

      ./mongorestore --host <DB_HOST> --port <DB_PORT> --authenticationDatabase <AUTH_DB> -u <DB_USER> --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidCertificates --db <DB_NAME> --collection <DB_COLLECTION> --gzip --archive=<Backup_directory>

    • 非SSL命令格式:

      ./mongorestore --host <DB_HOST> --port <DB_PORT> --authenticationDatabase <AUTH_DB> -u <DB_USER> --db <DB_NAME> --collection <DB_COLLECTION> --gzip --archive=<Backup_directory>

    表3 参数说明

    参数

    说明

    DB_HOST

    GeminiDB Mongo数据库地址。

    DB_PORT

    GeminiDB Mongo数据库端口号。

    AUTH_DB

    数据库管理员进行权限验证的数据库,一般为admin。

    DB_USER

    数据库管理员账号名,默认为rwuser。

    FILE_PATH

    存放根证书的路径。

    DB_NAME

    需要导入的数据库名称。

    DB_COLLECTION

    需要导入的数据库中的集合。

    Backup_directory

    备份文件存储目录。

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

    Enter password:

    示例如下:

    ./mongorestore --host 192.168.xx.xx --port 8635 --authenticationDatabase admin -u rwuser --db test --collection usertable --gzip --archive=/tmp/usertable.tar.gz

相关问题

在执行mongodump和mongorestore操作时,会对整个实例进行备份恢复,此时会出现权限验证失败。

  • 问题原因

    因为rwuser账户对实例上的admin库和config库权限受限,所以会出现权限验证失败。

  • 解决方案:

    明确指定用户业务相关库表,即可正常操作。