更新时间:2024-10-28 GMT+08:00

库表数据恢复:恢复到指定时间点

操作场景

为了保证数据的完整性,以及降低对原实例的性能影响,会进行库表级时间点恢复。库表级恢复是为选择的某个库表恢复到指定时间点。在进行库表级时间点恢复备份时,会从OBS备份空间中选择一个该时间点最近的全量备份下载至临时实例上进行全量恢复,然后在临时实例上重放Binlog到指定时间点,完成之后将对应表的数据回写到原实例的目标表,恢复时长和实例的数据量有关,平均恢复速率为35MB/s。

由于需要对实例的所有数据进行备份及恢复操作,对于数据量较大的实例,所需时间较长,请耐心等待。通过库表级时间点恢复备份,将不会导致实例数据被覆盖,您可以根据需要恢复库表。

RDS for MySQL支持恢复单个实例的库表数据,以及批量恢复多个实例的库表数据。

使用限制

  • 普通表级时间点恢复或极速表级时间点恢复带外键的表,会将外键表的外键删除,同时更改表结构。
  • 表级时间点恢复,单个实例一次最多恢复2000张表。
  • 库级时间点恢复,单个实例一次最多恢复1000个库,一次最多恢复20000张表。
  • 批量恢复多个实例的库表数据,必须选择同版本RDS for MySQL实例,且实例状态必须为“正常”。
  • 一次性最多可以选择20个实例进行批量库表级时间点恢复。
  • RDS for MySQL库表级时间点恢复期间不允许主备实例和只读实例做规格变更,重启,删除等操作。
  • 进行库表级时间点恢复时,要恢复的库、表信息是在所选时间点前最新一次全量备份中读取的。由于所选时间点可以是恢复时间区间内的任意时间点,所以库表级时间点恢复支持恢复到存在指定库、表信息的最早的一次全量备份时间点。
  • 如果选择恢复的时间点不存在该表,则该表不会被恢复。
  • 表级时间点恢复,不支持恢复视图。建议先恢复出视图所涉及的表,然后重新创建视图。
  • 库级时间点恢复,只恢复库里面的表数据。恢复出来的新库,不包含视图。
  • 如果数据库实例超过2万张表,出于性能考虑,服务不会采集历史时间点的库表元数据信息,会从当前实例查找库表信息进行恢复。如果界面没有显示目标库表,而用户确认指定时间的库表存在,用户可以自行创建同名的空库表再进行库表恢复。
  • 库级恢复中,原库下的表名不能有特殊字符 . 或中文,否则可能导致恢复任务失败。

前提条件

由于该操作会在源实例上新生成恢复后的库表,请确保您的源实例磁盘空间充足。

恢复单个实例的库表数据

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. “实例管理”页面,选择目标实例,单击实例名称,进入实例的“概览”页签。
  5. 在左侧导航栏,选择“备份恢复”,单击“库表时间点恢复”
  6. 填选恢复信息,单击“下一步:确认恢复信息”

    • 为了方便您操作,所需恢复的数据库和表名支持搜索。
    • 系统会自动生成以时间戳为后缀的库表名,如果需要,您也可以自定义恢复后的库表名。
    • 表名不能重复且满足:名称长度在1~64个字符之间,只能包含字母、数字、下划线、中划线或$,不能包含其他特殊字符并且不能与同库下的表名重名。
    • 不支持带中文的库名和表名恢复。
    • 不支持库名带“.”字符的数据库恢复。
    • 不支持含json虚拟列的库表进行库级和表级时间点恢复。
    • 库级恢复过程中库中包含的冷表不会恢复;表级恢复不支持冷表恢复。
    • 库级时间点恢复过程中,如果创建同名库,可能会导致新创建库被覆盖,造成数据丢失。
    • 表级时间点恢复过程中,如果创建同名表,可能会导致新创建表被覆盖,造成数据丢失。
    • 如果当前实例和所选的要恢复到的时间点支持极速恢复,可在恢复模式中选择是否使用极速恢复。
    • 极速恢复时,如果实例存在XA事务,会导致数据丢失,请选择普通恢复。
    • 极速恢复时,如果重放的Binlog中有对目标表重命名的操作,那么目标表可能无法被恢复。
    图1 库表时间点恢复

  7. 信息确认无误后,单击“立即恢复”
  8. “实例管理”页面,可查看该实例状态为“恢复中”,恢复过程中该实例业务不中断。

    同时,您可在“任务中心”页面,查看库表时间点恢复任务的执行进度及结果。

    恢复成功后,您可根据实际情况对库表进行数据处理。

  • 恢复时长和实例的整体数据量有关,平均速度约为35MB/s。
  • 通过库表时间点恢复备份,不会影响新增数据。恢复出来是一个带有时间戳后缀的临时库表,用户可以根据实际情况对这个临时库表的数据进行处理。

批量恢复多个实例的库表数据

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. “实例管理”页面,勾选多个实例,在实例列表上方,选择“更多 > 库表时间点恢复”。
  5. 填选恢复信息,单击“下一步:确认恢复信息”

    • 为了方便您操作,所需恢复的实例名称、数据库名称和表名支持搜索。
    • 系统会自动生成以时间戳为后缀的库表名,如果需要,您也可以自定义恢复后的库表名。
    • 表名不能重复且满足:名称长度在1~64个字符之间,只能包含字母、数字、下划线、中划线或$,不能包含其他特殊字符并且不能与同库下的表名重名。
    • 不支持带中文的库名和表名恢复。
    • 不支持库名带“.”字符的数据库恢复。
    • 库级恢复过程中库中包含的冷表不会恢复;表级恢复不支持冷表恢复。
    • 库级时间点恢复过程中,如果创建同名库,可能会导致新创建库被覆盖,造成数据丢失。
    • 表级时间点恢复过程中,如果创建同名表,可能会导致新创建表被覆盖,造成数据丢失。
    • 库级时间点恢复,单个实例一次最多恢复2000个库,单个实例一次最多恢复20000张表。
    图2 批量库表时间点恢复

  6. 信息确认无误后,单击“立即恢复”
  7. “实例管理”页面,可查看实例状态为“恢复中”,恢复过程中实例业务不中断。

    同时,您可在“任务中心”页面,查看库表时间点恢复任务的执行进度及结果。

    恢复成功后,您可根据实际情况对库表进行数据处理。

  • 恢复时长和实例的整体数据量有关,平均速度约为35MB/s。
  • 通过库表时间点恢复备份,不会影响新增数据。恢复出来是一个带有时间戳后缀的临时库表,用户可以根据实际情况对这个临时库表的数据进行处理。

后续操作

恢复成功后可以登录数据库实例进行验证。