#恢复
# 操作说明
- 执行恢复操作的数据库版本需与生成备份集的数据库版本完全一致。
- 恢复语法详细说明请参考工具手册yasrman。
- 分布式部署模式下,需要保证待恢复的集群部署状态与备份前节点部署状态一致,包括节点类型、节点监听IP、节点个数、节点的部署路径。该备份集生成时分布式集群的节点状态可使用yasrman工具LIST命令查看。
- 在对分布式集群执行恢复前,请使用yasboot工具清理环境并重启分布式节点到NOMOUNT状态,示例如下:
$ yasboot cluster clean -c yashan --restore --with-arch --force
- 若已开启yasom仲裁选主,需先关闭仲裁选主再进行恢复操作,待恢复完成后再按需还原对应配置。
# 全量恢复
示例
## 以默认2个并行度执行恢复
## 单机
$ yasrman sys/sys@127.0.0.1:1688
-c "RESTORE DATABASE FROM TAG 'incr_2'"
-D /home/yashan/catalog
## 分布式
$ yasrman sys/sys@127.0.0.1:1688
-c "RESTORE CLUSTER FROM TAG 'incr_2'"
-D /home/yashan/catalog
本示例执行全量恢复,属于完全恢复,其中redo回放和备库build等操作都集成在该命令内部。成功后CN/DN/MN所有节点都将处于OPEN状态。相比使用SQL命令的恢复操作,使用yasrman工具少执行了recover和open的语句操作。
恢复备份集的并发度默认设置为2,当备份集数据量大或希望提升恢复效率时,可酌情加大并发度,该值最大可设置为8。
如果备份集是加密生成的备份集,在恢复时还需要指定解密密码。
## 单机
$ yasrman sys/sys@127.0.0.1:1688
-c "RESTORE DATABASE FROM TAG 'full_encryption' DECRYPTION yas2022 "
-D /home/yashan/catalog
## 分布式
$ yasrman sys/sys@127.0.0.1:1688
-c "RESTORE CLUSTER FROM TAG 'full_encryption' DECRYPTION yas2022 "
-D /home/yashan/catalog
本示例中,在对加密的备份集恢复时需要指定DECRYPTION关键字,并指定与加密时一致的密码,才能成功解密和恢复。
# 常见问题
若$YASDB_DATA/dbfiles目录下存在数据库文件,执行恢复将触发YAS-00311错误。
恢复任务的并行度取值范围为[1,8]整数,否则将触发YAS-04204错误。
恢复时指定的catalog文件,必须和备份时指定的为同一个文件,否则会触发YAS-02519错误。
Note:
$YASDB_DATA/archive为存储归档文件的默认目录,若要执行PITR恢复操作,需保留该目录下的归档文件,以保证PITR恢复操作正常恢复。若要执行全量恢复且仅恢复备份集中的内容,则需要清空归档目录下的文件,否则执行RECOVER操作可能回放残留归档文件中的数据,导致实际恢复出的数据与备份集中的不一致。