暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

BRM使用手册

由迪 2023-12-31
455

原作者:高云龙

概述

数据库备份恢复对于运维工作至关重要,BRM备份恢复工具是一个用于管理MogDB/openGauss数据库备份和恢复的工具,通过备份恢复工具可以高效、安全、便利的管理数据库备份恢复任务,同时通过自动化集中化统一管理将有效提升运维效率。

BRM备份恢复工具的全称为:Backup and Recovery Manager。主要设计和研发目的是为了应对MogDB/openGauss数据库的集中式备份和恢复管理工作,同时提供命令行工具CLI和Web图形管理界面。

  • 可用于备份单机数据库或者集群主节点数据库,为物理备份。
  • 可备份外部目录的内容,如表空间、脚本文件、配置文件、日志文件、dump文件等。
  • 支持增量备份、定期备份和远程备份/恢复。
  • 可设置备份的留存策略。
  • 支持集中备份管理
    • 备份文件统一到BRM-Media进行管理。

本文从安装设置、命令行参考、功能介绍与用法几方面进行展开说明,为MogDB/openGauss数据库备份和维护提供指导。

限制

  • MogDB/openGauss数据库可以正常访问。
  • 若要使用PTRACK增量备份,需全量备份前在postgresql.conf中手动添加参数"enable_cbm_tracking = on"。
  • 备份必须由运行数据库服务器的用户执行。
  • 备份和恢复的数据库服务器的主版本号必须相同。
  • 如果要通过ssh在远程模式下备份数据库,需要在本地和远程主机安装相同主版本的数据库,并通过ssh-copy-id remote_user@remote_host命令设置本地主机备份用户和远程主机数据库用户的无密码ssh连接。
  • 远程模式下,执行备份的数据库用户至少赋予REPLICATION和SYSADMIN权限。
  • 使用restore子命令前,应先停止mogdb/gaussdb进程。

程序说明

  • brm 命令行备份工具
  • brmd 针对企业版图形界面备份守护进程
  • brm-media-server 备份文件统一管理程序

安装和设置

图形化界面安装

在MogDB Manager图形化界面->数据库管理->安装数据库中可选择是否安装部署brm,安装成功后会在集群每个节点都部署brm工具。

数据库详情页面"BRM安装状态"显示为成功,备份管理->BRMD信息tab显示状态为"在线"。

命令行-仅安装brm

安装步骤

  • 根据你的系统架构下载brm安装包,如:brm_1.0.4_linux_amd64.zip解压压缩包解压压缩包

    unzip brm_1.0.4_linux_amd64.zip
    
  • 进入解压目录,修改conf目录下brm.yaml文件,修改配置为自己所需配置

    brm.yaml示例

    # 没有启用
    backup_user: omm
    # 备份文件存放目录
    backup_home: /home/omm/brm/backup
    # 日志目录
    log_file: /home/omm/brm/logs/brm.log
    # 日志级别
    log_level: INFO
    # 没有启用
    lock_directory: /var/lib/run
    # wal全局备份几次 default 1
    wal_retention_redundancy: 1
    # 是否允许主库进行备份. default:false
    no_allow_primary_backup: false
    network_limit_rate: 10m
    # default on
    enable_backup_wal_file_check: on
    ## 启动备份文件中心同步
    #enable_backup_push: on
    ## 当前Brm节点名称,当enable_backup_center_push为on时此项为必填
    #brm_node_name: 127.0.0.1:5434
    ## brm 备份文件集中存储配置
    #backup_center:
    #  - host: 127.0.0.1
    #    port: 44332
    #  - host: 127.0.0.1
    #    port: 44333
    
  • 在backup_user家目录下创建隐藏文件.brm,并将conf下brm.yaml复制到.brm目录下

    mkdir .brm
    cp conf/brm.yaml .brm/
    
  • 验证brm是否可使用,在brm二进制文件所在目录,执行任意brm命令,能执行表示部署成功

    ./brm version
    

命令行-一键安装

安装准备

  • MogDB数据库集群已成功安装。
  • 根据你的系统架构下载brm安装包
  • brm
    下载对应平台的压缩包解压即可

安装步骤

  • 解压压缩包

    tar -zxvf xxxx.tar.gz
    
  • 进入解压目录,修改bin目录下的brmd.yaml和brm.yaml配置文件

    vim bin/brmd.yaml
    vim bin/brm.yaml
    

    brmd.yaml示例

    # 日志目录
    log_file: /var/log/brm/brmd.log
    # 日志级别
    log_level: DEBUG
    # 文件锁的功能,没有启用
    lock_directory: /var/lib/run
    # brm备份目录
    backup_dir: /opt/brm
    # brm_server配置,用于media-server备份集管理中心的连接,配置后执行backup、backup-wal会同步上传至media-server;支持注释该项,注释后不会同步上传,仅在本地保留备份。
    host_conf:
    - host: 123.60.223.33
        port: 8111
    # instance配置
    instance_conf:
    - instance_name: 1414484883601887232
        node_name: node1
        backup_user: omm
        pg_data: /opt/mogdb/data   # 数据库目录
        archive_dir: /opt/archive  # 备份实例的归档路径,该路径需与数据库配置文件postgresql.conf中"archive_dest"参数保持一致。
    

    brm.yaml示例

    backup_home: /opt/brm/backup
    backup_user: omm
    brm_node_name: node1
    enable_backup_push: "on"
    enable_backup_wal_file_check: "on"
    lock_directory: ""
    log_file: /opt/brm/logs/brm.log
    log_level: warn
    network_limit_rate: 10m
    no_allow_primary_backup: false
    wal_retention_redundancy: 1
    # brm_server配置,用于media-server备份集管理中心的连接,配置后执行backup、backup-wal会同步上传至media-server;支持注释该项,注释后不会同步上传,仅在本地保留备份。
    backup_center:
    - host: 123.60.223.33
        port: 8112
    
  • 执行./install.sh安装。显示"安装成功;pid= xxx"字样表示安装成功,若配置了brm_server还会打印"connected to service ip:port"。

    执行./install.sh脚本会根据brmd.yaml中的配置创建所需备份和归档目录,并检测数据库postgresql.conf中以下参数是否配置正确,若正确则跳过,若不正确,则修改参数并重启数据库。所做操作如下:

    vim dataDir/postgres.conf
    archive_mode = on
    archive_dest = 'archivePath'   # archivePath需与brm.yaml中archive_dir的路径一致
    enable_cbm_tracking = on  # 允许增量备份
    
    gs_ctl restart -D dataDir  # 重启数据库
    
  • 安装验证

    切换到数据库用户,进入brm目录执行"brm -h",显示brm可用命令表示brm可正常使用。

    安装成功后,默认会创建一个备份实例,可使用"./brm list-server"查看。

    su - omm
    cd brm
    ./brm -h
    

功能介绍及用法

备份恢复流程

  1. 添加一个新的备份实例。支持在同一个备份目录下存放多个数据库实例的备份。

    brm add-server -i instanceName -D dataDir
    
  2. 创建指定实例的备份。在进行增量备份之前,必须至少创建一次全量备份。

    brm backup -i instanceName -b FULL|PTRACK
    
  3. 创建wal日志备份。

    brm backup-wal -i instanceName
    
  4. 从指定实例的备份中恢复数据。

    brm restore -i instanceName --backup-id=backup-id -D dataDir
    

version

查看版本。

./brm version

add-server

添加新的备份实例

brm add-server -D dataDir -i instance_name
[-E, external-dirs string] [--retention-redundancy int] [--retention-window int]
[-d,--pgdatabase string] [-p, --pgport int] [-U, --pguser string] [--pgpassword string]
[--compress-algorithm string] [--compress-level int]
[--archive-timeout string] [--archive-dir string] [--wal-retention-redundancy int]
[--primary-host string] [--primary-host-user string] [--primary-host-password string]
[--remote-proto string] [--remote-host string] [--remote-port int] [--remote-user string]
[-h|--help]

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

brm add-server -i instanceName -D dataDir [option]
  • instanceName 备份实例名称,也是将存储此集群的 WAL 和备份文件的子目录的名称。在备份、查看备份、恢复等命令中,均需使用该参数,用以指定备份实例。
  • dataDir 需要备份的集群的数据目录。
  • option为可选参数,可指定远程主机、配置保留策略、压缩级别等。有关如何配置的详细信息,请参见"set-server设置备份实例"部分。

该命令会在备份目录下创建backups/和wal/目录,并在分别再创建名为instanceName的子目录。backups/instanceName/目录下包含控制此备份实例设置的配置文件:brm_conf.yaml、pg_probackup.conf。

运行brm备份命令的用户必须对备份目录具有完全访问权限,并且至少对数据库数据目录(dataDir)具有只读访问权限。

添加远程备份实例时,连接数据库的用户(-U,–pguser)至少需要赋予REPLICATION和SYSADMIN权限。

backup

创建备份

brm backup -i instance-name -b backup-mode
[--expire-time] [-E, --external-dirs]
[-C] [-S slot-name] [--temp-slot] [--backup-pg-log] [-j threads_num]
[--no-validate] [--no-sync] [--note=string]
[--help]

在成功添加备份实例后,可开始创建备份,运行以下命令:

brm backup -i instanceName -b backupMode

backupMode分为FULL和PTRACK,默认为FULL。

  • FULL:创建一个全量备份,包含要恢复的集群的所有数据文件。
  • PTRACK:动态创建增量备份跟踪页面更改。

当从增量备份恢复集群时,依赖于父完整备份和它们之间的所有增量备份,这被称为 “备份链”。在进行增量备份之前,您必须至少创建一个全量备份。

支持为备份指定过期时间,例如,创建一个过期时间为2022-01-01 00:00:00的全量备份,运行一下命令:

brm backup -i instanceName -b FULL --expire-time='2022-01-01 00:00:00+03'

多线程运行备份

备份、恢复、合并、删除支持多线程并行执行。如果有足够的资源(CPU 内核、磁盘和网络带宽),这可以显着加快brm操作。

并行执行由 -j/–threads命令行选项控制。例如,要使用四个并行线程创建备份,请运行:

brm backup -i instanceName -b FULL -j 4

备份外部目录

要备份位于数据目录之外的目录,请使用可选参数-E/–external-dirs指定该目录路径。如果您想备份多个外部目录,您可以提供多个路径,在 Linux 系统上用冒号分隔,在 Windows 系统上用分号分隔。

例如,要在Linux系统上将/tmp/dir1和/tmp/dir2目录包含到instanceName备份实例的完整备份中,请运行:

brm backup -i instanceName -b FULL --external-dirs=/tmp/dir1:/tmp/dir2

同样地,要在Windows系统上将C:\dir1和C:\dir2目录目录包含到instanceName备份实例的完整备份中,请运行:

brm backup -i instanceName -b FULL --external-dirs=C:\dir1;C:\dir2

递归地将每个外部目录的内容复制到备份目录中的一个单独的子目录中。由于包含在不同备份中的外部目录不必相同,因此当您从增量备份恢复集群时,只会恢复属于该特定备份的那些目录。存储在先前备份中的任何外部目录都将被忽略。

另外,备份自定义表空间也可通过-E/–external-dirs来指定目录,若备份时未指定表空间目录,通过brm备份时会通过该参数自动备份表空间,并且在恢复时给与提示。

backup-wal

创建wal日志备份

brm backup-wal -i instance=name
[-r] [--delete-wal] [-j threads_num]
[--primary-host=string] [--primary-host-password=string] [--primary-host-user=string][--primary-host-prv-file=string]
[-h|--help]

配置好归档目录后,可创建wal归档日志备份。

brm backup-wal -i instanceName

备份wal日志,同时删除无效wal归档日志

brm backup-wal -i instanceName --delete-wal

wal归档日志主要状态包含:INValid、Missing、FOUND

  • INValid:存在wal文件,但无有效备份点
  • Missing:存在备份点数据,但不存在wal文件
  • FOUND:备份点以及对应的wal文件均存在(有效wal文件)

–delete-wal会删除多余的wal归档日志,只保留状态为FOUND的日志

备机对xlog进行归档

支持在备机进行wal归档,可选择备份主库或本机。需在集群主备库上均部署brm,并修改好配置文件。
指定主库连接信息则对主库wal日志进行备份,不指定则从本机备份

例如,在备库备份主库wal日志

brm backup-wal -i instanceName --primary-host=hostIP --primary-host-password=password --primary-host-user=username

check

检查备份实例是否配置就绪。

brm check -i instanceName

检查项如下:

                                openGauss connect: OK
                                openGauss version: OK (2.0.0)
superuser or standard user with backup privileges: OK
                                     archive mode: OK
                                archive directory: OK
                        retention policy settings: FAILED

list-server

列出所有的备份实例

brm list-server
[-i, instanse-name] [-f,string]
[-h|--help]

支持查看当前所有备份实例、查看指定备份实例详细信息。

列出所有的备份实例,请执行以下命令:

brm list-server

返回备份实例列表,如下:

instance            PgData            PgUser        PgDatabase     PgVersion
instanceName        dataDir                         postgres       2.0.0

列出指定备份实例,请执行以下命令:

brm list-server -i instanceName [-f]

-f, --format 可选参数。默认以PLAIN格式显示备份实例信息,支持使用-f或–format参数 指定显示格式,支持PLAIN|JSON|yaml格式。如:

[
  {
    "name": "1414484883601887232",
    "pg_data": "/opt/mogdb/data",
    "system_identifier": "18020659783305544267",
    "pgDatabase": "postgres",
    "pgPort": 26000,
    "unixSocket": "/opt/mogdb/tmp",
    "openGaussVersion": "2.0.0",
    "xLogSegSize": 16777216,
    "brmServerWalConfig": {
      "nodeName": "node1",
      "archiveDir": "/opt/archive",
      "archiveWal": false,
      "streamingArchiver": false,
      "streamingArchiverName": "brm_receive_wal",
      "slotName": "brm",
      "autoCreateSlot": true,
      "streamingArchiverBatchSize": 50,
      "walRetentionRedundancy": 1
    }
  }
]

set-server

设置备份实例

brm set-server -i instance-name -D dataDir
[-E, external-dirs] [--retention-redundancy=int] [--retention-window=int]
[-d,--pgdatabase string] [-p, --pgport int] [-U, --pguser string] [--pgpassword string]
[--compress-algorithm=string] [--compress-level=int]
[--archive-timeout=string] [--archive-dir=string] [--wal-retention-redundancy=int]
[--primary-host=string] [--primary-host-user=string] [--primary-host-password=string]
[--remote-proto string] [--remote-host string] [--remote-port int] [--remote-user string]
[-h|--help]

支持对已有备份实例进行修改设置、增加参数设置。

修改需要备份集群数据目录

brm set-server -i instanceName -D newDataDir

配置保留策略

所有创建的备份副本都存储在指定的备份目录中。为了节省磁盘空间,您可以配置保留策略以删除冗余备份副本。
brm支持新增或修改备份实例保留策略,包括保留备份冗余份数、保留备份wal冗余数和备份保留天数。

例如,设置备份实例保留备份冗余数为2份,保留天数为7天,请执行以下命令:

brm set-server -i instanceName -D dataDir --retention-redundancy=2 --retention-window=7

–retention-redundancy 指定保留全量备份冗余份数,如本例中,创建备份后,会产生2个备份副本;不添加该参数,默认值:-1,表示禁用此配置。

–retention-window
指定保留天数,备份有效天数,运行删除过期备份命令时,会根据备份策略中设置的值来删除;如本例中,运行删除过期备份命令,会删除7天前的备份。

–wal-retention-redundancy
指定保留wal日志备份冗余份数。

要根据保留策略清理备份目录,您必须运行带有–delete-expired的删除命令 ,或者在创建新备份时使用带有–delete-expired标志的备份命令来处理过时的备份副本。

可通过"list-server列出备份实例信息"查看备份策略是否配置成功。

配置压缩级别

brm set-server -i instanceName --compress-algorithm=zlib --compress-level=1

–compress-algorithm
指定用于压缩数据文件的方式。取值包括zlib、pglz和none。
如果设置为zlib或pglz,此选项将启用压缩。默认情况下,压缩功能处于关闭状态。默认值:none

–compress-level=compression_level 指定压缩级别。取值范围:0~9

0表示无压缩。
1表示压缩比最小,处理速度最快。
9表示压缩比最大,处理速度最慢。
可与–compress-algorithm选项一起使用。
默认值:-1(表示禁用此设置)

配置归档

brm set-server -i instanceName --archive-dir=archiveDir

支持配置备份的归档路径,同时也支持关闭实例备份的归档。

–archive-dir 指定备份实例的归档路径,该路径需与数据库配置文件postgresql.conf中"archive_dest"参数保持一致。

–no-archive-dir 关闭备份实例的归档。

show-backup

列出备份实例可用的备份

brm show-backup
[-i,--instance string] [-b, backup-id string] [-m,--backup-mode string] [-data-source string] [-f, string]
[-h|--help]

支持查看所有可用备份、指定备份实例可用备份和查看指定备份实例、指定备份的详情。

查看当前机器所有备份实例的可用备份。请执行以下命令:

brm show-backup [-m, --backup-mode] [--data-source]

-m, --backup-mode

可选参数。指定显示备份类型,支持ALL|FULL|PTRACK三种,不添加该参数则默认:ALL,显示所有类型备份。

–data-source

可选参数。指定备份数据源,支持LOCAL|SERVER|ALL三种,不添加该参数则默认:LOCAL,显示本地备份。

查看当前机器指定备份实例可用备份,请执行以下命令:

brm show-backup -i instanceName [-m, --backup-mode] [--data-source]

例如,查看当前机器备份实例为1414484883601887232的全部全量备份。

[omm@mogdb-manager-0002 brm]$ brm show-backup -i 1414484883601887232 -m FULL --data-source=ALL
2021/07/20 18:34:09 connected to service 172.16.0.19:8112
data source: local
==================================================================================================================================================
 Instance             Version  ID      Recovery Time           Mode  WAL Mode  TLI  Time    Data   WAL  Zratio  Start LSN    Stop LSN     Status
==================================================================================================================================================
 1414484883601887232  9.2      QW8B4V  2021-07-14 17:46:15+08  FULL  STREAM    1/0   14s  1010MB  48MB    0.98  15/CC000028  15/CC0001E0  OK
 1414484883601887232  9.2      QW7QG0  2021-07-14 10:19:16+08  FULL  STREAM    1/0   18s  1010MB  16MB    0.98  15/99000028  15/990001E0  OK
 1414484883601887232  9.2      QW7OH8  2021-07-14 09:36:48+08  FULL  STREAM    1/0   20s  1010MB  16MB    0.98  15/89000028  15/890001E0  OK
 1414484883601887232  9.2      QW7OFE  2021-07-14 09:35:43+08  FULL  STREAM    1/0   22s  1010MB  16MB    0.98  15/87000028  15/870001E0  OK

data source: 172.16.0.19:8112
=================================================================================================================================================
 Instance             Version  ID      Recovery Time           Mode  WAL Mode  TLI  Time    Data   WAL  Zratio  Start LSN    Stop LSN     Status
=================================================================================================================================================
 1414484883601887232  9.2      QW8B4V  2021-07-14 17:46:15+08  FULL  STREAM    1/0   14s  1010MB  48MB    0.98  15/CC000028  15/CC0001E0  OK
 1414484883601887232  9.2      QW7QG0  2021-07-14 10:19:16+08  FULL  STREAM    1/0   18s  1010MB  16MB    0.98  15/99000028  15/990001E0  OK
 1414484883601887232  9.2      QW7OH8  2021-07-14 09:36:48+08  FULL  STREAM    1/0   20s  1010MB  16MB    0.98  15/89000028  15/890001E0  OK
 1414484883601887232  9.2      QW7OFE  2021-07-14 09:35:43+08  FULL  STREAM    1/0   22s  1010MB  16MB    0.98  15/87000028  15/870001E0  OK

查看当前机器指定备份实例、指定备份详情,请执行以下命令:

brm show-backup -i instanceName -b backupID [-f]

-b, --backup-id 指定备份ID。

-f, --format 可选参数。默认以PLAIN格式显示备份实例信息,支持使用-f或–format参数 指定显示格式,支持PLAIN|JSON|yaml格式。

例如,以JSON格式查看备份实例1414484883601887232下备份ID为QW8B4V的备份详情,如下:

[omm@mogdb-manager-0002 brm]$ brm show-backup -i 1414484883601887232 --backup-id=QW8B4V -f JSON
[
  {
    "instName": "1414484883601887232",
    "backups": [
      {
        "backup-mode": "FULL",
        "stream": true,
        "compress-algorithm": "none",
        "compress-level": 1,
        "from-replica": false,
        "wal-mode": "STREAM",
        "backup-id": "QW8B4V",
        "status": "OK",
        "timelineid": "1",
        "start-lsn": "15/CC000028",
        "stop-lsn": "15/CC0001E0",
        "start-time": "2021-07-14 17:46:07+08",
        "end-time": "2021-07-14 17:46:21+08",
        "recovery-xid": "142481",
        "recovery-time": "2021-07-14 17:46:15+08",
        "recovery-name": "backup QW8B4V",
        "data-bytes": 1059019422,
        "wal-bytes": 50331648,
        "uncompressed-bytes": 1041763431,
        "pgdata-bytes": 1041763431,
        "block-size": 8192,
        "xlog-block-size": 8192,
        "program-version": "2.4.2",
        "server-version": "9.2",
        "root-dir": "/opt/brm/backup/backups/1414484883601887232/QW8B4V",
        "database-dir": "/opt/brm/backup/backups/1414484883601887232/QW8B4V/databases",
        "content-crc": "1311715709"
      }
    ]
  }
]

Status — backup status. Possible values:

  • OK — the backup is complete and valid.
  • DONE — the backup is complete, but was not validated.
  • RUNNING — the backup is in progress.
  • MERGING — the backup is being merged.
  • MERGED — the backup data files were successfully merged, but its metadata is in the process of being updated. Only full backups can have this status.
  • DELETING — the backup files are being deleted.
  • CORRUPT — some of the backup files are corrupt.
  • ERROR — the backup was aborted because of an unexpected error.
  • ORPHAN — the backup is invalid because one of its parent backups is corrupt or missing.

show-wal

列出备份实例的wal备份

brm show-wal
[-i,--instance string] [-data-source=string] [-f, string]
[-h|--help]

支持查看所有wal备份和查看指定备份实例的wal备份详情。

查看当前机器所有wal备份,请执行以下命令:

brm show-wal [--data-source]

–data-source

可选参数。指定备份数据源,支持LOCAL|SERVER|ALL三种,不添加该参数则默认:LOCAL,显示本地wal备份。

Instance: 1414484883601887232 - local
+-----+--------------------------+--------------------------+----------------+---------+
| TLI | START                    | END                      | SEGMENTS COUNT |  STATUS |
+-----+--------------------------+--------------------------+----------------+---------+
|   1 | 00000001000000150000003E | 000000010000001500000047 |             10 | INValid |
|   1 | 000000010000001500000048 | 000000010000001500000085 |             62 | Missing |
|   1 | 000000010000001500000086 | 000000010000001500000086 |              1 | INValid |
|   1 | 000000010000001500000087 | 0000000100000015000000CE |             72 |   FOUND |
+-----+--------------------------+--------------------------+----------------+---------+

提供以下信息:

  • TLI(timeLine) 时间线标识符。
  • START(start LSN) 备份开始的第一个wal归档文件序列号。
  • END(end LSN) 备份结束的最后一个wal归档文件序列号。
  • SEGMENTS COUNT wal文件个数。
  • STATUS WAL存档状态。可能包含:
    • INValid: 早于最小备份集的startLsn的wal被认为无效
    • Missing: 通过备份进行PITR进行恢复所需的wal文件但是wal不存在.(备份集中最小 Start LSN 和最大 Stop LSN的wal文件)
    • FOUND: 通过备份进行PITR进行恢复所需的wal文件并且wal文件存在

查看指定备份实例的wal备份详情,请执行以下命令:

brm show-wal -i instance [-f|--format=string]

-f, --format 可选参数。指定显示格式,默认以PLAIN格式显示备份wal信息,支持PLAIN|JSON|yaml格式。

switch-wal

在实例服务上执行xlog的切换

brm switch-wal -i instance-name
[--archive-timeout=int] [-f, --force]
[-h|--help]

在备份实例上执行xlog的切换,相当于在数据库执行:select pg_switch_xlog();
请执行以下命令:

brm switch-wal -i instanceName

delete

brm delete -i instance-name -b backup-id
[--delete-expired] [--delete-wal] [--progress]
[--status=string]
[-h|--help]

删除指定备份实例的某一个备份

要删除不再需要的指定备份,请运行以下命令:

brm delete -i instanceName --backup-id=backupID

此命令将删除指定backupID的全量备份或增量备份。如果指定backupID为全量备份,那么还会级联删除以该backupID为基础的所有增量备份(如果有的话)。

删除不需要的过期wal文件,请运行以下命令:

brm delete -i instanceName --delete-wal

删除根据当前保留策略中已过期的备份,请运行以下命令:

brm delete -i instanceName --delete-expired

注:

  • 如果同时设置了–retention-redundancy和–retention-window选项,则在清除备份目录时必须同时考虑这两个条件。例如,如果您设置–retention-redundancy=2 --retention-window=7,必须保留两个全量备份副本,以及确保过去7天的可恢复所需的所有备份。

  • 当至少存在一个增量备份基于满足保留策略已过期的全量备份时,该全量备份不会被删除,如需删除该过期的备份,且满足保留策略的增量备份有效,可执行以下命令:

    brm delete -i instanceName --delete-expired --merge-expired
    

    在这种情况下,搜索满足保留策略的最旧增量备份,并将此备份与其已经过期全量备份合并,从而使其成为全量备份。合并完成后,之前的过期备份将被删除。

删除具有特定状态的所有备份,请执行以下命令:

brm delete -i instanceName --status=ERROR

del-server

支持直接删除备份实例,删除与指定实例关联的所有备份和 WAL 文件。请执行以下命令:

brm del-server -i instanceName

restore

恢复

brm restore -i instance-name -D dataDir --backup-id=backup-id
[--skip-block-validation] [--skip-external-dirs] [--no-sync] [--no-validate]
[--recovery-target-lsn=string] [--recovery-target-name=string] [--recovery-target-time=string] [--recovery-target-xid=string]
[--external-mapping=strings] [--tablespace-mapping=strings]
[-h|--help]

支持通过brm restore命令进行数据恢复,恢复前需保证指定的集群数据目录为空;停止数据库进程。
要使用备份恢复数据库集群,请至少使用以下选项执行命令:

brm restore -i instanceName --backup-id=backupID -D dbDir

使用备份ID来恢复集群。

-b, --backup-id=string 指定用来恢复的备份ID

表空间恢复

如果要恢复的备份中包含表空间,brm支持恢复表空间到原目录或指定不同的新目录。默认情况下会将它们恢复到其原始位置;如果要将表空间恢复到不同的位置,请使用–tablespace-mapping选项。

使用–tablespace-mapping选项时,您必须提供旧表空间目录和新表空间目录的绝对路径,且保证–external-mapping和–tablespace-mapping中指定目录保持一致。如果路径恰好包含"="符号,请使用反斜杠对其进行转义。可以为多个表空间多次指定此选项。。此选项必须和–external-mapping一起使用。例如:

brm restore -i instanceName --backup-id=backupID -D dataDir --external-mapping=OLDDIR=NEWDIR --tablespace-mapping=OLDDIR=NEWDIR

当指定恢复的备份中含有表空间或外部目录,用户未指定–external-mapping和–tablespace-mapping任一选项时,brm会自动判断备份中表空间或外部目录的原目录在目标机器上是否为空,如果为空则直接恢复到原目录,无交互;如果原目录不为空会给出交互提示,支持指定新目录恢复或退出恢复。例如:

[omm@mogdb-manager-0004 brm]$ ./brm restore -i test -D /home/omm/testDir --backup-id RDLPRR --debug=info 
time="2022-06-20 15:35:50.343147" level=info msg="Using config file:/etc/brm/brm.yaml"
time="2022-06-20 15:35:50.346434" level=info msg="the gs_probackup path /opt/mogdb_brm/app/bin/gs_probackup"
time="2022-06-20 15:35:50.351724" level=info msg="the gs_probackup version 2.1.1"
time="2022-06-20 15:35:50.351831" level=info msg="the gs_ctl path /opt/mogdb_brm/app/bin/gs_ctl"
time="2022-06-20 15:35:50.356909" level=info msg="gs_ctl version  "
tablespace [/home/omm/tbs/ts_1] is not empty. please input newDir :/home/omm/tablespace/ts_1
tablespace [/home/omm/tbs/ts_2] is not empty. please input newDir :/home/omm/tablespace/ts2
external dir [/home/omm/test01] is not empty. please input newDir :/home/omm/test02
time="2022-06-20 15:37:58.023343" level=info msg="Instance remote begin restore"
time="2022-06-20 15:37:58.023789" level=info msg="Run Backup Process Id 2106153"
time="2022-06-20 15:37:58.02908" level=info msg="LOG: Start SSH client process, pid 2106154"
time="2022-06-20 15:37:58.262196" level=info msg="LOG: Restore begin."
...

本例中,备份“RDLPRR”含有2个表空间和1个外部目录,恢复时brm判断出含有表空间和外部目录,所以给出交互提示,用户根据提示输入新目录(newDir)后开始恢复流程。

若有以下情况,为确保恢复后能成功启动数据库,需添加参数如下:

  1. 若需要恢复成功后,更换端口启动数据库,需要带上参数"-e port=newPort"
  2. 更换端口恢复和远程恢复需要带上参数"-e replconninfo1=“‘’” "

执行时间点 (PITR) 恢复

只要在指定时间前进行过wal备份,brm支持使用wal备份文件来进行时间点的恢复,brm会根据指定时间自动选择最接近的备份并启动恢复过程。

可通过查看备份详细信息(参见show-backup命令)查看备份对应的recovery-time、recovery-xid、recovery-name、lsn。

在给定确切时间恢复集群状态,使用–recovery-target-time选项,例如:

brm restore -i instanceName -D dataDir --recovery-target-time='recovery-time'

将集群状态恢复到指定事务ID,请使用以下–recovery-target-xid选项,例如:

brm restore -i instanceName -D dataDir --recovery-target-xid='recovery-xid'

将集群状态恢复到指定LSN,仅支持Stop LSN,请使用–recovery-target-lsn选项,例如:

brm restore -i instanceName -D dataDir --recovery-target-lsn='stop-lsn'

将集群状态恢复到指定命名的还原点,请使用–recovery-target-name选项,例如:

brm restore -i instanceName -D dataDir --recovery-target-name='recovery-name'

通过media-server备份集管理中心恢复到任意节点

使用–data-soure参数指定备份源,默认为"LOCAL",从media-server获取备份数据,需指定–data-source=SERVER。

./brm restore -i instanceName --data-source=SERVER --backup-id=backupID -D dataDir

sync

同步备份和wal文件到备份集管理中心

brm sync -i instance-name
[-b, backup-id] [--option=string] [--wal-name=string]
[-h|--help]

同步备份和wal文件到备份集管理中心,请执行以下命令:

brm sync -i instanceName [-b, --backup-id]

-b, --backup-id 可选项,指定备份实例的某一备份同步到备份集管理中心

远程模式下使用brm

brm支持远程模式,支持通过SSH远程执行备份、恢复等操作。在这种模式下,要备份的数据库实例在远程系统上,备份数据在本地系统上。

限制:

  1. 本地备份主机和远程数据库主机均需安装brm;
  2. 对于主机之间的通信,请将备份主机上的备份用户在数据库主机上设置无密码SSH连接(远程主机信任备份主机)
  3. 另外,依赖连续wal归档来恢复时,需要在数据库主机上用户和备份主机上的用户之间设置无密码SSH连接(双向互信)

在备份主机上使用远程选项运行备份或恢复命令。brm通过SSH连接到远程系统,并在本地创建备份或在远程系统上用备份主机上的备份进行恢复,数据传输完成后,远程代理将终止并关闭SSH连接。

远程模式具体流程:

若不使用执行时间点 (PITR) 的恢复,步骤5、6可省略

  1. 添加远程备份实例。

    ./brm add-server -i remoteName -D dataDir -U remoteDBUser --pgpassword='Enmo@123' --remote-user=backup_user --remote-host=remoteIP -p dbPort -d dbName
    
  2. 设置远程备份实例wal归档目录。

    # --archive-dir必须与远程数据库postgresql.conf中"archive_dest"参数保持一致
    ./brm set-server -i remoteName --archive-dir=archiveDir
    
  3. 执行远程备份。

    # --debug=info打印指定级别日志,可不加
    ./brm backup -i remoteName --debug=info
    
  4. 进行数据库操作。

  5. 切换日志并记录操作时间。

    ./brm switch-wal -i remoteName
    
  6. 执行远程wal日志备份。

    # --debug=info打印指定级别日志,可不加
    ./brm backup-wal -i remoteName --debug=info
    
  7. 进行恢复。

    # 通过指定时间点来进行恢复,建议加上--no-validate参数,以防根据时间点匹配到的部分wal文件不存在
    # --recovery-target-time可替换为其他恢复参数
    ./brm restore -i remoteName --recovery-target-time='2022-04-15 15:07:22+08' -e port=newPort -e replconninfo1="''" -D newDir --debug=debug  --no-validate
    

参数说明

通用参数

  • -D dataDir, --pgdata=dataDIR

    指定数据库集群数据目录的绝对路径。此选项仅对add-server命令是必须的,其他命令可以从pg_probackup.conf配置文件中获取其值。

  • -i, --instance=string

    指定备份实例名。

  • –progress

    显示操作进度。

  • -f, --format=string

    指定显示备份信息的格式,支持PLAIN|JSON|yaml格式。

    默认值:plain

  • -j num_threads, --threads=num_threads

    设置备份、 恢复、合并和存档推送进程的并行线程数。

  • -h, --help

    显示有关可与此命令一起使用的选项的详细信息。

备份相关参数

  • -b backup-mode, --backup-mode=backup-mode

    指定备份模式,支持FULL和PTRACK,默认FULL.

    • FULL:创建全量备份,全量备份包含所有数据文件。
    • PTRACK:创建PTRACK增量备份。
  • –backup-pg-log

    将日志目录包含到备份中。此目录通常包含日志消息。默认情况下,排除日志目录。

  • –delete-expired

    备份完成后,根据当前保留策略删除过期备份。

  • –dry-run在没有做任何更改的情况下执行试运行。

  • –expire-time=string

    指定备份的过期时间。(如:–expire-time=‘2024-01-01 00:00:00+03’)

  • -E, --external-dirs=string (example: --external-dirs=/tmp/dir1:/tmp/dir2)

    通过将指定目录的内容递归复制到备份目录中的单独子目录中,将其包含到备份中。此选项可用于备份位于数据目录之外的脚本、SQL 转储文件和配置文件。如果您想备份多个外部目录,请在 Unix 上用冒号分隔它们的路径,在 Windows 上用分号分隔它们。(如:-E /tmp/dir1:/tmp/dir2)

  • –no-sync

    不要将备份的文件同步到磁盘。您可以使用此标志来加快备份过程。在操作系统或硬件崩溃的情况下,使用此参数会导致数据损坏。如果使用此选项,建议在备份完成后运行 验证命令以检测可能的问题。

  • –no-validate

    备份完成后跳过自动验证。如果您定期验证备份并希望在运行备份操作时节省时间,则可以使用此参数。

  • –note=string

    设置备份副本的文本注释。如果note包含换行符,则只保存第一个换行符之前的子串。文本注释的最大大小为 1 KB。

  • –skip-block-validation

    跳过块级校验和验证以加快备份过程。

  • -S, --slot string

    指定 WAL 流的复制槽。此选项只能与–stream 标志一起使用。

  • -C, --smooth-checkpoint

    在备份前展开检查点。

  • –stream

    进行STREAM备份,其中包括所有必需的 WAL 文件,方法是通过复制协议从数据库服务器流式传输它们。

  • –temp-slot

    创建一个临时物理复制槽,用于从备份的实例流式传输 WAL 。如果在备份过程中轮换 WAL,它可以确保所有必需的 WAL 段保持可用。此标志只能与–stream标志一起使用。默认插槽名称是pg_probackup_slot,可以使用–slot/-S选项更改。

恢复相关参数

  • -b backup-id, --backup-id=string

    指定恢复使用的备份

  • –data-source

    指定备份数据源,默认为:“LOCAL”,可选LOCAL|SERVER|ALL

    • LOCAL表示从本地获取备份数据
    • SERVER表示从media-server备份集管理中心获取备份数据
    • ALL表示同时从本地和media-server备份集管理中心获取备份数据。
  • –external-mapping=OLDDIR=NEWDIR

    在恢复时,将包含在备份中的外部目录从_OLDDIR_重新定位到_NEWDIR_目录。_OLDDIR_和_NEWDIR_都必须是绝对路径。如果路径中包含"=",则使用反斜杠转义。此选项可为多个目录多次指定。

  • –tablespace-mapping=OLDDIR=NEWDIR

    在恢复时,将表空间从_OLDDIR_重新定位到_NEWDIR_目录。_OLDDIR_和_NEWDIR_必须都是绝对路径。如果路径中包含"=",则使用反斜杠转义。多个表空间可以多次指定此选项。此选项必须和–external-mapping一起使用。

  • –skip-external-dirs

    跳过备份中包含的使用-–external-dirs选项指定的外部目录。这些目录的内容将不会被恢复。

  • –skip-block-validation

    跳过块级校验,以加快验证速度。在恢复之前的自动验证期间,将仅做文件级别的校验。

  • –force

    允许忽略备份的无效状态。如果出于某种原因需要从损坏的或无效的备份中恢复数据,可以使用此标志。请谨慎使用。

  • –no-validate

    跳过备份验证。

恢复目标相关参数

  • –recovery-target-inclusive

    默认:true

    指定为true时,在恢复目标 ( true)之后停止,恢复目标将包括指定的内容

    指定为false时,在恢复目标 ( false)之前停止,恢复目标将不包括指定的内容。

    此选项只能和 --recovery-target-name, --recovery-target-time, --recovery-target-lsn或 - --recovery-target-xid选项一起使用

  • –recovery-target-lsn=lsn

    指定恢复将使用预写日志位置的 LSN。当前只能指定备份的stop lsn

    可通过show-backup查看备份任务的Start LSN、Stop LSN。

  • –recovery-target-name=recovery-name

    指定恢复使用的备份的名字。

  • –recovery-target-time=recovery-time

    指定恢复将进行到的时间戳。如果未指定时区偏移量,则使用本地时区。

    例子: --recovery-target-time=“2021-01-01 00:00:00+03”

  • –recovery-target-xid=recovery-xid

    指定要恢复到的事务ID,当前只能指定备份中的recovery-xid。

保留相关参数

说明:可以和backup和delete命令一起使用这些参数

  • –retention-redundancy=int

    指定要保留在数据目录中的完整备份副本数。-1表示禁用此设置。

    默认值:-1

  • –retention-window=int

    指定保留的天数。必须为正整数。-1表示禁用此设置。

    默认值:-1

  • –wal-retention-redundancy

    指定wal日志冗余保留份数。-1表示禁用此设置

    默认值:-1

  • –delete-wal

    从任何现有的备份中删除不需要的WAL文件。

  • –delete-expired

    删除不符合pg_probackup.conf配置文件中定义的留存策略的备份。

  • –merge-expired

    将满足保留策略要求的最旧的增量备份与其已过期的父备份合并。

固定备份相关参数

说明:如果要将某些备份从已建立的留存策略中排除,可以和backup命令一起使用这些参数。

  • –expire-time=time

    指定备份固定失效的时间戳。必须是ISO-8601标准的时间戳。例如:–expire-time=‘2021-01-01 00:00:00+03’

  • –ttl=ttl

    指定从恢复时间开始计算,备份要固定的时间量。必须为正整数。0表示取消备份固定。

    支持的单位:ms, s, min, h, d(默认为s)。

    例如:–ttl=30d。

连接相关参数

  • -d dbname, --pgdatabase=dbname

    指定要连接的数据库的名称。该连接仅用于管理备份过程,因此您可以连接到任何现有数据库。如果命令行、PGDATABASE环境变量或pg_probackup.conf配置文件中未提供此选项,则pg_probackup 尝试从PGUSER环境变量中获取此值,如果PGUSER未设置变量,则从当前用户名中获取。

    系统环境变量:$PGDATABASE

  • –pghost=host

    指定运行服务器的系统的主机名。如果该值以斜杠开头,则它用作 Unix 域套接字的目录。

    默认: localhost

  • -p port, --pgport=port

    指定服务器正在侦听连接的 TCP 端口或本地 Unix 域套接字文件扩展名。

    默认: 5432

  • -U username, --pguser=usernamePGUSER

    指定所连接数据库的用户名。

  • –pgpassword=password

    指定所连接数据库用户的密码。

  • –primary-host=primary host

    主库地址。

  • –primary-host-user=username

    主库用户,默认为当前用户。

  • –primary-host-password=password

    主库用户密码

  • –primary-host-prv-file=string

    主库的ssh认证文件。默认为$HOME/.ssh/id_rsa

远程模式相关参数

通过SSH远程运行brm操作的相关参数。可以和add-server、set-server、backup命令一起使用这些参数。

  • –remote-proto=protocol

    指定用于远程操作的协议。目前只支持SSH协议。取值包括:

    • ssh:通过SSH启用远程备份模式。这是默认值。

    • none:显式禁用远程模式。

      如果指定了–remote-host参数,可以省略此参数。

  • –remote-host=destination

    指定要连接的远程主机的IP地址或主机名。

  • –remote-port=port

    指定要连接的远程主机的端口号。默认值:22

  • –remote-path=path

    指定数据库在远程系统的安装目录。

  • –remote-user=username

    指定SSH连接的远程主机用户。如果省略此参数,则使用当前发起SSH连接的用户。

  • –ssh-options=ssh_options

    指定SSH命令行参数的字符串。默认值:none

压缩相关参数

  • –compress-algorithm=compression_algorithm

    指定用于压缩数据文件的算法。取值包括zlib、pglz和none。

    如果设置为zlib或pglz,此选项将启用压缩。默认情况下,压缩功能处于关闭状态。

    默认值:none

  • –compress-level=compression_level

    指定压缩级别。取值范围:0~9

    • 0表示无压缩。

    • 1表示压缩比最小,处理速度最快。

    • 9表示压缩比最大,处理速度最慢。

      可与–compress-algorithm选项一起使用。

      默认值:-1(表示禁用此设置)

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论