数据库运维指南:备份与恢复—物理备份与恢复(4)
gs_probackup
背景信息
gs_probackup是一个用于管理openGauss数据库备份和恢复的工具。它对openGauss实例进行定期备份,以便在数据库出现故障时能够恢复服务器。
- 可用于备份单机数据库,也可对主机或者主节点数据库备机进行备份,为物理备份。
- 可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump文件等。
- 支持增量备份、定期备份和远程备份。
- 可设置备份的留存策略。
gs_probackup目前支持进度打印,会分别在文件备份、文件验证阶段、文件同步阶段以及文件恢复阶段,根据已经完成的文件数比总文件数打印进度。
前提条件
- 可以正常连接openGauss数据库。
- 若要使用PTRACK增量备份,需在postgresql.conf中手动添加参数“enable_cbm_tracking = on”或通过gs_guc工具进行设置。
- 为了防止xlog在传输结束前被清理,请适当调高postgresql.conf文件中wal_keep_segments的值。
限制说明
- 备份必须由运行数据库服务器的用户执行。
- 备份和恢复的数据库服务器的主版本号必须相同。
- 如果要通过ssh在远程模式下备份数据库,需要在本地和远程主机安装相同主版本的数据库,并通过ssh-copy-id remote_user@remote_host命令设置本地主机备份用户和远程主机数据库用户的无密码ssh连接。
- 远程模式下只能执行add-instance、backup、restore子命令。
- 使用restore子命令前,应先停止gaussdb进程。
- 在非资源池化模式下,当存在用户自定义表空间时,如果该表空间的路径不在PGDATA目录下,备份的时候要加上 --external-dirs 参数,否则,该表空间不会被备份;在资源池化模式下,当前只支持相对路径表空间,因此存在自定义表空间时不需要指定 --external-dir 参数。
- 当备份的规模比较大或在备份同时执行业务时,为了防止备份过程中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指定的是本机地址或本机主机名。
- 当前暂不支持备份逻辑复制槽。
- 在开启enable_cbm_tracking后,不能直接执行增量备份,需要先执行全量备份,即使在开启参数之前已经执行过全量备份。
命令说明
-
打印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] -

浙公网安备 33010602011771号