#备份
# 备份
使用本方式执行备份时,要求数据库运行于OPEN状态且归档模式开启。
# 全量备份
示例
BACKUP DATABASE FULL FORMAT '/YashanDB/backup/full_20211209191000' TAG 'yas_full_backup' PARALLELISM 3;
本示例中,full关键字表明当前为全量备份,format关键字指定生成备份集的文件名称为"/YashanDB/backup/full_20211209191000",tag关键字指定备份集的标识为"yas_full_backup",parallelism关键字指定备份任务以3个线程的并行度执行。
# 增量备份
# LEVEL 0 增量备份
示例
BACKUP DATABASE INCREMENTAL LEVEL 0 FORMAT '/YashanDB/backup/incr_0_20211209193516';
本示例中,incremental level 0 关键字表明当前为零级增量备份,format关键字指定生成备份集的文件名称为"/YashanDB/backup/incr_0_20211209193516"。
增量备份有LEVEL 0和LEVEL 1两个级别,其中LEVEL 0作为后续所有LEVEL 1的上层基线,本质上也是一种全量备份,但是在备份概要文件中添加了与全量备份区分的物理标识。
# LEVEL 1 增量备份
示例
BACKUP DATABASE INCREMENTAL LEVEL 1 FORMAT '/YashanDB/backup/incr_1_20211209193740';
本示例中,incremental level 1 关键字表明当前为一级增量备份,format关键字指定生成备份集的文件名称为"/YashanDB/backup/incr_1_20211209193740"。
增量备份只有LEVEL 0和LEVEL 1两个级别,其中LEVEL 1只备份自上次执行增量备份以后系统产生的增量数据(以上示例),相较于全量备份,增量备份数据量不大,能节省磁盘空间,恢复所需时间短。
YashanDB支持1000次连续LEVEL 1增量备份,考虑到备份集的可维护性与存储资源使用,不建议连续多次LEVEL 1增量备份。
# 基于tag的增量备份
# LEVEL 0
示例
BACKUP DATABASE INCREMENTAL LEVEL 0 FORMAT '/YashanDB/backup/base_incr_0_20211209193516' TAG 'base_incr_0' INDEPEND ;
本示例中,incremental level 0 关键字表明当前为零级增量备份,format关键字指定生成备份集的文件名称为"/YashanDB/backup/base_incr_0_20211209193516",INDEPEND关键字指定为独立的增量备份链,后续基于tag的增量备份必须为独立的增量备份链,指定的tag关键字是该备份集的唯一标识,后续可指定该tag作为基线做增量备份。
# LEVEL 1
示例
BACKUP DATABASE INCREMENTAL LEVEL 1 FORMAT '/YashanDB/backup/base_incr_1_20211209193516' TAG 'base_incr_1' BASE ON 'base_incr_0' ;
本示例中,incremental level 1 关键字表明当前为一级增量备份,format关键字指定生成备份集的文件名称为"/YashanDB/backup/base_incr_1_20211209193516",指定的tag关键字是该备份集的唯一标识,后续可指定该tag作为基线做增量备份。BASE ON 可以指定独立增量备份集的tag作为基线,在该基线的基础上做增量备份。实际表现与普通增量备份一致,仅仅是通过指定基线tag来生成不同的增量备份链。
Note:
若指定的基线为level 0,其备份集生成时必须指定INDEPEND关键字。 若指定的基线为level 1备份集,该备份集也必须是指定BASE ON关键字生成的。 如果源库执行过RESTORE DATABASE 重新建库,必须重建基于tag增量备份的基线,即重新生成新的增量备份链。
# 备份压缩
示例
BACKUP DATABASE COMPRESSION ALGORITHM ZSTD LOW FORMAT '/YashanDB/backup/full_compress' TAG 'yas_full_compress';
本示例中,COMPRESSION关键字表明对源数据进行压缩备份,ALGORITHM关键字指定压缩算法,压缩算法可选ZSTD或者LZ4。LOW表示该种算法的压缩级别,有LOW、MEDIUM、HIGH 三种可选项。压缩也可以单独指定COMPRESSION参数,其余参数可以省略,即会使用默认的压缩算法ZSTD和压缩级别LOW。
# 备份加密
示例
BACKUP DATABASE ENCRYPTION AES256 IDENTIFIED BY yas2022 FORMAT '/YashanDB/backup/full_encryption' TAG 'yas_full_encryption';
本示例中,ENCRYPTION关键字表明对源数据进行加密备份,AES256关键字表示加密算法,缺省值为AES128加密算法。其中加密算法可选AES128、AES192、AES256和SM4。IDENTIFIED BY关键字为指定加密备份集使用的密码。
# 说明
- 若数据库在只读模式(主备模式下,备机进行备份)下备份,需要指定FORCE关键字。
- 备份语法详细说明请参考开发手册BACKUP DATABASE。
- 备份会消耗一定的系统和数据库资源,请根据业务负载酌情选择备份窗口。
- 跟踪$YASDB_DATA/log/run/run.log运行日志,可查看备份恢复过程的详细日志。
- 可通过select * from V$BACKUP_PROGRESS 语句实时查看备份进度。
- 增量备份的多个备份集可采用不同的压缩算法。
- 增量备份的多个备份集必须采用一致的加密策略(都加密或都不加密,都加密时密码相同),但可以采用不同的加密算法。
# 常见问题
- 备份必须运行在归档模式下,否则会触发 YAS-02079 报错。
- 第一次增量备份必须为LEVEL 0备份,否则会触发 YAS-02507 错误。
- 如指定了备份文件保存目录,必须保证该目录为空,否则会触发 YAS-00318 错误。
- 确保备份文件保存目录的磁盘空间充足,否则会触发 YAS-00301 错误。
- 备份并行度只能在
[0-8]范围内选择,否则会触发 YAS-04204 错误。 - 超过1000次连续LEVEL 1增量备份,会触发 YAS-02508 错误。
- 主备在最大保护模式下,如果备机断连,主机事务无法提交,继续在主机端执行备份会偶现备份卡住问题。将主机事务切换为最大可用模式即可继续执行备份。