当发生部分表的误操作时,可进行库表恢复,将误操作的某张表或某些表恢复到原集群。
库表恢复分为按时间点恢复和按备份集(快照)恢复,两者的区别在于要恢复至的时间点是否是备份集的时间点。如果是备份集的时间点,则可选择按备份集(快照)恢复更方便。如果要恢复至的时间不是已有的备份集的时间点,则只能选择按时间点恢复。
库表恢复新流程已在PolarDB MySQL版8.0.1版本且小版本为8.0.1.1.48及以上版本灰度发布Fast Import新特性。
整体流程
无论是按时间点恢复还是按备份集(快照)恢复,两者的关键流程是一致的:先创建一个临时节点,并将某个时间点的数据恢复至该节点,然后再将恢复出的数据恢复到原集群。
库表恢复新版已于2024年04月03日发布,相比旧版,优化了向原集群恢复数据的时间,并且热备集群以及GDN从集群可自动同步数据,大幅减少了任务的恢复时间。
版本要求
支持使用库表恢复新版的企业版集群版本要求如下:
PolarDB MySQL版8.0.2版本,修订版本需为8.0.2.2.25.3及以上。
PolarDB MySQL版8.0.1版本,修订版本需为8.0.1.1.44及以上。
PolarDB MySQL版5.7版本,修订版本需为5.7.1.0.30及以上。
PolarDB MySQL版5.6版本,修订版本需为5.6.1.0.42及以上。
支持使用库表恢复新版的标准版集群版本要求如下:
PolarDB MySQL版8.0.2版本,修订版本需为8.0.2.2.21及以上。
PolarDB MySQL版8.0.1版本,修订版本需为8.0.1.1.38.2及以上。
PolarDB MySQL版5.7版本,修订版本需为5.7.1.0.30及以上。
PolarDB MySQL版5.6版本,修订版本需为5.6.1.0.42及以上。
新旧版本流程图
当集群的修订版本符合上述版本要求时,将自动进入库表恢复新版恢复流程。旧版和新版流程原理图如下:
建议在业务低峰期进行数据恢复。
预估时间
各步骤预估耗时
步骤 | 预估耗时 |
创建一个临时节点,并将备份集中的数据恢复至该节点。 | 约3~10分钟。 |
恢复Redo日志增量数据。 说明 仅按时间点恢复的方式需要恢复该类数据。耗时和需要应用的Redo日志大小相关。 | 1.5 GB/分钟。 |
将数据恢复至原集群。 | 预估耗时请参见库表恢复速度测试数据参考。 |
以上数据仅供参考。
如果待恢复的数据量达到TB级别,执行库表恢复操作可能耗时较长。如果想要快速恢复该数据,可使用备份集全量恢复,一般耗时几分钟。具体操作请参见全量恢复方式1:从备份集恢复。
库表恢复速度测试数据参考
CPU和内存(独享) | 测试数据 | innodb_io_capacity | innodb_io_capacity_max | 旧版流程 | 新版流程 | 新版较旧版恢复速度对比 | |||||
是否开启存储热备 | 恢复耗时 | 恢复速度 | 恢复速度配置 | 恢复耗时 | 恢复速度 | (旧版流程)是否开启存储热备 | 速度提升 | ||||
2核8 GB | 单表200 GB左右 | 4000 | 8000 | 是 | 3小时38分钟25秒 | 1.03 GB/分钟 | 常规 | 1小时43分钟36秒 | 2.16 GB/分钟 | 是 | 110% |
否 | 2小时23分钟0秒 | 1.57 GB/分钟 | 否 | 38% | |||||||
4核16 GB | 单表200 GB左右 | 4000 | 8000 | 是 | 3小时3分钟31秒 | 1.14 GB/分钟 | 快速 | 54分13秒 | 3.70GB/分钟 | 是 | 225% |
否 | 88% | ||||||||||
常规 | 1小时20分 | 2.5GB/分钟 | 是 | 119% | |||||||
否 | 1小时45分钟53秒 | 1.97 GB/分钟 | 否 | 27% | |||||||
安全 | 2小时12分 | 1.52GB/分钟 | 是 | 33% | |||||||
否 | -30% | ||||||||||
8000 | 16000 | 是 | 3小时3分钟15秒 | 1.14 GB/分钟 | 快速 | 42分18秒 | 4.76GB/分钟 | 是 | 318% | ||
否 | 142% | ||||||||||
常规 | 54分16秒 | 3.70GB/分钟 | 是 | 225% | |||||||
否 | 1小时45分钟53秒 | 1.97 GB/分钟 | 否 | 88% | |||||||
安全 | 1小时20分 | 2.5GB/分钟 | 是 | 119% | |||||||
否 | 27% | ||||||||||
8核32 GB | 单表200 GB左右 | 4000 | 8000 | 是 | 2小时50分钟56秒 | 1.19 GB/分钟 | 快速 | 54分39秒 | 3.70GB/分钟 | 是 | 211% |
否 | 80% | ||||||||||
常规 | 1小时21分 | 2.47GB/分钟 | 是 | 108% | |||||||
否 | 1小时38分钟57秒 | 2.05 GB/分钟 | 否 | 20% | |||||||
安全 | 2小时12分 | 1.52GB/分钟 | 是 | 28% | |||||||
否 | -35% | ||||||||||
18000 | 36000 | 是 | 2小时51分钟5秒 | 1.19 GB/分钟 | 快速 | 41分48秒 | 4.88GB/分钟 | 是 | 310% | ||
否 | 273% | ||||||||||
常规 | 54分43秒 | 3.70GB/分钟 | 是 | 211% | |||||||
否 | 1小时38分钟33秒 | 1.31 GB/分钟 | 否 | 182% | |||||||
安全 | 1小时21分 | 2.47GB/分钟 | 是 | 108% | |||||||
否 | 89% | ||||||||||
16核64 GB | 单表200 GB左右 | 4000 | 8000 | 是 | 2小时55分钟26秒 | 1.17 GB/分钟 | 快速 | 53分28秒 | 3.77GB/分钟 | 是 | 222% |
否 | 88% | ||||||||||
常规 | 1小时20分 | 2.5GB/分钟 | 是 | 114% | |||||||
否 | 1小时42分钟20秒 | 2.01 GB/分钟 | 否 | 24% | |||||||
安全 | 2小时12分 | 1.52GB/分钟 | 是 | 30% | |||||||
否 | -32% | ||||||||||
20000 | 40000 | 是 | 2小时53分钟49秒 | 1.19 GB/分钟 | 快速 | 41分1秒 | 4.88GB/分钟 | 是 | 310% | ||
否 | 138% | ||||||||||
常规 | 54分5秒 | 3.70GB/分钟 | 是 | 211% | |||||||
否 | 1小时40分钟35秒 | 2.05 GB/分钟 | 否 | 80% | |||||||
安全 | 1小时20分 | 2.5GB/分钟 | 是 | 110% | |||||||
否 | 22% |
恢复速度是指将数据恢复到原集群的速度,不包括恢复流程中创建临时节点和恢复增量日志步骤中所消耗的时间。
恢复速度与集群是否开启存储热备、集群主节点规格、
innodb_io_capacity
参数值大小、恢复速度配置以及待恢复的表数量有关。您可通过动态调整
innodb_io_capacity
和innodb_io_capacity_max
的值来调节恢复速度。参数值调整后,对库表恢复旧版流程恢复速度影响较小,对新版流程的恢复速度影响较大。恢复速度根据所占用的IOPS分为快速、常规和安全三种配置。所占用的IOPS越多,实际恢复速度越快,尤其在大表恢复场景中,速度提升尤为明显。
恢复速度配置对库表恢复旧版流程恢复速度影响较小,对新版流程的恢复速度影响较大。
由于2核8 GB的规格较小,IO波动较大,恢复速度配置可能并不具有明显的效果,因此未列出恢复速度的测试结果。
以上测试数据未包含表数量很多的情况,如果您指定恢复的表数量较多,也将会对恢复速度产生影响。
以上测试数据仅供参考,实际恢复速度受底层机器机型、网络等因素影响。