按Key闪回

云数据库 MongoDB 版实例支持了按Key闪回功能,您可以对指定的数据集合发起备份,便于后续因系统漏洞或故障而引起的小部分数据错乱或意外丢失时,根据数据的闪回Key (默认为_id)可对这部分数据进行回档,快速恢复数据。

说明

Key闪回功能于20240226日正式开启公测。公测期间不收费。公测期间暂不承诺SLA。

前提条件

  • 实例类型为副本集或分片集群。

  • 实例存储类型为云盘版。

  • 实例大版本为MongoDB 5.0及以上。

  • Key闪回功能目前处于公测阶段,如需使用,请提交工单联系技术支持申请开通。

注意事项

开启按Key闪回功能会对实例性能产生一定影响,例如实例的TPS性能最高可能下降3%。

说明

上述实例性能影响仅供参考,具体以实际数据为准。

功能说明

功能

功能子项

说明

任务配置

闪回任务配置完成后生效时间

10分钟。

闪回数据保留时间

1~7天。

闪回备份数据可恢复时间

开启闪回备份任务后到当前时间。

在闪回备份保留的有效期内,您可以根据指定的时间和行ID,进行按Key闪回。

闪回备份操作

支持的闪回操作

  • 支持恢复UPDATEDELETE操作。

  • 不支持对INSERT操作插入的数据进行回滚删除。

  • 不支持DDL或其他操作导致的数据变更。

  • 如果数据没有变化,不支持闪回到当前状态。

支持的按行索引类型

  • 支持_id默认主键。

  • 支持用户自定义一般索引。

支持索引的数据类型

目前仅支持以下数据类型:

  • String

  • Double

  • ObjectId

  • Boolean

  • Date

  • 32-bit integer

  • 64-bit integer

  • Decimal128

索引字段

字段名称只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头

索引的长度和个数

单个索引字段长度为128,索引字段的数量限制是10个。

查询时支持的最大索引值大小

16KB,超过16KB的数据查询时可能会查不到。

查询结果里支持的单行数据大小

无限制。

闪回备份恢复

单次闪回恢复的最大行数

1000行,超过1000行会被截断。

预览闪回数据

恢复索引key预览的长度需小于48KB。

库表名设置

库名加表名长度需小于254。

例如,testtable表,展示为test.table,库名加表名的长度为10。

费用说明

公测期间不收费。

开启闪回备份

  1. 访问MongoDB副本集实例列表MongoDB分片集群实例列表,在上方选择资源组和地域,然后单击目标实例ID。

  2. 在目标实例页面的左侧导航栏,单击备份与恢复

  3. 单击key闪回页签。

  4. 单击闪回备份设置

    说明

    执行该操作后可能会提示权限不足,您需要输入账号及密码(该账号必须拥有待闪回库的读写权限)以继续操作。关于数据库账号及权限设置,请参见创建数据库账号并添加权限

  5. 闪回备份设置侧边框中,配置以下信息后,单击确定

    参数

    说明

    备份保留时间

    备份文件保留的天数,取值范围为1~7。

    例如,您设置了1天的保留时间,系统会在生成闪回备份文件后开始计时,并且在1天后自动删除该备份文件。

    选择需要备份的表

    选择需要备份的表。

    预览并设置需要备份的表中的索引

    输入需要备份的索引项(与getIndexes()获得的索引无关,指需要备份的行ID),默认为_id,多个索引间用逗号(,)分隔。

    一般索引的数量最多支持设置10个。

  6. 闪回备份设置修改对话框中,单击确定

重要

开启闪回备份需要10分钟生效时间,在闪回备份生效后,写入的数据才能被闪回。

发起闪回任务

  1. 备份与恢复key闪回页签,单击目标备份任务右侧的操作列的按时间点闪回

  2. 单击备份任务列表侧边框中,配置以下信息后,单击确定

    参数

    说明

    选择要恢复的表

    无需修改。

    创建临时表

    用于存储闪回数据的临时表。

    选择要恢复的时间点

    选择需要闪回到的备份时间点。

    说明

    上一步开启闪回备份需要10分钟生效时间,生效后才能选择要恢复的时间点。

    填写要恢复的key

    • 多组主键之间需要使用分号(;)分隔,表示或的关系。

      例如,索引为_id,需要恢复的值为key1key2,那么您需要在输入框中输入key1;key2,下方的恢复索引key预览会显示[ { "_id": "key1" }, { "_id": "key2" } ]

    • 一组主键之间需要使用逗号(,)分隔,表示且的关系。支持指定某一列进行查询,语法为column=value

      例如,输入框中输入key1;test1=v1,key2,下方的恢复索引key预览会显示[ { "_id": "key1" }, { "test1": "v1", "_id": "key2" } ]

    • 如果主键中存在逗号(,)或者分号(;),请使用转义字符(\)对其转义。

      例如,主键为a,b,name您需要在输入框中传入a\,b

    说明
    • 要恢复的key需要包含在闪回备份设置的“需要备份的索引项”中。

    • 该参数如果传入的值过长,系统会自动拆分为多个闪回任务,该情况不会对闪回备份产生影响。

  3. 闪回数据预览对话框中,选中需要闪回的数据,单击确定

    • 针对(;)分割的主键,如 test1=v1; test2=v2 ,会展示满足test1=v1的记录项与满足test2=v2的记录项。

    • 针对(,)分割的主键,如果存在_id索引,如 key,test1=v1,test2=v2,会展示满足_id=key 的记录项,忽略其他索引test1,test2;如果不存在_id索引,如 test1=v1,test2=v2,会展示满足 test1=v1 且满足 test2=v2 的记录项。

发起闪回任务后,闪回的数据会存储在临时表中,在临时表的有效期内(即开启闪回备份功能时设置的备份保留时间),您可以将临时表中的数据恢复至原表中。

恢复至原表

  1. 备份与恢复页面单击key闪回页签。

  2. 单击恢复至原表,可以恢复最近一条闪回任务;也可以单击闪回历史记录,查看所有的闪回备份任务,并选择需要闪回的数据恢复至原表。

  3. 恢复至原表对话框中,单击确定

    说明
    • 执行该操作将会把临时表中的数据恢复到原表中,原表中的数据会被覆盖。

    • 覆盖操作约耗时1~2分钟,期间请不要额外写入相同的Key,否则恢复后的数据可能不符合预期。

  4. 可以在恢复任务历史记录中,查看所有的闪回恢复任务。

关闭闪回备份

关闭指定备份任务

备份与恢复key闪回页签,单击目标备份任务右侧的操作列的关闭

关闭所有备份任务

备份与恢复key闪回页签,单击页面左上方的关闭闪回备份

重要

关闭闪回备份后,之前的闪回备份数据将不可用。

使用示例

第一步:开启闪回备份

  1. 查看当前库表test1.test001的数据。

    image

  2. 设置本次备份保留时间为1天,需要备份的表为test001,选择备份的索引为_id,name

    image

  3. 开启后,等待10分钟后闪回备份生效,再进行下一步。

第二步:发起闪回任务

  1. 2025-08-14T19:27(UTC+8)test.test001表进行修改。

    修改一条{name=xiaoli}的文档,设置{age=29};删除一条{name=xiaomi}的文档。

    image

  2. 查看当前库表test1.test001的数据。

    可以看到上述修改已生效。

    image

  3. 控制台发起闪回任务。

    1. 选择恢复的表为 test001,设置临时表名称为 temp_flashback_test003, 选择要恢复的时间点为数据修改之前的时间 2025-08-14T19:16(UTC+8),填写要恢复的索引项为 689d5715fb3153809d4894a1;name=xiaoli,可以看到恢复索引预览为[{"_id":"689d5715fb3153809d4894a1"},{"name":"xiaoli"}]

      image

    2. 点击确定,可以预览闪回数据。

      如图可以看到 2025-08-14T19:27(UTC+8) 的修改和删除记录(对应闪回操作为修改和新增)。

      image

    3. 勾选要发起闪回的数据,点击确定按钮,发起闪回任务。

      闪回任务如下展示,在闪回历史记录中可以看到多条闪回历史。

      image

  4. 查看临时表数据。

    针对[{"_id":"689d5715fb3153809d4894a1"},{"name":"xiaoli"}]闪回的临时表数据如下。

    image

第三步:恢复至原表

  1. 单击恢复至原表,可以恢复最近一条闪回任务。

    image

    或者可以点击“闪回历史记录”,选择一条闪回任务进行恢复。

    image

  2. 选择最近的一条闪回任务发起恢复。

  3. 单击“恢复任务历史记录” 可以查看恢复任务的进度。

    image

  4. 查看当前库表test1.test001的数据。

    数据已恢复到2025-08-14T19:27(UTC+8)修改前。

    image