恢复集群库表到指定时间点
为了保证数据的完整性,以及降低对原实例的性能影响,在进行库表级时间点恢复备份时,首先将选中时间点的全量数据和增量数据在后台恢复至一个临时实例,然后自动导出用户需要恢复的库表,再将这些库表恢复至原实例。由于需要对实例的所有数据进行备份及恢复操作,对于数据量较大的实例,所需时间较长,请耐心等待。
通过库表级时间点恢复数据,会在实例上新生成恢复后的库表,不会导致实例数据被覆盖,您可以根据需要恢复库表。
使用须知
- 目前,DDS 4.0及以上版本的集群实例支持库表级时间点恢复。
- 开启自动备份策略后,才允许按时间点恢复库表数据。
- 恢复成功后,默认会在实例上生成以“原表名_bak_时间戳”命名的新表,如果有索引,索引的ns会相应的变成“原库名.原表名_bak_时间戳”,请您根据实际情况对表进行重命名或者后续的数据处理。
- 由于会在原实例上生成恢复后的新库表,请您确保原实例磁盘空间充足。
- “库名.表名”长度小于等于120字符,“库名.表名.索引名”长度小于等于128字符,请您确保恢复后的库表名和索引名长度符合要求,避免恢复失败
- 请您确保恢复后的表名和已有表名不同,避免恢复失败。
- 当全备和增备的时间窗发生重叠时,会优先保证全备任务的完成,因此对增备流程进行限制,使得小部分的恢复时间段不在可恢复时间窗中。
- 选择表级恢复,如果对应时间不存在该表,则系统会创建一个空表,选择库级恢复,则不会创建该表。
- 当oplog增量大于250GB/h的流量时,增量备份速度可能会无法跟上oplog操作日志产生速度,概率出现部分恢复时间点不可选的问题。
- 目前此功能仅支持白名单用户使用,需要提交工单申请才能使用。您可以在管理控制台右上角,选择“工单 > 新建工单”,完成工单提交。
使用限制
- 库表恢复与CPU及内存规格相关,恢复单表内数据到指定时间点,最大支持单条数据大小见表1。
- 库表级恢复失败时,可通过扩容规格或分批次进行库表时间点恢复。
CPU类型 |
规格类型 |
vCPU(个) |
内存(GB) |
单集合恢复最大支持单条数据大小 |
---|---|---|---|---|
x86 |
通用型 |
2 |
4 |
400KB |
2 |
8 |
800KB |
||
4 |
8 |
1MB |
||
4 |
16 |
1.3MB |
||
8 |
16 |
1.3MB |
||
8 |
32 |
2MB |
||
增强Ⅱ型 |
1 |
8 |
400KB |
|
2 |
8 |
800KB |
||
2 |
16 |
800KB |
||
4 |
16 |
1.3MB |
||
4 |
32 |
1.3MB |
||
8 |
32 |
2MB |
||
8 |
64 |
3MB |
||
16 |
64 |
4MB |
||
16 |
128 |
7MB |
||
32 |
128 |
7MB |
||
32 |
256 |
10MB |
||
64 |
256 |
10MB |
||
64 |
512 |
16MB |
||
鲲鹏 |
- |
2 |
4 |
400KB |
- |
2 |
8 |
800KB |
|
- |
4 |
8 |
1MB |
|
- |
4 |
16 |
1.3MB |
|
- |
8 |
16 |
1.3MB |
|
- |
8 |
32 |
2MB |
|
- |
16 |
32 |
2MB |
|
- |
16 |
64 |
4MB |
操作步骤
- 登录管理控制台。
- 单击管理控制台左上方的,选择区域和项目。
- 在页面左上角单击,选择 ,进入文档数据库服务信息页面。
- 在“实例管理”页面,选择集群实例,单击实例名称。
- 在左侧导航树,单击“备份恢复”。
- 在“备份恢复”页面,单击“库表级时间点恢复”。
- 在弹出框中,填选相关信息,恢复后的新库表数据与所选要恢复到时间点下库表数据一致。
表2 库表信息 配置项
说明
恢复日期
实例自动备份所在的日期。
可恢复的时间区间
指定自动备份日期下,可恢复的时间区间。
基准时间点
指定可恢复的时间区间下,自动全量备份的时间点。
基准可恢复的时间区间
基于该自动全量备份,能够将库表恢复到的时间区域。
选择恢复库表
在左侧库表区域,显示查询到的基于基准时间点的自动全量备份下的库表。勾选左侧库表名,库表信息将同步到右侧区域。
要恢复到的时间点
指定基准可恢复的时间区间下的某一时间点。
自定义库表
您可以根据需要添加自定义库表。
- 由于系统库不可进行恢复,库名不能为系统库admin、local和config。
- 库名不能包含特殊字符".$\/*?~#:|和空格。
- 表名不能以system为前缀。
- “库名.表名”长度小于等于120字符,“库名.表名.索引名”长度小于等于128字符,请您确保恢复后的库表名和索引名长度符合要求,避免恢复失败。
- 请您确保恢复后的表名和已有表名不同,避免恢复失败。
- 恢复成功后,默认会在实例上生成以“原表名_bak_时间戳”命名的新表,如果有索引,索引的ns会相应的变成“原库名.原表名_bak_时间戳”,请您根据实际情况对表进行重命名或者后续的数据处理。
对于已添加的自定义库表,建议您将该类库表对应的“要恢复到的时间点”,区别于同步到右侧的库表对应的“要恢复到的时间点”,设置为不同时间值。系统将按时间点恢复库表数据到该自定义库表。
恢复类型
选择将数据恢复到库或恢复到表。
选择表级恢复,如果对应时间不存在该表,则系统会创建一个空表,选择库级恢复,如果对应时间不存在该库,会创建一个空库。
选择库级恢复,会创建一个新库,新库下的表名会和要恢复的库下的表名一致。
图1 选择恢复库表
- 单击“下一步:确认恢复信息”。
- 单击“立即恢复”,开始恢复库表数据。
图2 确认恢复信息
- 在“实例管理”页面,可查看该实例状态为“恢复中”,恢复过程中该实例业务不中断。
- 恢复成功后,您可根据实际情况对库表进行处理。
如果您的业务需要继续使用原先的库表名,可以通过rename操作,备份原库表,并将您的业务切换到恢复后的库表。确保业务正常后,再删除原库表。
重命名单个库表示例:
db.adminCommand({renameCollection: "db1.test1", to: "db2.test2"})
该命令表示将db1库下的表test1移动到db2下,并重命名为test2。