YashanDB 备份
本文内容来自 YashanDB 官网,原文内容请见 https://doc.yashandb.com/yashandb/23.3/zh/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86/%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D/SQL%E5%91%BD%E4%BB%A4%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D/%E5%A4%87%E4%BB%BD.html
操作说明
使用本方式执行备份时,要求数据库运行于 OPEN 状态且归档模式开启。
备份命令仅 SYS 超级用户或拥有 SYSDBA、SYSBACKUP 权限的用户才可执行,备份语法详细说明请参考开发手册BACKUP DATABASE。
若数据库在只读模式(主备模式下,备库进行备份)下备份,需要指定 FORCE 关键字。
备份会消耗一定的系统和数据库资源,请根据业务负载酌情选择备份窗口。
跟踪 $YASDB_DATA/log/run/run.log 运行日志,可查看备份恢复过程的详细日志。
可通过
select * from V$BACKUP_PROGRESS
语句实时查看备份进度。增量备份的多个备份集可采用不同的压缩算法。
增量备份的多个备份集必须采用一致的加密策略(都加密或都不加密,都加密时密码相同),但可以采用不同的加密算法。
共享集群部署中,同一时间只能在一个实例上执行备份操作,且备份期间如果任一实例宕机,该集群的备份操作将被中断。
备份
# 全量备份
示例(单机)
示例(共享集群)
本示例中,full 关键字表明当前为全量备份,format 关键字指定生成备份集的文件名称,tag 关键字指定备份集的标识为"yas_full_backup",parallelism 关键字指定备份任务以 3 个线程的并行度执行。
其中,备份共享集群部署的数据库时,format 关键字指定的内容决定了备份集放于实例所在服务器磁盘,或者放于共享存储。当指定的内容为 YFS 路径时,表示将备份至共享存储;为普通磁盘绝对路径时,表示备份至服务器磁盘。
# LEVEL 0 增量备份
示例(单机)
示例(共享集群)
本示例中,incremental level 0 关键字表明当前为零级增量备份,format 关键字指定生成备份集的文件名称。
增量备份有 LEVEL 0 和 LEVEL 1 两个级别,其中 LEVEL 0 作为后续所有 LEVEL 1 的上层基线,本质上也是一种全量备份,但是在备份概要文件中添加了与全量备份区分的物理标识。
其中,备份共享集群部署的数据库时,format 关键字可以指定为普通磁盘路径或者 YFS 路径。
# LEVEL 1 增量备份
示例(单机)
示例(共享集群)
本示例中,incremental level 1 关键字表明当前为一级增量备份,format 关键字指定生成备份集的文件名称。
增量备份只有 LEVEL 0 和 LEVEL 1 两个级别,其中 LEVEL 1 只备份自上次执行增量备份以后系统产生的增量数据(以上示例),相较于全量备份,增量备份数据量不大,能节省磁盘空间,恢复所需时间短。
YashanDB 支持 1000 次连续 LEVEL 1 增量备份,考虑到备份集的可维护性与存储资源使用,不建议连续多次 LEVEL 1 增量备份。
其中,备份共享集群部署的数据库时,format 关键字可以指定为普通磁盘路径或者 YFS 路径,但需注意的是,如果某次增量备份想与之前的备份指定不同的备份集存储(例如在 level 0 指定了 YFS 路径存储至共享存储,而 level 1 希望指定普通磁盘路径存储至实例所在磁盘),必须保证其与之前所有次备份的操作均是在同一个实例上发起,否则备份操作将失败。
# 基于 tag 的增量备份
# LEVEL 0
示例(单机)
本示例中,incremental level 0 关键字表明当前为零级增量备份,format 关键字指定生成备份集的文件名称为"/YashanDB/backup/base_incr_0_20211209193516",INDEPEND 关键字指定为独立的增量备份链,后续基于 tag 的增量备份必须为独立的增量备份链,指定的 tag 关键字是该备份集的唯一标识,后续可指定该 tag 作为基线做增量备份。
# LEVEL 1
示例(单机)
本示例中,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 增量备份的基线,即重新生成新的增量备份链。
# 备份压缩
示例(单机)
示例(共享集群)
本示例中,COMPRESSION 关键字表明对源数据进行压缩备份,ALGORITHM 关键字指定压缩算法,压缩算法可选 ZSTD 或者 LZ4。LOW 表示该种算法的压缩级别,有 LOW、MEDIUM、HIGH 三种可选项。压缩也可以单独指定 COMPRESSION 参数,其余参数可以省略,即会使用默认的压缩算法 ZSTD 和压缩级别 LOW。
# 备份加密
示例(单机)
示例(共享集群)
本示例中,ENCRYPTION 关键字表明对源数据进行加密备份,AES256 关键字表示加密算法,缺省值为 AES128 加密算法。其中加密算法可选 AES128、AES192、AES256 和 SM4。IDENTIFIED BY 关键字为指定加密备份集使用的密码。
常见问题
备份必须运行在归档模式下,否则会触发 YAS-02079 报错。
第一次增量备份必须为 LEVEL 0 备份,否则会触发 YAS-02507 错误。
如指定了备份文件保存目录,必须保证该目录为空,否则会触发 YAS-00318 错误。
确保备份文件保存目录的磁盘空间充足,否则会触发 YAS-00301 错误。
备份并行度取值范围为[0,8]整数,否则会触发 YAS-04204 错误。
超过 1000 次连续 LEVEL 1 增量备份,会触发 YAS-02508 错误。
主备在最大保护模式下,如果备库断连,主库事务无法提交,继续在主库执行备份会偶现备份卡住问题。将主库事务切换为最大可用模式即可继续执行备份。
备份不允许和表空间、redo 文件等数据文件的增删、resize 操作并发,需要等待任一操作完成之后才可执行。
版权声明: 本文为 InfoQ 作者【YashanDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/eea78d81ce291c21654b36d12】。文章转载请联系作者。
评论