备份和恢复
RTO和RPO
- RTO(Recovery Time Objective),是指系统灾难发生后,从宕机到系统恢复之间的时间;
- RPO(Recovery Point Objective),是指数据能够恢复到发生故障前的哪个时间节点。

备份方式
- 全量备份:备份整个数据库或文件
- 增量备份:备份新增的数据
- 差异备份:备份自**上次备份(可以是全备也可以是增备)**以来新增的数据
- 累积备份:备份自上次全量(level 0)备份以来发生变化的数据。备份集占用空间相对大,恢复时间相对短

使用SQL命令
backup(备份)
全量备份
BACKUP DATABASE FULL FORMAT
'/backup/full' TAG
'full_01' PARALLELISM 3;
- parallelism:指定多线程备份的并行度,取值范围[1,8],默认是2。
level 0级增量备份
BACKUP DATABASE INCREMENTAL LEVEL 0 FORMAT
'/backup/incr_0_001';
- level 0:表明当前为0级增量备份
- incremental:代表备份方式是增量备份
Level 1 差异增量备份
BACKUP DATABASE INCREMENTAL LEVEL 1 FORMAT
'/backup/incr_1_1_001';
- level 1:表明当前为一级增量备份

Level 1 累积增量备份
BACKUP DATABASE INCREMENTAL LEVEL 1 CUMULATIVE
FORMAT '/backup/incr_1_2_001';
- cumulative:表示增量备份方式为累积增量备份

压缩备份
BACKUP DATABASE COMPRESSION ALGORITHM ZSTD LOW FORMAT '/backup/full_compress';
- compression:代表压缩备份集,默认是按ZSTD算法和LOW级别压缩备份数据。
- algorithm:指定压缩算法
- ZSTD
- LZ4
- low:代表压缩级别为low
- HIGH: 表示最高的压缩率(最低的压缩速度)
- MEDIUM
- LOW: 表示最低的压缩率(最高的压缩速度)
删除备份
# 通过别名tag删除
BACKUP DATABASE DELETE BACKUPSET TAG 'full_01';
# 通过文件名删除
BACKUP DATABASE DELETE BACKUPSET PATH '/backup/incr_1_2_001';
相关视图
select type,increment_level,path,tag,output_bytes/1024/1024 output_mb from dba_backup_set;
restore(恢复)
数据库需要启动到nomount状态
全量恢复
RESTORE DATABASE FROM '/backup/full';
-- 如果备份集是加密生成的备份集,在恢复时还需要指定解密密码。
RESTORE DATABASE DECRYPTION 12356 FROM '/backup/full';
RECOVER DATABASE;
ALTER DATABASE OPEN;
指定时间点恢复
不完全恢复
-- 从level 0增量备份集中还原数据文件
RESTORE DATABASE FROM '/backup/incr_0_001' PARALLELISM 6;
-- 恢复日志
RECOVER DATABASE UNTIL TIME TO_DATE('2024-07-18 17:18:55','yyyy-mm-dd hh24:mi:ss');
-- 指定SCN, SELECT CURRENT_SCN FROM V$DATABASE;
RECOVER DATABASE until SCN 258477020237086720;
ALTER DATABASE OPEN RESETLOGS;
- RESTORE: 指定NOREDO参数可加快恢复速度
- 执行RECOVER DATABASE完成恢复后不可再执行增量备份集恢复
yasrman 工具
yasrman是YashanDB配套的在线备份恢复工具。
catalog
yasrman使用catalog保存参数和备份集元信息,catalog 是一个文件夹,主要包含:
backup:备份集目录,用于存放指定存储到工具侧的备份集文件。catalog.meta:元数据文件,用于存放备份集位置、TAG等相关信息,为二进制文件。config.ini:配置文件,用于存放于备份恢复的语句配置信息。
初次使用yasrman时,必须先创建catalog
用法(yasrman -h)
Usage 1: yasrman -H | -V
-H show version and help
-V show version
Usage 2: yasrman {<logon>} {<option>}
<logon> is {<username>/<password>@<connect_identifier>}
<option> is { -c "SQL"} {-D catalogpath}
-c run only single backup command
-D specify the catalog path
示例
1.创建catalog
yasrman sys/sys@127.0.0.1:1688 -c 'create catalog' -D /data/yashan_backup/catalog
2.配置config.ini文件
将所配置的内容持久化到catalog的config.ini文件。
配置参数命令优先级:backup或restore命令指定的参数 > configure命令配置的参数 > 默认参数。
# 将SECTION_SIZE参数值覆盖config.ini文件的默认值
yasrman sys/sys@127.0.0.1:1688 -c 'configure section size 128M' -D /data/yashan_backup/catalog
# 指定CLEAR时,恢复会默认值
yasrman sys/sys@127.0.0.1:1688 -c 'configure section size clear' -D /data/yashan_backup/catalog
查看配置
# 列出config.ini中已经配置的备份参数
yasrman sys/sys@127.0.0.1:1688 -c 'show all' -D /data/yashan_backup/catalog
全量备份
yasrman sys/sys@127.0.0.1:1688
-c "BACKUP DATABASE TAG 'full_backup' FULL FORMAT 'full_001' PARALLELISM 3 DEST SERVER"
-D /data/yashan_backup/catalog
- "sys/sys@127.0.0.1:1688"是连接分布式部署中的CN节点或单机部署中的主库的用户名、密码和地址。
- full关键字表明当前为全量备份。
- format关键字指定生成备份集的文件名称为"$YASDB_DATA/backup/full_001"。由于分布式备份是对所有节点的备份,每个节点(除了备节点)都会生成各自的备份集,因此format建议用相对路径,使备份集保存在各节点的"$YASDB_DATA/backup"目录下;如使用绝对路径需保证所有节点不在同一个服务器,否则可能会报文件已存在的错误。
- tag关键字指定备份集的标识为"full_backup"。
- parallelism关键字指定备份任务以3个线程的并行度执行。
- -D指定catalog所在文件路径。
- DEST关键字指定备份集备份在服务器端还是工具端,server即为指定备份在服务器端,client指定备份在工具端,缺省为server。分布式备份不可指定为client。
查询备份集信息
# 显示所有的备份集信息
yasrman sys/sys@127.0.0.1:1688
-c "LIST BACKUP"
-D /data/yashan_backup/catalog
删除备份
yasrman sys/sys@127.0.0.1:1688
-c "DELETE BACKUPSET TAG 'full_backup'"
-D /data/yashan_backup/catalog
附录
YCA官方报名链接:https://www.yashandb.com/YCA_courses
参考文档
https://doc.yashandb.com/yashandb/23.2/zh/%E5%B7%A5%E5%85%B7%E6%89%8B%E5%86%8C/yasrman/00yasrman.html
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




