#备份

# 操作说明

  • 分布式备份,只能在主库上执行备份,备份集会生成在主库节点,如果发生了主备切换,建议重新执行LEVEL 0的增量备份,否则恢复增量备份集的时候,会报找不到备份集的错误。
  • 备份语法详细说明请参考工具手册yasrman
  • 备份会消耗一定的系统和数据库资源,请根据业务负载酌情选择备份窗口。
  • 跟踪各个节点的$YASDB_DATA/log/run/run.log运行日志,可查看该节点备份恢复过程的详细日志。
  • 增量备份的多个备份集可采用不同的压缩算法。
  • 增量备份的多个备份集必须采用一致的加密策略(都加密或都不加密,都加密时密码相同),但可以采用不同的加密算法。
  • 删除备份集如果中途失败,某些可能会残留备份数据,需要在分布式集群状态OPEN的状态下,重新执行删除。
  • 分布式生成备份集之后,若后续要使用该备份集做恢复,必须保证待恢复分布式集群和备份前的节点部署状态完全一致。该备份集生成时分布式集群的节点状态可使用yasrman工具LIST命令查看,详情请参考yasrman

# 备份

# 全量备份

示例

## 单机
$ yasrman sys/sys@127.0.0.1:1688 
-c "BACKUP DATABASE TAG 'full_backup' FULL FORMAT 'full_001' PARALLELISM 3 DEST SERVER" 
-D /home/yashan/catalog

## 分布式
$ yasrman sys/sys@127.0.0.1:1688 
-c "BACKUP CLUSTER TAG 'full_backup' FULL FORMAT 'full_001' PARALLELISM 3" 
-D /home/yashan/catalog
Copied!

对本示例中出现信息解释如下:

  • “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。

# 增量备份

# LEVEL 0增量备份

示例

## 单机
$ yasrman sys/password@127.0.0.1:1688 
-c "BACKUP DATABASE TAG 'incr_0_backup' INCREMENTAL LEVEL 0 FORMAT 'incr_0_002'" 
-D /home/yashan/catalog

## 分布式
$ yasrman sys/password@127.0.0.1:1688 
-c "BACKUP CLUSTER TAG 'incr_0_backup' INCREMENTAL LEVEL 0 FORMAT 'incr_0_002'" 
-D /home/yashan/catalog
Copied!

本示例中,incremental level 0关键字表明当前为零级增量备份,format关键字指定生成备份集的文件名称为“$YASDB_DATA/backup/incr_0_002”。

增量备份有LEVEL 0和LEVEL 1两个级别,其中LEVEL 0作为后续所有LEVEL 1的上层基线,本质上也是一种全量备份,但是在备份概要文件中添加了与全量备份区分的物理标识。

# LEVEL 1增量备份

示例

## 单机
$ yasrman sys/sys@127.0.0.1:1688 
-c "BACKUP DATABASE TAG 'incr_1_backup' INCREMENTAL LEVEL 1 FORMAT 'incr_1_002'" 
-D /home/yashan/catalog

## 分布式
$ yasrman sys/sys@127.0.0.1:1688 
-c "BACKUP CLUSTER TAG 'incr_1_backup' INCREMENTAL LEVEL 1 FORMAT 'incr_1_002'" 
-D /home/yashan/catalog
Copied!

本示例中,incremental level 1关键字表明当前为一级增量备份,format关键字指定生成备份集的文件名称为“$YASDB_DATA/backup/incr_1_002”。

增量备份只有LEVEL 0和LEVEL 1两个级别,其中LEVEL 1只备份自上次执行增量备份以后系统产生的增量数据(以上示例),相较于全量备份,增量备份数据量不大,能节省磁盘空间,恢复所需时间短。

YashanDB支持1000次连续LEVEL 1增量备份,考虑到备份集的可维护性与存储资源使用,不建议连续多次LEVEL 1增量备份。

在零级增量备份指定了DEST备份方向之后,后续依赖于该零级增量备份的一级增量备份都需指定和零级增量备份一致的备份方向,否则会导致备份集无法正常恢复。

# 备份压缩

示例

## 单机
$ yasrman sys/sys@127.0.0.1:1688 
-c "BACKUP DATABASE TAG 'full_compress' COMPRESSION ALGORITHM ZSTD LOW" 
-D /home/yashan/catalog

## 分布式
$ yasrman sys/sys@127.0.0.1:1688 
-c "BACKUP CLUSTER TAG 'full_compress' COMPRESSION ALGORITHM ZSTD LOW" 
-D /home/yashan/catalog
Copied!

本示例中,COMPRESSION关键字表明对源数据进行压缩备份,ALGORITHM关键字指定压缩算法,压缩算法可选ZSTD或LZ4。LOW表示该种算法的压缩级别,有LOW、MEDIUM、HIGH 三种可选项。压缩也可以单独指定COMPRESSION参数,其余参数可以省略,即会使用默认的压缩算法ZSTD和压缩级别LOW。FORMAT可以省略,默认会在"$YASDB_DATA/backup"下生成默认的备份集名称。

# 备份加密

示例

## 单机
$ yasrman sys/sys@127.0.0.1:1688 
-c "BACKUP DATABASE TAG 'full_encryption' ENCRYPTION AES256 IDENTIFIED BY yas2022" 
-D /home/yashan/catalog

## 分布式
$ yasrman sys/sys@127.0.0.1:1688 
-c "BACKUP CLUSTER TAG 'full_encryption' ENCRYPTION AES256 IDENTIFIED BY yas2022" 
-D /home/yashan/catalog
Copied!

本示例中,ENCRYPTION关键字表明对源数据进行加密备份,AES256关键字表示加密算法,缺省值为AES128加密算法。其中加密算法可选AES128、AES192、AES256和SM4。IDENTIFIED BY关键字为指定加密备份集使用的密码。

# 备份查询

## 显示指定TAG的备份集信息
$ yasrman sys/sys@127.0.0.1:1688 
-c "LIST BACKUP TAG 'full_encryption'" 
-D /home/yashan/catalog

## 显示所有的备份集信息
$ yasrman sys/sys@127.0.0.1:1688 
-c "LIST BACKUP" 
-D /home/yashan/catalog
Copied!

本示例中,将打印备份集的元信息,包括各节点的 地址、TAG名称以及备份集路径等。

# 备份删除

$ yasrman sys/sys@127.0.0.1:1688 
-c "DELETE BACKUPSET TAG 'full_encryption'" 
-D /home/yashan/catalog
Copied!

本示例中,将删除TAG为“full_encryption”的备份集,前提是目标主库为OPEN状态。

# 常见问题

  • 备份必须运行在归档模式下,否则会触发YAS-02079报错。

  • 第一次增量备份必须为LEVEL 0备份,否则会触发YAS-02507错误。

  • 如指定了备份文件保存目录,必须保证该目录为空,否则会触发YAS-00318错误。

  • 确保备份文件保存目录的磁盘空间充足,否则会触发YAS-00301错误。

  • 备份并行度取值范围为[0,8]整数,否则会触发YAS-04204错误。

  • 超过1000次连续LEVEL 1增量备份,会触发YAS-02508错误。

  • 备份不允许和表空间、redo文件等数据文件的增删、resize操作并发,需要等待任一操作完成之后才可执行。