#备份

通过SQL语句执行备份操作适用于单机部署、共享集群部署的数据库。根据备份的对象不同,可分为:

  • 备份数据库:执行BACKUP DATABASE语句对整个数据库进行备份,通过DBA_BACKUP_SET视图可以查询生成的数据库备份集信息。

  • 备份归档日志:执行BACKUP ARCHIVELOG语句对数据库的归档日志文件进行备份,通过DBA_ARCHIVE_BACKUPSET视图可以查询生成的归档日志备份集信息。

备份会消耗一定的系统和数据库资源,请根据业务负载酌情选择备份窗口。当待备份对象的数据量大或希望提升备份效率时,可适当增大并发度,并发度默认为2。

备份过程中,可以通过V$BACKUP_PROGRESS视图实时查看备份进度,以及通过$YASDB_DATA/log/run/run.log运行日志查看备份过程的详细日志。

# 备份数据库

# 操作说明

  • BACKUP DATABASE语句仅SYS超级用户或拥有SYSDBA、SYSBACKUP权限的用户才可执行。

  • 备份数据库不允许和表空间、redo文件等数据文件的增删、resize操作并发。在备库执行备份操作时还会阻塞备库回放表空间、数据文件操作相关的redo,此时会导致主备的日志差距增大,需等待备库的备份操作完成后备库才会正常回放主库redo。

  • 若在数据库只读模式或异常状态下执行全量备份,可以指定FORCE关键字,但强制备份不会记录系统表。

  • 主备在最大保护模式下,如果备库断连,主库事务无法提交,继续在主库执行备份会偶现备份卡住问题。将主库事务切换为最大可用模式即可继续执行备份。

  • 共享集群部署中,同一时间只能在一个实例上执行备份操作,且备份期间如果任一实例宕机,该集群的备份操作将被中断。

  • 备份前数据库环境准备:

    • 数据库实例处于OPEN阶段且已开启归档模式。

    • 如需自定义指定备份文件的保存路径,必须确保该路径为空且磁盘空间充足。通过FORMAT关键字即可自定义指定备份集的文件名称(含存放路径),省略则默认为$YASDB_DATA/backup/bak_{date}。在共享集群部署中,还可以指定为YFS路径将备份集文件存放至共享存储。

    • 如需备份加密对象,需先手动备份密钥钱包文件。

# 备份方式

# 全量备份

全量备份是指对某一时间点上的所有数据进行完全复制,不依赖之前的备份集。一个全量备份集可以恢复出所有数据。指定FULL关键字时表示执行全量备份。

示例(单机、共享集群部署)

BACKUP DATABASE FULL FORMAT '/data/backup/full_20211209191000' TAG 'yas_full_backup' PARALLELISM 3;

示例(共享集群部署)

BACKUP DATABASE FULL FORMAT '+DG0/backup/yfs_full_20211209191000' TAG 'yfs_yas_full_backup' PARALLELISM 3;

# 增量备份

增量备份是指首次执行基线备份(LEVEL 0),后续每次只需备份增量数据(LEVEL 1),备份LEVEL 1时可以基于LEVEL 0执行(即累积增量备份),也可以基于前序LEVEL 1执行(即差异增量备份)。

指定INCREMENTAL关键字表示执行增量备份。

增量备份需遵循如下使用规则:

  • 同一个增量备份链路中,连续LEVEL 1增量备份次数不得超过1000次。

  • 同一个增量备份链路中的多个备份集允许采用不同的压缩策略。

  • 同一个增量备份链路中的多个备份集必须采用一致的加密策略(都加密或都不加密,都加密时密码相同),但可以采用不同的加密算法。

  • 若某次增量备份规划的备份集存储路径与其前序备份集指定的不同,必须保证所有备份操作都在同一个实例上执行,否则备份操作将失败。

  • 恢复时需要依次恢复基线备份集、增量备份集。

# LEVEL 0

示例(单机、共享集群部署)

BACKUP DATABASE INCREMENTAL LEVEL 0  FORMAT '/data/backup/incr_0_20211209193516';

示例(共享集群部署)

BACKUP DATABASE INCREMENTAL LEVEL 0 FORMAT '+DG0/backup/incr_0_20211209193516';
# LEVEL 1

示例(单机、共享集群部署)

BACKUP DATABASE INCREMENTAL LEVEL 1 FORMAT '/data/backup/incr_1_20211209193740';

示例(共享集群部署)

BACKUP DATABASE INCREMENTAL LEVEL 1 FORMAT '+DG0/backup/incr_1_20211209193740';
# 基于TAG增量备份

在执行增量备份时,可以指定INDEPEND关键字可生成独立增量备份链路的备份集,并基于TAG关键字指定备份集的唯一标识。执行后续的LEVEL 1增量备份时,约束如下:

  • 如需指定该INDEPEND的LEVEL 0备份集作为基线,必须指定INDEPEND关键字。

  • 如需指定该链路中的LEVEL 1备份集作为基线,必须指定BASE ON关键字基于tag_name指定目标LEVEL 1备份集。

  • 仅适用于单机部署。

使用此类增量备份集恢复时,可直接基于tag_name指定目标备份集。

Note:

如果源库执行过RESTORE DATABASE重新建库,必须重建基于tag增量备份的基线,即重新生成新的增量备份链。

示例(单机部署)

-- LEVEL 0
BACKUP DATABASE INCREMENTAL LEVEL 0  FORMAT '/data/backup/base_incr_0_20211209193516' TAG 'base_incr_0' INDEPEND ;

-- LEVEL 1
BACKUP DATABASE INCREMENTAL LEVEL 1  FORMAT '/data/backup/base_incr_1_20211209193516' TAG 'base_incr_1' BASE ON 'base_incr_0' ;

# 压缩备份

执行数据库备份时,可以通过COMPRESSION关键字指定备份集压缩策略,可选项包括:

  • ALGORITHM关键字指定压缩算法:ZSTD或LZ4。

  • 压缩级别:HIGH、MEDIUM或LOW。

  • COMPRESSION后的选项都省略时,默认按ZSTD算法和LOW级别。

同一个增量备份链路中的多个备份集允许采用不同的压缩策略。

示例(单机、共享集群部署)

BACKUP DATABASE COMPRESSION ALGORITHM ZSTD LOW;

# 加密备份

执行数据库备份时,可以通过ENCRYPTION关键字指定备份集加密策略,选项包括:

  • 加密算法:AES128、AES192、AES256或SM4,省略时默认采用SM4。

  • IDENTIFIED BY关键字指定指定密钥。

同一个增量备份链路中的多个备份集必须采用一致的加密策略(都加密或都不加密,都加密时密码相同),但可以采用不同的加密算法。

示例(单机、共享集群部署)

BACKUP DATABASE ENCRYPTION AES256 IDENTIFIED BY yas2022;

# 备份归档日志

# 操作说明

  • 备份归档日志时指定备份范围可以精确到某一条具体日志,但实际会以文件为最小单位进行备份,即会备份目标日志所在的整个文件。

  • 备份前数据库环境准备:

    • 数据库实例处于OPEN阶段且已开启归档模式。

    • 如需自定义指定备份文件的保存路径,必须确保该路径为空且磁盘空间充足。通过FORMAT关键字即可自定义指定备份集的文件名称(含存放路径),省略则默认为$YASDB_DATA/backup/bak_{date}。在共享集群部署中,还可以指定为YFS路径将备份集文件存放至共享存储。

# 备份范围

# 全备份

全备份是指对当前所有归档日志进行完全复制,指定ALL关键字时表示执行全备份。

示例(单机、共享集群部署)

BACKUP ARCHIVELOG ALL FORMAT '/data/backup/all_20211209191000' TAG 'yas_allarchive_backup' PARALLELISM 3;

示例(共享集群部署)

BACKUP DATABASE FULL FORMAT '+DG0/backup/yfs_all_20211209191000' TAG 'yfs_yas_allarchive_backup' PARALLELISM 3;

# 基于SCN备份

基于SCN备份是指通过日志的SCN号指定此次需要备份的归档日志范围,具体目标范围可以使用如下关键字进行指定:

  • FROM SCN n:表示以n日志所在文件为起点直至最新。

  • SCN BETWEEN n AND m:表示备份范围为[n,m]区间日志所在归档日志文件。

  • UNTIL SCN n:表示以n日志所在文件为终点。

通过V$ARCHIVED_LOG视图可以查询当前已存在的归档日志文件的所有SCN信息,FIRST_CHANGE#字段表示第一条日志的SCN,NEXT_CHANGE#字段表示最后一条日志的SCN。

示例(单机、共享集群部署)

BACKUP ARCHIVELOG FROM SCN 505411989407080448 FORMAT '/data/backup/scn_20211209191000' TAG 'yas_scnarchive_backup' PARALLELISM 3;

示例(共享集群部署)

BACKUP ARCHIVELOG FROM SCN 505411989407080448 FORMAT '+DG0/backup/yfs_scn_20211209191000' TAG 'yfs_yas_scnarchive_backup' PARALLELISM 3;

# 基于SEQUENCE备份

基于SEQUENCE备份是指通过归档日志文件的序列号SEQUENCE指定此次需要备份的归档日志范围,语句中指定的文件必须存在。具体目标范围可以使用如下关键字进行指定:

  • FROM SEQUENCE x:表示以x文件为起点直至最新。

  • SEQUENCE BETWEEN x AND y:表示备份范围为[x,y]区间的所有归档日志文件。

  • UNTIL SEQUENCE x:表示以x文件为终点。

通过V$ARCHIVED_LOG视图可以获取当前已存在的归档日志文件的序列号(SEQUENCE#字段)以及其他详细信息。

示例(单机、共享集群部署)

BACKUP ARCHIVELOG UNTIL SEQUENCE 9 FORMAT '/data/backup/seq_20211209191000' TAG 'yas_seqarchive_backup' PARALLELISM 3;

示例(共享集群部署)

BACKUP ARCHIVELOG UNTIL SEQUENCE 9 FORMAT '+DG0/backup/yfs_seq_20211209191000' TAG 'yfs_yas_seqarchive_backup' PARALLELISM 3;

# 基于时间备份

基于时间备份是指通过时间指定此次需要备份的归档日志范围,实际会将指定时间点对应的某条日志所在的整个归档日志文件进行备份。

时间格式可以为:

  • '2021-12-09 19:35:55':此格式需要与当前会话的DATE_FORMAT参数所指定格式匹配。

  • TO_DATE('2021-12-09 19:35:55','yyyy-mm-dd hh24:mi:ss'):使用TO_DATE函数转换。

  • TO_TIMESTAMP('2021-12-09 19:35:55','yyyy-mm-dd hh24:mi:ss'):使用TO_TIMESTAMP函数转换。

具体目标范围可以使用如下关键字进行指定:

  • FROM TIME t:表示以t时刻起的第1条日志所在文件为起点直至最新。

  • TIME BETWEEN t1 AND t2:表示备份范围为[t1,t2]期间的所有日志记录所在归档日志文件。

  • UNTIL TIME t:表示以t时刻最后1条日志所在文件为终点。

最早默认不早于当前环境的安装时间,最晚可以设置为未来时间但实际备份的内容截止于最大归档日志文件序列号所对应文件中的最后一条日志的SCN所对应的时间。

示例(单机、共享集群部署)

BACKUP ARCHIVELOG UNTIL TIME TO_DATE('2024-10-28 08:14:01','yyyy-mm-dd hh24:mi:ss') FORMAT '/data/backup/time_20211209191000' TAG 'yas_timearchive_backup' PARALLELISM 3;

示例(共享集群部署)

BACKUP ARCHIVELOG UNTIL TIME TO_DATE('2024-10-28 08:14:01','yyyy-mm-dd hh24:mi:ss') FORMAT '+DG0/backup/yfs_time_20211209191000' TAG 'yfs_yas_timearchive_backup' PARALLELISM 3;

# 压缩备份

执行归档备份时,可以通过COMPRESSION关键字指定备份集压缩策略,可选项包括:

  • ALGORITHM关键字指定压缩算法:ZSTD或LZ4。

  • 压缩级别:HIGH、MEDIUM或LOW。

  • COMPRESSION后的选项都省略时,默认按ZSTD算法和LOW级别。

示例(单机、共享集群部署)

BACKUP ARCHIVELOG ALL COMPRESSION;

# 加密备份

执行归档备份时,可以通过ENCRYPTION关键字指定备份集加密策略,选项包括:

  • 加密算法:AES128、AES192、AES256或SM4,省略时默认采用SM4。

  • IDENTIFIED BY关键字指定指定密钥。

示例(单机、共享集群部署)

BACKUP ARCHIVELOG ALL ENCRYPTION IDENTIFIED BY 12345;
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流