mongodump和mongorestore是MongoDB客户端自带的备份恢复工具。您可以在本地设备或ECS中安装MongoDB客户端,通过mongodump和mongorestore工具将自建MongoDB数据库或其他云数据库MongoDB迁移至天翼云DDS实例。
使用须知
- mongodump和mongorestore工具仅支持全量数据迁移。为保障数据一致性,迁移操作开始前请停止源数据库的相关业务,并停止数据写入。
- 建议您尽量选择在业务低峰期迁移数据,避免在迁移过程中对业务造成影响。
- 不支持迁移系统库admin和local。
- 确保源库中系统库admin和local没有创建业务集合,如果已经有业务集合,必须在迁移前将这些业务集合从admin和local库中迁移出来。
- 导入数据之前,确保源端有必要的索引,即在迁移前删除不需要的索引,创建好必要的索引。
- 如果选择迁移分片集群,必须在目标库创建好要分片的集合,并配置数据分片。同时,迁移前必须要创建好索引。
- 如果使用mongodump工具备份失败(示例:备份进度至97%时报错),建议您尝试增大虚拟机磁盘空间,预留部分冗余空间,再重新执行备份。
- 客户侧使用的是rwuser帐号,仅支持操作客户业务库表。所以,在使用时建议指定库和表,仅对业务数据执行导入导出。不指定库表,全量进行导入导出,可能会遇到权限不足的问题。
前提条件
准备弹性云服务器或可访问DDS的设备。
− 通过内网连接文档数据库实例,需要创建并登录弹性云服务器,请参见创建弹性云服务器和登录弹性云服务器。
− 通过公网地址连接文档数据库实例,需具备以下条件。
为实例中的节点绑定公网地址,保证本地设备可以访问文档数据库绑定的公网地址。
在已准备的弹性云服务器或可访问DDS的设备上,安装数据迁移工具。
安装数据迁移工具,请参见如何安装MongoDB客户端。
说明
MongoDB客户端会自带mongodump和mongorestore工具。
MongoDB客户端版本须和实例相匹配,若版本不匹配则会有兼容性问题出现。
导出源库数据
步骤 1 登录到已准备的弹性云服务器或可访问源数据库的设备。
步骤 2 使用mongodump工具,备份源数据库中的数据。
此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的“--ssl --sslCAFile < FILE_PATH > --sslAllowInvalidCertificates ”即可。
./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= < 备份文件的全目录的文件名称 >
表 参数说明
参数 | 说明 |
---|---|
<DB_HOST> | 数据库地址。 |
<DB_PORT> | 数据库端口号。 |
<DB_USER> | 数据库用户名。 |
<AUTH_DB> | 存储*<DB_USER>* 信息的数据库,一般为admin。 |
<FILE_PATH > | 存放根证书的路径。 |
<DB_NAME > | 需要迁移的数据库名称。 |
<DB_COLLECTION > | 需要迁移的数据库中的集合。 |
出现如下提示时,输入数据库管理员对应的密码:
Enter password:
示例如下,命令执行后,archive指定的文件即为最终的备份文件,如下命令以backup.tar.gz为例。
./mongodump --host 192.168. xx . xx ** --port 8635 --authenticationDatabase admin -u rwuser --ssl --sslCAFile/tmp/ca.crt --sslAllowInvalidCertificates --db** test --collection usertable --gzip --archive=backup.tar.gz
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)
将数据导入至目标DDS
步骤 1 登录到已准备的弹性云服务器或可访问DDS的设备。
步骤 2 将要导入的数据上传到弹性云服务器或可访问DDS的设备。
根据不同的平台选择相应的上传方法。
- Linux系统可参考如下命令:
scp -r <IDENTITY_DIR> <REMOTE_USER> @ <REMOTE_ADDRESS> :<REMOTE_DIR>
表 参数说明
参数 | 说明 |
---|---|
<IDENTITY_DIR> | 备份文件夹所在的目录。 |
<REMOTE_USER> | 步骤1中的弹性云服务器的操作系统用户。 |
<REMOTE_ADDRESS> | 步骤1中的弹性云服务器的主机地址。 |
<REMOTE_DIR> | 待导入的目标弹性云服务器的文件目录。 |
- Windows平台下,请使用传输工具上传备份目录至弹性云服务器。
步骤 3 将备份的数据导入到DDS。
此处以SSL连接方式为例进行说明,如果选择普通连接方式,去掉命令中对应的“--ssl --sslCAFile < FILE_PATH > --sslAllowInvalidCertificates ”即可。
./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= < 备份文件的全目录的文件名称 >
表 参数说明
参数 | 说明 |
---|---|
<DB_HOST> | DDS数据库地址。 |
<DB_PORT> | DDS数据库端口号。 |
<AUTH_DB> | <DB_USER>进行权限验证的数据库,一般为admin。 |
<DB_USER> | 数据库管理员帐号名,默认为rwuser。 |
<FILE_PATH > | 存放根证书的路径。 |
<DB_NAME > | 需要迁移的数据库名称。 |
<DB_COLLECTION > | 需要迁移的数据库中的集合。 |
出现如下提示时,输入数据库管理员对应的密码:
Enter password:
示例如下:
./mongorestore --host 192.168. xx.xx --port 8635 --authenticationDatabase admin -u rwuser --ssl --sslCAFile/tmp/ca.crt --sslAllowInvalidCertificates --db test --collection usertable --gzip --archive=backup.tar.gz
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
相关问题
在执行mongodump和mongorestore操作时,会对整个实例进行备份恢复,此时会出现权限验证失败。
- 问题原因
因为rwuser账户对实例上的admin库和config库权限受限,所以会出现权限验证失败。
- 解决方案:
明确指定用户业务相关库表,即可正常操作。