当发生部分表的误操作时,可进行库表恢复,将误操作的某张表或某些表恢复到原集群。
库表恢复分为按时间点恢复和按备份集(快照)恢复,两者的区别在于要恢复至的时间点是否是备份集的时间点。如果是备份集的时间点,则可选择按备份集(快照)恢复更方便。如果要恢复至的时间不是已有的备份集的时间点,则只能选择按时间点恢复。
整体流程
无论是按时间点恢复还是按备份集(快照)恢复,两者的关键流程是一致的:先创建一个临时节点,并将某个时间点的数据恢复至该节点,然后再将恢复出的数据恢复到原集群。
库表恢复新版已于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及以上。
当集群的修订版本符合上述版本要求时,将自动进入库表恢复新版恢复流程。旧版和新版流程原理图如下:
建议在业务低峰期进行数据恢复。
预估时间
预估耗时如下,仅供参考:
步骤 | 预估耗时 |
创建一个临时节点,并将备份集中的数据恢复至该节点 | 约3~10分钟 |
恢复Redo日志增量数据 说明 仅按时间点恢复的方式需要恢复该类数据。耗时和需要应用的Redo日志大小相关。 | 1.5 GB/分钟 |
将数据恢复至原集群 | 预估耗时请参见表1 库表恢复速度测试数据参考表。 |
如果待恢复的数据量达到TB级别,执行库表恢复操作可能耗时较长。如果想要快速恢复该数据,可使用备份集全量恢复,一般耗时几分钟。具体操作请参见全量恢复方式1:从备份集恢复。
库表恢复速度测试数据参考如下表,该表的恢复速度仅指将数据恢复到原集群的速度。
表1 库表恢复速度测试数据参考表
CPU和内存(独享) | 测试数据 | innodb_io_capacity | innodb_io_capacity_max | 是否开启存储热备 | 旧版流程恢复耗时 | 新版流程恢复耗时 | 旧版流程恢复速度 | 新版流程恢复速度 | 新版较旧版恢复速度提升 |
2核8 GB | 单表 224.06 GB | 4000 | 8000 | 是 | 3小时38分钟25秒 | 1小时43分钟36秒 | 1.03 GB/分钟 | 2.16 GB/分钟 | 111% |
否 | 2小时23分钟0秒 | 1.57 GB/分钟 | 38% | ||||||
4核16 GB | 单表 208.83 GB | 4000 | 8000 | 是 | 3小时3分钟31秒 | 1小时36分钟41秒 | 1.14 GB/分钟 | 2.16 GB/分钟 | 89% |
否 | 1小时45分钟53秒 | 1.97 GB/分钟 | 10 % | ||||||
8000 | 16000 | 是 | 3小时3分钟15秒 | 1小时3分钟49秒 | 1.14 GB/分钟 | 3.27 GB/分钟 | 187 % | ||
否 | 1小时45分钟53秒 | 1.97 GB/分钟 | 66 % | ||||||
8核32 GB | 单表 202.97 GB | 4000 | 8000 | 是 | 2小时50分钟56秒 | 1小时28分钟26秒 | 1.19 GB/分钟 | 2.30 GB/分钟 | 93% |
否 | 1小时38分钟57秒 | 2.05 GB/分钟 | 12% | ||||||
18000 | 36000 | 是 | 2小时51分钟5秒 | 42分钟39秒 | 1.19 GB/分钟 | 4.76 GB/分钟 | 301% | ||
否 | 1小时38分钟33秒 | 1.31 GB/分钟 | 131% | ||||||
16核64 GB | 单表 206.01 GB | 4000 | 8000 | 是 | 2小时55分钟26秒 | 1小时31分钟14秒 | 1.17 GB/分钟 | 2.26 GB/分钟 | 93% |
否 | 1小时42分钟20秒 | 2.01 GB/分钟 | 12% | ||||||
20000 | 40000 | 是 | 2小时53分钟49秒 | 1小时0分钟9秒 | 1.19 GB/分钟 | 3.42 GB/分钟 | 189% | ||
否 | 1小时40分钟35秒 | 2.05 GB/分钟 | 67% |
库表恢复速度与集群是否开启存储热备、集群主节点规格、
innodb_io_capacity
参数值大小以及待恢复的表数量有关。以上测试数据未包含表数量很多的情况,如果用户指定恢复的表数量较多,也将会对恢复速度产生影响。
您可通过动态调整
innodb_io_capacity
和innodb_io_capacity_max
的值来调节恢复速度。参数值调整后,对库表恢复旧版流程恢复速度影响较小,对新版流程的恢复速度影响较大。以上测试数据仅供参考,实际恢复速度受底层机器机型、网络等因素影响。