openGauss学习笔记153 openGauss 数据库运维备份与恢复物理备份与恢复之gs_probackup

openGauss学习笔记-153 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_probackup153.1 背景信息153.2 前提条件153.3 限制说明153.4 命令说明153.5 参数说明153.6 备份流程153.7 故障处理

openGauss学习笔记-153 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_probackup

153.1 背景信息

gs_probackup是一个用于管理openGauss数据库备份和恢复的工具。它对openGauss实例进行定期备份,以便在数据库出现故障时能够恢复服务器。

  • 可用于备份单机数据库,也可对主机或者主节点数据库备机进行备份,为物理备份。

  • 可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump文件等。

  • 支持增量备份、定期备份和远程备份。

  • 可设置备份的留存策略。

153.2 前提条件

  • 可以正常连接openGauss数据库。

  • 若要使用PTRACK增量备份,需在postgresql.conf中手动添加参数“enable_cbm_tracking = on”。

  • 为了防止xlog在传输结束前被清理,请适当调高postgresql.conf文件中wal_keep_segments的值。

153.3 限制说明

  • 备份必须由运行数据库服务器的用户执行。

  • 备份和恢复的数据库服务器的主版本号必须相同。

  • 如果要通过ssh在远程模式下备份数据库,需要在本地和远程主机安装相同主版本的数据库,并通过ssh-copy-id remote_user@remote_host命令设置本地主机备份用户和远程主机数据库用户的无密码ssh连接。

  • 远程模式下只能执行add-instance、backup、restore子命令。

  • 使用restore子命令前,应先停止gaussdb进程。

  • 当存在用户自定义表空间时,备份的时候要加上 –external-dirs 参数,否则,该表空间不会被备份。

  • 当备份的规模比较大时,为了防止备份过程中timeout发生,请适当调整postgresql.conf文件的参数 session_timeout、wal_sender_timeout。并且在备份的命令行参数中适当调整参数–rw-timeout的值。

  • 恢复时,使用-T选项把备份中的外部目录重定向到新目录时,请同时指定参数–external-mapping。

  • 增量备份恢复后,之前创建的逻辑复制槽不可用,需删除重建。

  • 当使用远程备份时,请确保远程机器和备份机器的时钟同步,以防止使用–recovery-target-time恢复的场合,启动gaussdb时有可能会失败。

  • 当远程备份有效时(remote-proto=ssh),请确保-h和–remote-host指定的是同一台机器。当远程备份无效时,如果指定了-h选项,请确保-h指定的是本机地址或本机主机名。

  • 当前暂不支持备份逻辑复制槽。

153.4 命令说明

  • 打印gs_probackup版本。

    gs_probackup -V|--version
    gs_probackup version

  • 显示gs_probackup命令的摘要信息。如果指定了gs_probackup的子命令,则显示可用于此子命令的参数的详细信息。

    gs_probackup -?|--help
    gs_probackup help [command]

  • 初始化备份路径backup-path中的备份目录,该目录将存储已备份的内容。如果备份路径backup-path已存在,则backup-path必须为空目录。

    gs_probackup init -B backup-path [--help]

  • 在备份路径backup-path内初始化一个新的备份实例,并生成pg_probackup.conf配置文件,该文件保存了指定数据目录pgdata-path的gs_probackup设置。

    gs_probackup add-instance -B backup-path -D pgdata-path --instance=instance_name
    [-E external-directories-paths]
    [remote_options] [dss_options]
    [--help]

  • 在备份路径backup-path内删除指定实例相关的备份内容。

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

  • 将指定的连接、压缩、日志等相关设置添加到pg_probackup.conf配置文件中,或修改已设置的值。不推荐手动编辑pg_probackup.conf配置文件。

    gs_probackup set-config -B backup-path --instance=instance_name
    [-D pgdata-path] [-E external-directories-paths] [--archive-timeout=timeout]
    [--retention-redundancy=retention-redundancy] [--retention-window=retention-window] [--wal-depth=wal-depth]
    [--compress-algorithm=compress-algorithm] [--compress-level=compress-level]
    [-d dbname] [-h hostname] [-p port] [-U username]
    [logging_options] [remote_options] [dss_options]
    [--help]

  • 将备份相关设置添加到backup.control配置文件中,或修改已设置的值。

    gs_probackup set-backup -B backup-path --instance=instance_name -i backup-id
    [--note=text] [pinning_options]
    [--help]

  • 显示位于备份目录中的pg_probackup.conf配置文件的内容。可以通过指定–format=json选项,以json格式显示。默认情况下,显示为纯文本格式。

    gs_probackup show-config -B backup-path --instance=instance_name
    [--format=plain|json]
    [--help]

  • 显示备份目录的内容。如果指定了instance_name和backup_id,则显示该备份的详细信息。可以通过指定–format=json选项,以json格式显示。默认情况下,备份目录的内容显示为纯文本格式。

    gs_probackup show -B backup-path
    [--instance=instance_name [-i backup-id]] [--archive] [--format=plain|json]
    [--help]

  • 创建指定实例的备份。

    gs_probackup backup -B backup-path --instance=instance_name -b backup-mode
    [-D pgdata-path] [-C] [-S slot-name] [--temp-slot] [--backup-pg-log] [-j threads_num] [--progress]
    [--no-validate] [--skip-block-validation] [-E external-directories-paths] [--no-sync] [--note=text]
    [--archive-timeout=timeout] [-t rwtimeout]
    [logging_options] [retention_options] [compression_options] [connection_options]
    [remote_options] [dss_options] [pinning_options][--backup-pg-replslot]
    [--help]

  • 从备份目录backup-path中的备份副本恢复指定实例。如果指定了恢复目标选项,gs_probackup将查找最近的备份并将其还原到指定的恢复目标。否则,使用最近一次备份。

    gs_probackup restore -B backup-path --instance=instance_name
    [-D pgdata-path] [-i backup_id] [-j threads_num] [--progress] [--force] [--no-sync] [--no-validate] [--skip-block-validation]
    [--external-mapping=OLDDIR=NEWDIR] [-T OLDDIR=NEWDIR] [--skip-external-dirs] [-I incremental_mode]
    [recovery_options] [remote_options] [dss_options] [logging_options]
    [--help]

  • 将指定的增量备份与其父完全备份之间的所有增量备份合并到父完全备份。父完全备份将接收所有合并的数据,而已合并的增量备份将作为冗余被删除。

    gs_probackup merge -B backup-path --instance=instance_name -i backup_id
    [-j threads_num] [--progress] [logging_options]
    [--help]

  • 删除指定备份,或删除不满足当前保留策略的备份。

    gs_probackup delete -B backup-path --instance=instance_name
    [-i backup-id | --delete-expired | --merge-expired | --status=backup_status]
    [--delete-wal] [-j threads_num] [--progress]
    [--retention-redundancy=retention-redundancy] [--retention-window=retention-window]
    [--wal-depth=wal-depth] [--dry-run]
    [logging_options]
    [--help]

  • 验证恢复数据库所需的所有文件是否存在且未损坏。如果未指定instance_name,gs_probackup将验证备份目录中的所有可用备份。如果指定instance_name而不指定任何附加选项,gs_probackup将验证此备份实例的所有可用备份。如果指定了instance_name并且指定backup-id或恢复目标相关选项,gs_probackup将检查是否可以使用这些选项恢复数据库。

    gs_probackup validate -B backup-path
    [--instance=instance_name] [-i backup-id]
    [-j threads_num] [--progress] [--skip-block-validation]
    [--recovery-target-time=time | --recovery-target-xid=xid | --recovery-target-lsn=lsn | --recovery-target-name=target-name]
    [--recovery-target-inclusive=boolean]
    [logging_options]
    [--help]

153.5 参数说明

通用参数

  • command

    gs_probackup除version和help以外的子命令:init、add-instance、del-instance、set-config、set-backup、show-config、show、backup、restore、merge、delete、validate。

  • -?, –help

    显示gs_probackup命令行参数的帮助信息,然后退出。

    子命令中只能使用–help,不能使用-?。

  • -V, –version

    打印gs_probackup版本,然后退出。

  • -B backup-path, –backup-path=backup-path

    备份的路径。

    系统环境变量:$BACKUP_PATH

  • -D pgdata-path, –pgdata=pgdata-path

    数据目录的路径。

    系统环境变量:$PGDATA

  • –instance=instance_name

    实例名。

  • -i backup-id, –backup-id=backup-id

    备份的唯一标识。

  • –format=format

    指定显示备份信息的格式,支持plain和json格式。

    默认值:plain

  • –status=backup_status

    删除指定状态的所有备份,包含以下状态:

    • OK:备份已完成且有效。

    • DONE:备份已完成但未经过验证。

    • RUNNING:备份正在进行中。

    • MERGING:备份正在合并中。

    • DELETING:备份正在删除中。

    • CORRUPT:部分备份文件已损坏。

    • ERROR:由于意外错误,备份失败。

    • ORPHAN:由于其父备份之一已损坏或丢失,备份无效。

  • -j threads_num, –threads=threads_num

    设置备份、还原、合并进程的并行线程数。

  • –archive

    显示WAL归档信息。

  • –progress

    显示进度。

  • –note=text

    给备份添加note。