其他备份恢复方法

本文将介绍使用UnvDB的两个插件ud_rman和ud_probackup来更灵活快捷地进行数据备份和恢复的方法

ud_rman

概述

ud_rman类似于oracle的rman备份策略,实现了全量、增量、归档的层级的备份,可以很灵活的管理unvdb数据库的备份,ud_rman是一款优秀的备份恢复插件,使用简单,一个命令即可完成备份和恢复,并支持在线全备,增量备份,归档备份。支持备份压缩,通过gzip工具实现页内压缩,也可以自动备份维护,自动删除过期的WAL备份文件。支持备份验证,并支持基于PITR的配置文件生成器。

修改配置文件


[root@ecs-221b-0002 ]# vim unvdbsvr.conf

修改归档配置项

archive_mode=on
archive_command='DATE=`date +%Y%m%d`; DIR="/home/xxx/ud_rman_backup/walbackup/"; (test -d $DIR || mkdir -p $DIR) && cp %p $DIR/%f'

重启 unvdb 数据库

ud_rman的使用参数

[root@ecs-221b-0002 ]# ud_rman --help
ud_rman manage backup/recovery of UNVDB database.

Usage:
  ud_rman OPTION init
  ud_rman OPTION backup
  ud_rman OPTION restore
  ud_rman OPTION show [DATE]
  ud_rman OPTION show detail [DATE]
  ud_rman OPTION validate [DATE]
  ud_rman OPTION delete DATE
  ud_rman OPTION purge

Common Options:
  -D, --uddata=PATH         location of the database storage area
  -A, --arclog-path=PATH    location of archive WAL storage area
  -S, --srvlog-path=PATH    location of server log storage area
  -B, --backup-path=PATH    location of the backup storage area
  -G, --udconf-path=PATH    location of the configuration storage area
  -c, --check               show what would have been done
  -v, --verbose             show what detail messages
  -P, --progress            show progress of processed files

Backup options:
  -b, --backup-mode=MODE    full, incremental, or archive
  -s, --with-serverlog      also backup server log files
  -Z, --compress-data       compress data backup with zlib
  -C, --smooth-checkpoint   do smooth checkpoint before backup
  -F, --full-backup-on-error   switch to full backup mode
                               if ud_rman cannot find validate full backup
                               on current timeline
      NOTE: this option is only used in --backup-mode=incremental or archive.
  --keep-data-generations=NUM keep NUM generations of full data backup
  --keep-data-days=NUM        keep enough data backup to recover to N days ago
  --keep-arclog-files=NUM   keep NUM of archived WAL
  --keep-arclog-days=DAY    keep archived WAL modified in DAY days
  --keep-srvlog-files=NUM   keep NUM of serverlogs
  --keep-srvlog-days=DAY    keep serverlog modified in DAY days
  --standby-host=HOSTNAME   standby host when taking backup from standby
  --standby-port=PORT       standby port when taking backup from standby

Restore options:
  --recovery-target-time    time stamp up to which recovery will proceed
  --recovery-target-xid     transaction ID up to which recovery will proceed
  --recovery-target-inclusive whether we stop just after the recovery target
  --recovery-target-timeline  recovering into a particular timeline
  --recovery-target-action    action the server should take once the recovery target is reached
  --hard-copy                 copying archivelog not symbolic link

Catalog options:
  -a, --show-all            show deleted backup too

Delete options:
  -f, --force               forcibly delete backup older than given DATE

Connection options:
  -d, --dbname=DBNAME       database to connect
  -h, --host=HOSTNAME       database server host or socket directory
  -p, --port=PORT           database server port
  -U, --username=USERNAME   user name to connect as
  -w, --no-password         never prompt for password
  -W, --password            force password prompt

Generic options:
  -q, --quiet               don't show any INFO or DEBUG messages
  --debug                   show DEBUG messages
  --help                    show this help, then exit
  --version                 output version information, then exit

Usage: |选项|功能| |—-|—-| |init|初始化备份目录| |backup|在线备份| |restore|恢复| |show|查看备份历史| |validate|验证备份| |delete|删除备份文件| |purge|从备份目录中删除已删除备份| Common Options: |选项|解释| |—-|—-| |-D, –uddata=PATH|数据库存储区域的路径位置| |-A, –arclog-path=PATH|存档存储区的路径位置| |-S, –srvlog-path=PATH|服务器日志存储区域的路径位置| |-c, –check|检查| |-v, –verbose|详细显示消息的详细信息| |-P, –progress|显示已处理文件的进度| Backup options: |选项|解释| |—-|—-| |-b, –backup-mode=full, incremental, or archive|备份模式=完全模式、增量模式或归档模式| |-s, –with-serverlog|使用serverlog,还可以备份服务器日志文件| |-Z, –compress-data|压缩数据使用zlib压缩数据备份| |-C, –smooth-checkpoint|在备份之前的平滑检查点| |-F, –full-backup-on-error|完全备份出错:切换到完全备份模式| |–keep-data-generations=NUM|保留完整数据备份的NUM代| |–keep-data-days=NUM|保留足够的数据备份以恢复到N天前| |–keep-arclog-files=NUM|保留归档文件的数量| |–keep-arclog-days=DAY|以天为单位修改存档的WAL| |–keep-srvlog-files=NUM|保留服务器日志数| |–keep-srvlog-days=DAY|在DAY中修改服务器日志| |–standby-host=HOSTNAME|从备用主机进行备份时备用主机的主机名| |–standby-port=PORT|从备用端口进行备份时的备用端口| Restore options: |选项|解释| |—-|—-| |–recovery-target-time, –uddata=PATH|恢复将继续的时间戳| |–recovery-target-xid|恢复事务ID目标| |–recovery-target-inclusive|恢复目标,包括是否在恢复后立即停止| |–recovery-target-timeline|恢复到特定时间线| |–hard-copy|硬拷贝复制| |-a, –show-all|显示全部也显示已删除的备份| |-f, –force|强制删除早于给定日期的备份|

Connection options: |选项|解释| |—-|—-| |-d, –dbname=DBNAME|要连接的数据库| |-h, –host=HOSTNAME|端口数据库服务器端口| |-U, –username=USERNAME|要连接的用户名| |–recovery-target-timeline|恢复到特定时间线| |-w, –no-password|无密码连接,从不提示输入密码| |-W, –password|密码连接,强制密码提示| Generic options: |选项|解释| |—-|—-| |-q, –quiet|不显示任何信息或调试消息| |–debug|调试显示调试消息| |–help|帮助显示此帮助,然后退出| |–version|版本输出版本信息,然后退出|

初始化备份目录

首先需要初始化一个backup catalog,目录将用于存放备份的文件,目录也会存放一些元数据,例如备份的配置文件,数据库的systemid,时间线文件历史
注意:在初始化的时候,要先确认环境变量是否设置正确

建立备份路径

[root@ecs-221b-0002 ]# mkdir /home/wangcj/ud_rman_backup/{fullbackup,walbackup,srvlog} -p

初始化备份路径

[root@ecs-221b-0002 ]#  ud_rman -B /home/wangcj/ud_rman_backup/fullbackup -S /home/wangcj/ud_rman_backup/srvlog -A /home/wangcj/ud_rman_backup/walbackup -D /data/soft/unvdb-data-36 init 

ud_rman的全量备份

开始备份:

[root@ecs-221b-0002 ]#  ud_rman backup --backup-mode=full --with-serverlog -A /home/wangcj/ud_rman_backup/walbackup -B /home/wangcj/ud_rman_backup/fullbackup -D /home/wangcj/unvdb-data-36 -d unvdb -U unvdb -h 127.0.0.1 -p 56789
INFO: copying database files
INFO: copying archived WAL files
INFO: copying server log files
INFO: backup complete
INFO: Please execute 'ud_rman validate' to verify the files are correctly copied.

ud_rman 备份集查看:

[root@ecs-221b-0002 ]#  ud_rman show -B /home/wangcj/ud_rman_backup/fullbackup
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2023-08-24 14:06:02  2023-08-24 14:06:04  FULL    52MB     1  DONE
2023-08-24 11:40:51  2023-08-24 11:40:53  FULL    52MB     1  OK

未校验备份集 Status 显示为 DONE,开始校验:

[root@ecs-221b-0002 ]#  ud_rman validate -B /home/wangcj/ud_rman_backup/fullbackup
INFO: validate: "2023-08-24 14:06:02" backup, archive log files and server log files by CRC
INFO: backup "2023-08-24 14:06:02" is valid
[root@ecs-221b-0002 ]#  ud_rman show -B /home/wangcj/ud_rman_backup/fullbackup
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2023-08-24 14:06:02  2023-08-24 14:06:04  FULL    52MB     1  OK
2023-08-24 11:40:51  2023-08-24 11:40:53  FULL    52MB     1  OK

ud_rman的增量备份

增量备份是基于文件系统的update time时间线,增量备份必须有个对应的全库备份

[root@ecs-221b-0002 ]#  ud_rman backup --backup-mode=incremental --with-serverlog -A /home/wangcj/ud_rman_backup/walbackup -B /home/wangcj/ud_rman_backup/fullbackup -D /home/wangcj/unvdb-data-36 -d unvdb -U unvdb -h 127.0.0.1 -p 56789
INFO: copying database files
INFO: copying archived WAL files
INFO: copying server log files
INFO: backup complete
INFO: Please execute 'ud_rman validate' to verify the files are correctly copied.

备份集查看:
[root@ecs-221b-0002 ]#  ud_rman show -B /home/wangcj/ud_rman_backup/fullbackup
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2023-08-24 14:45:28  2023-08-24 14:45:30  INCR    33MB     1  DONE
2023-08-24 14:06:02  2023-08-24 14:06:04  FULL    52MB     1  OK
2023-08-24 11:40:51  2023-08-24 11:40:53  FULL    52MB     1  OK

[root@ecs-221b-0002 ]#  ud_rman validate -B /home/wangcj/ud_rman_backup/fullbackup
INFO: validate: "2023-08-24 14:45:28" backup, archive log files and server log files by CRC
INFO: backup "2023-08-24 14:45:28" is valid

校验:

[root@ecs-221b-0002 ]#  ud_rman show -B /home/wangcj/ud_rman_backup/fullbackup
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2023-08-24 14:45:28  2023-08-24 14:45:30  INCR    33MB     1  OK
2023-08-24 14:06:02  2023-08-24 14:06:04  FULL    52MB     1  OK
2023-08-24 11:40:51  2023-08-24 11:40:53  FULL    52MB     1  OK

ud_rman 归档备份:

归档备份就是静态文件的拷贝

[root@ecs-221b-0002 ]# ud_rman backup --backup-mode=archive --progress --compress-data -A /home/wangcj/ud_rman_backup/walbackup -B /home/wangcj/ud_rman_backup/fullbackup -D /home/wangcj/unvdb-data-36 -d unvdb -U unvdb -h 127.0.0.1 -p 56789
INFO: copying archived WAL files
Processed 10 of 10 files, skipped 9
INFO: backup complete
INFO: Please execute 'ud_rman validate' to verify the files are correctly copied.
[root@ecs-221b-0002 ]# ud_rman validate -B /home/wangcj/ud_rman_backup/fullbackup
INFO: validate: "2023-08-24 15:00:45" archive log files by CRC
INFO: backup "2023-08-24 15:00:45" is valid
[root@ecs-221b-0002 ]# ud_rman show -B /home/wangcj/ud_rman_backup/fullbackup
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2023-08-24 15:00:45  2023-08-24 15:00:46  ARCH    16kB     1  OK
2023-08-24 14:45:28  2023-08-24 14:45:30  INCR    33MB     1  OK
2023-08-24 14:06:02  2023-08-24 14:06:04  FULL    52MB     1  OK
2023-08-24 11:40:51  2023-08-24 11:40:53  FULL    52MB     1  OK

删除备份集

强制删除比规定日期更旧的备份:

[root@ecs-221b-0002 ]# ud_rman delete -f '2023-08-24 12:00:00' -B /home/wangcj/ud_rman_backup/fullbackup
DETAIL: Any remaining incremental backups that are older than the oldest available full backup cannot be restored.
INFO: delete the backup with start time: "2023-08-24 11:40:51"

清除备份集:物理删除已从catalog删除的备份集,上面从备份集中删除的备份,备份集文件夹并没有一起删除。

[root@ecs-221b-0002 ]# ud_rman purge -B /home/wangcj/ud_rman_backup/fullbackup
INFO: DELETED backup "2023-08-24 11:40:51" is purged

查看是否删除:
ud_rman show -B /home/wangcj/ud_rman_backup/fullbackup
=====================================================================
 StartTime           EndTime              Mode    Size   TLI  Status 
=====================================================================
2023-08-24 15:00:45  2023-08-24 15:00:46  ARCH    16kB     1  OK
2023-08-24 14:45:28  2023-08-24 14:45:30  INCR    33MB     1  OK
2023-08-24 14:06:02  2023-08-24 14:06:04  FULL    52MB     1  OK

指定备份删除:

[root@ecs-221b-0002 ]# ud_rman delete '2023-08-24 12:00:00' -B /home/wangcj/ud_rman_backup/fullbackup
[root@ecs-221b-0002 ]# ud_rman purge -B /home/wangcj/ud_rman_backup/fullbackup

数据恢复

全量备份的恢复

[root@ecs-221b-0002 ]# ud_rman restore -B /home/wangcj/ud_rman_backup/fullbackup -D /home/wangcj/unvdb-data-36
--recovery-target-time "2023-08-24 14:06:04"

如果不指定 –recovery-target-time,将用最新数据恢复,恢复出来的数据库,部分文件(start.sh,stop.sh等)需要修改路径

ud_probackup

概述

ud_probackup是一个用于管理UnvDB数据库备份和恢复的工具,是基于ud_rman扩展而来,它旨在执行UnvDB实例的定期备份,能够在数据库发生故障时恢复服务器。

ud_probackup --help

ud_probackup - utility to manage backup/recovery of unvdb database.

  ud_probackup help [COMMAND]

  ud_probackup version

  ud_probackup init -B backup-path

  ud_probackup set-config -B backup-path --instance=instance_name
                 [-D uddata-path]
                 [--external-dirs=external-directories-paths]
                 [--log-level-console=log-level-console]
                 [--log-level-file=log-level-file]
                 [--log-format-file=log-format-file]
                 [--log-filename=log-filename]
                 [--error-log-filename=error-log-filename]
                 [--log-directory=log-directory]
                 [--log-rotation-size=log-rotation-size]
                 [--log-rotation-age=log-rotation-age]
                 [--retention-redundancy=retention-redundancy]
                 [--retention-window=retention-window]
                 [--wal-depth=wal-depth]
                 [--compress-algorithm=compress-algorithm]
                 [--compress-level=compress-level]
                 [--archive-timeout=timeout]
                 [-d dbname] [-h host] [-p port] [-U username]
                 [--remote-proto] [--remote-host]
                 [--remote-port] [--remote-path] [--remote-user]
                 [--ssh-options]
                 [--restore-command=cmdline] [--archive-host=destination]
                 [--archive-port=port] [--archive-user=username]
                 [--help]

  ud_probackup set-backup -B backup-path --instance=instance_name
                 -i backup-id [--ttl=interval] [--expire-time=timestamp]
                 [--note=text]
                 [--help]

  ud_probackup show-config -B backup-path --instance=instance_name
                 [--format=format]
                 [--help]

  ud_probackup backup -B backup-path -b backup-mode --instance=instance_name
                 [-D uddata-path] [-C]
                 [--stream [-S slot-name] [--temp-slot]]
                 [--backup-ud-log] [-j num-threads] [--progress]
                 [--no-validate] [--skip-block-validation]
                 [--external-dirs=external-directories-paths]
                 [--no-sync]
                 [--log-level-console=log-level-console]
                 [--log-level-file=log-level-file]
                 [--log-format-console=log-format-console]
                 [--log-format-file=log-format-file]
                 [--log-filename=log-filename]
                 [--error-log-filename=error-log-filename]
                 [--log-directory=log-directory]
                 [--log-rotation-size=log-rotation-size]
                 [--log-rotation-age=log-rotation-age] [--no-color]
                 [--delete-expired] [--delete-wal] [--merge-expired]
                 [--retention-redundancy=retention-redundancy]
                 [--retention-window=retention-window]
                 [--wal-depth=wal-depth]
                 [--compress]
                 [--compress-algorithm=compress-algorithm]
                 [--compress-level=compress-level]
                 [--archive-timeout=archive-timeout]
                 [-d dbname] [-h host] [-p port] [-U username]
                 [-w --no-password] [-W --password]
                 [--remote-proto] [--remote-host]
                 [--remote-port] [--remote-path] [--remote-user]
                 [--ssh-options]
                 [--ttl=interval] [--expire-time=timestamp] [--note=text]
                 [--help]

  ud_probackup restore -B backup-path --instance=instance_name
                 [-D uddata-path] [-i backup-id] [-j num-threads]
                 [--recovery-target-time=time|--recovery-target-xid=xid
                  |--recovery-target-lsn=lsn [--recovery-target-inclusive=boolean]]
                 [--recovery-target-timeline=timeline]
                 [--recovery-target=immediate|latest]
                 [--recovery-target-name=target-name]
                 [--recovery-target-action=pause|promote|shutdown]
                 [--restore-command=cmdline]
                 [-R | --restore-as-replica] [--force]
                 [--primary-conninfo=primary_conninfo]
                 [-S | --primary-slot-name=slotname]
                 [--no-validate] [--skip-block-validation]
                 [-T OLDDIR=NEWDIR] [--progress]
                 [--external-mapping=OLDDIR=NEWDIR]
                 [--skip-external-dirs] [--no-sync]
                 [-X WALDIR | --waldir=WALDIR]
                 [-I | --incremental-mode=none|checksum|lsn]
                 [--db-include | --db-exclude]
                 [--remote-proto] [--remote-host]
                 [--remote-port] [--remote-path] [--remote-user]
                 [--ssh-options]
                 [--archive-host=hostname]
                 [--archive-port=port] [--archive-user=username]
                 [--help]

  ud_probackup validate -B backup-path [--instance=instance_name]
                 [-i backup-id] [--progress] [-j num-threads]
                 [--recovery-target-time=time|--recovery-target-xid=xid
                  |--recovery-target-lsn=lsn [--recovery-target-inclusive=boolean]]
                 [--recovery-target-timeline=timeline]
                 [--recovery-target-name=target-name]
                 [--skip-block-validation]
                 [--help]

  ud_probackup checkdb [-B backup-path] [--instance=instance_name]
                 [-D uddata-path] [--progress] [-j num-threads]
                 [--amcheck] [--skip-block-validation]
                 [--heapallindexed] [--checkunique]
                 [--help]

  ud_probackup show -B backup-path
                 [--instance=instance_name [-i backup-id]]
                 [--format=format] [--archive]
                 [--no-color] [--help]

  ud_probackup delete -B backup-path --instance=instance_name
                 [-j num-threads] [--progress]
                 [--retention-redundancy=retention-redundancy]
                 [--retention-window=retention-window]
                 [--wal-depth=wal-depth]
                 [-i backup-id | --delete-expired | --merge-expired | --status=backup_status]
                 [--delete-wal]
                 [--dry-run] [--no-validate] [--no-sync]
                 [--help]

  ud_probackup merge -B backup-path --instance=instance_name
                 -i backup-id [--progress] [-j num-threads]
                 [--no-validate] [--no-sync]
                 [--help]

  ud_probackup add-instance -B backup-path -D uddata-path
                 --instance=instance_name
                 [--external-dirs=external-directories-paths]
                 [--remote-proto] [--remote-host]
                 [--remote-port] [--remote-path] [--remote-user]
                 [--ssh-options]
                 [--help]

  ud_probackup del-instance -B backup-path
                 --instance=instance_name
                 [--help]

  ud_probackup archive-push -B backup-path --instance=instance_name
                 --wal-file-name=wal-file-name
                 [--wal-file-path=wal-file-path]
                 [-j num-threads] [--batch-size=batch_size]
                 [--archive-timeout=timeout]
                 [--no-ready-rename] [--no-sync]
                 [--overwrite] [--compress]
                 [--compress-algorithm=compress-algorithm]
                 [--compress-level=compress-level]
                 [--remote-proto] [--remote-host]
                 [--remote-port] [--remote-path] [--remote-user]
                 [--ssh-options]
                 [--help]

  ud_probackup archive-get -B backup-path --instance=instance_name
                 --wal-file-path=wal-file-path
                 --wal-file-name=wal-file-name
                 [-j num-threads] [--batch-size=batch_size]
                 [--no-validate-wal]
                 [--remote-proto] [--remote-host]
                 [--remote-port] [--remote-path] [--remote-user]
                 [--ssh-options]
                 [--help]

  ud_probackup catchup  -b catchup-mode
                 --source-uddata=path_to_uddata_on_remote_server
                 --destination-uddata=path_to_local_dir
                 [--stream [-S slot-name] [--temp-slot | --perm-slot]]
                 [-j num-threads]
                 [-T OLDDIR=NEWDIR]
                 [--exclude-path=path_prefix]
                 [-d dbname] [-h host] [-p port] [-U username]
                 [-w --no-password] [-W --password]
                 [--remote-proto] [--remote-host]
                 [--remote-port] [--remote-path] [--remote-user]
                 [--ssh-options]
                 [--dry-run]
                 [--help]

修改配置文件

vim unvdbsvr.conf

修改归档配置项: 如果要在primary上配置存档,则存档模式必须设置为“on”或“always”。要在standby下执行存档,请将此参数设置为“always” 设置archive_命令参数,如下所示:

archive_mode=on
archive_command='ud_probackup archive-push -B /home/wangcj/backup_dir --instance instance_name1 --wal-file-path=%p --wal-file-name=%f'

重启 unvdb 数据库

初始化备份

建立备份路径

mkdir /home/wangcj/backup_dir

初始化备份路径

所谓初始化:就是创建一个备份目录;用于存放备份文件和归档日志文件 初始化备份目录,请运行以下命令:

ud_probackup init -B backup_dir
-- 示例
[root@ecs-221b-0002 unvdb-data-36]# ud_probackup init -B /home/wangcj/backup_dir
INFO: Backup catalog '/home/wangcj/backup_dir' successfully initialized

ud_probackup创建备份目录,其中包含以下子目录:

  • wal/ -wal文件目录。

  • backups/ -备份文件的目录。

备份目录初始化了;我们可以添加备份实例

增加备份实例,关联备份数据路径

ud_probackup可以在一个备份目录中存储多个数据库集群的备份。要设置所需的子目录,必须将备份实例添加到要备份的每个数据库群集的备份目录中。

要添加新的备份实例,请运行以下命令:

ud_probackup add-instance -B backup_dir -D data_dir --instance instance_name [remote_options]
-- 本地添加备份instance 示例
[root@ecs-221b-0002 unvdb-data-36]# ud_probackup add-instance -B /home/wangcj/backup_dir -D /home/wangcj/unvdb-data-36 --instance instance_name1
INFO: Instance 'instance_name1' successfully initialized
  • data_dir是要备份的群集的数据目录。要设置和使用ud_probackup,需要对此目录的写访问权限。

  • instance_name是将存储此群集的WAL和备份文件的子目录的名称。

  • remote_options是可选参数,仅当data_dir位于远程系统上时,才需要指定这些参数。 默认超时 300 秒,有可能会超出,可能需要配置

[root@ecs-221b-0002 unvdb-data-36]# ud_probackup set-config -B /home/wangcj/backup_dir --instance=instance_name1 --archive-timeout=9000

备份和恢复操作

全量备份

[root@ecs-221b-0002 unvdb-data-36]# ud_probackup backup -B /home/wangcj/backup_dir --instance instance_name1 -b FULL
INFO: Backup start, ud_probackup version: 22.5.12, instance: instance_name1, backup ID: RZXJVZ, backup mode: FULL, wal mode: ARCHIVE, remote: false, compress-algorithm: none, compress-level: 1
INFO: wait for ud_start_backup()
INFO: ud_probackup archive-push WAL file: 00000001000000000000000D, threads: 1/1, batch: 1/1, compression: none
......
INFO: Backup RZXJVZ data files are valid
INFO: Backup RZXJVZ resident size: 30MB
INFO: Backup RZXJVZ completed

查看备份:

[root@ecs-221b-0002 unvdb-data-36]# ud_probackup show -B /home/wangcj/backup_dir 
BACKUP INSTANCE 'instance_name1'
=======================================================================================================================================
 Instance        Version  ID      Recovery Time           Mode  WAL Mode  TLI   Time  Data   WAL  Zratio  Start LSN  Stop LSN   Status 
=======================================================================================================================================
 instance_name1  12       RZXJVZ  2023-08-25 12:45:37+08  FULL  ARCHIVE   1/0    13s  30MB  16MB    1.00  0/E000028  0/F0000B8  OK     

校验:

[root@ecs-221b-0002 unvdb-data-36]# ud_probackup validate backup -B /home/wangcj/backup_dir --instance instance_name1 -b FULL
INFO: Validate backups of the instance 'instance_name1'
INFO: Validating backup RZXJVZ
INFO: Backup RZXJVZ data files are valid
INFO: Backup RZXJVZ WAL segments are valid

增量备份

[root@ecs-221b-0002 unvdb-data-36]# ud_probackup backup -B /home/wangcj/backup_dir --instance instance_name1 -b page|delta|ptrack
INFO: wait for ud_start_backup()
INFO: Parent backup: RZXJVZ
INFO: ud_probackup archive-push WAL file: 000000010000000000000012, threads: 1/1, batch: 1/1, compression: none
INFO: ud_probackup archive-push completed successfully, pushed: 1, skipped: 0, time elapsed: 134ms
......
INFO: Backup RZXRPF data files are valid
INFO: Backup RZXRPF resident size: 7746kB
INFO: Backup RZXRPF completed

查看:
[root@ecs-221b-0002 unvdb-data-36]# ud_probackup show -B /home/wangcj/backup_dir 
BACKUP INSTANCE 'instance_name1'
===========================================================================================================================================
 Instance        Version  ID      Recovery Time           Mode  WAL Mode  TLI   Time    Data   WAL  Zratio  Start LSN   Stop LSN    Status 
===========================================================================================================================================
 instance_name1  12       RZXRPF  2023-08-25 15:34:30+08  PAGE  ARCHIVE   1/1     7s  7746kB  16MB    1.00  0/12000028  0/130000F0  OK     
 instance_name1  12       RZXJVZ  2023-08-25 12:45:37+08  FULL  ARCHIVE   1/0    13s    30MB  16MB    1.00  0/E000028   0/F0000B8   OK     

选项解释:

  • FULL — 创建一个完整备份,其中包含要恢复的集群的所有数据文件。

  • DELTA — 读取数据目录中的所有数据文件,并为自上次备份以来已更改的页面创建增量备份。

  • PAGE — 根据自上次完整或增量备份以来生成的 WAL 文件创建增量备份。仅从数据文件中读取更改的块。

  • PTRACK — 动态创建增量备份跟踪页面更改。

恢复

全量恢复

先关闭源数据库并备份原先的数据目录

[root@ecs-221b-0002 unvdb-data-36]# ud_ctl stop
waiting for server to shut down.... done
server stopped

[root@ecs-221b-0002 unvdb-data-36]# mv /home/wangcj/unvdb-data-36/ /home/wangcj/data_bak/

恢复:

[root@ecs-221b-0002 unvdb-data-36]# ud_probackup restore -B /home/wangcj/backup_dir --instance instance_name1 -D /home/wangcj/unvdb-data-36-restore
INFO: Validating parents for backup RZXRPF
INFO: Validating backup RZXJVZ
INFO: Backup RZXJVZ data files are valid

......
INFO: Restore incremental ratio (less is better): 100% (38MB/38MB)
INFO: Syncing restored files to disk
INFO: Restored backup files are synced, time elapsed: 7s
INFO: Restore of backup RZXRPF completed.

部分恢复

指定要恢复的数据库

ud_probackup restore -B backup_dir --instance instance_name --db-include=database_name #--db-include选项可以指定多次

要从恢复中排除一个或多个数据库,可以使用–db-exclude

ud_probackup restore -B backup_dir--instance instance_name--db-exclude=database_name #该--db-exclude选项可以指定多次

时间点 (PITR) 恢复

如果您在进行备份之前启用 了连续 WAL 归档,则可以使用 restore命令 的恢复目标选项将集群恢复到任意时间点(恢复目标)的状态。

要在准确时间恢复集群状态,可以使用–recovery-target-time

ud_probackup restore -B backup_dir --instance instance_name --recovery-target-time="2023-08-25 14:18:11+03"

要将集群状态恢复到特定的事务ID,可以使用以下–recovery-target-xid

ud_probackup restore -B backup_dir--instance instance_name --recovery-target-xid=687

要将集群状态恢复到特定 LSN,请使用 –recovery-target-lsn以下选项:

ud_probackup restore -B backup_dir--instance instance_name --recovery-target-lsn=16/B374D848

恢复出来的数据库,部分文件(start.sh,stop.sh 等)需要修改路径