Crunchy PG手动备份实验

来源:这里教程网 时间:2026-03-14 20:50:39 作者:

Crunchy PostgreSQL在Kubernets/Openshift安装以后,可以通过yaml文件非常容易的配置自动备份和手动备份,自动备份是由Crunchy Postgres Operator创建了CronJobs控制在什么时间,执行什么备份,和Linux里面的Cronjob类似。 例如如下示例定义了自动备份的策略每周日 1am执行一个全量备份每周 周一到周六 1am 执行增量备份

spec:
  backups:
    pgbackrest:
      repos:
      - name: repo1
        schedules:
          full: "0 1 * * 0"
          differential: "0 1 * * 1-6"

3种备份定义如下(1) full: A backup of your entire Postgres cluster. This is the largest of all of the backup types. (2) differential: A backup of all of the data since the last full backup. (3) incremental: A backup of all of the data since the last full, differential, or incremental backup. 对于手工备份,这里做3个实验来验证3种不同的备份 (full, differential, incremental)。 第一个实验:手工全量备份 yaml文件中的相关的设置部分

      manual:
        repoName: repo1
        options:
        - --type=full

第一次安装完成以后自动做一个full backup

$ oc get po
NAME                              READY   STATUS      RESTARTS   AGE
demo-backup-r7fk-27shq            0/1     Completed   0          4m52s
demo-instance1-2wkh-0             5/5     Running     0          6m34s
demo-instance1-6hv6-0             5/5     Running     0          6m34s
demo-pgbouncer-866898f6c4-wh7zf   2/2     Running     0          6m34s
demo-repo-host-0                  2/2     Running     0          6m34s

第一次手动full备份

$ oc annotate postgrescluster demo postgres-operator.crunchydata.com/pgbackrest-backup="$(date)"
postgrescluster.postgres-operator.crunchydata.com/demo annotated
$ oc get po
NAME                              READY   STATUS      RESTARTS   AGE
demo-backup-qpf7-nhhvh            0/1     Completed   0          27s
demo-backup-r7fk-27shq            0/1     Completed   0          5m25s
demo-instance1-2wkh-0             5/5     Running     0          7m7s
demo-instance1-6hv6-0             5/5     Running     0          7m7s
demo-pgbouncer-866898f6c4-wh7zf   2/2     Running     0          7m7s
demo-repo-host-0                  2/2     Running     0          7m7s

第二次手动full备份,要加 --overwrite 选项才行

$ oc annotate postgrescluster demo --overwrite postgres-operator.crunchydata.com/pgbackrest-backup="$(date)"
postgrescluster.postgres-operator.crunchydata.com/demo annotated
$ oc get po
NAME                              READY   STATUS              RESTARTS   AGE
demo-backup-c7vw-l4fg4            0/1     ContainerCreating   0          1s
demo-backup-r7fk-27shq            0/1     Completed           0          7m23s
demo-instance1-2wkh-0             5/5     Running             0          9m5s
demo-instance1-6hv6-0             5/5     Running             0          9m5s
demo-pgbouncer-866898f6c4-wh7zf   2/2     Running             0          9m5s
demo-repo-host-0                  2/2     Running             0          9m5s
$ oc get po
NAME                              READY   STATUS      RESTARTS   AGE
demo-backup-c7vw-l4fg4            0/1     Completed   0          27s
demo-backup-r7fk-27shq            0/1     Completed   0          7m49s
demo-instance1-2wkh-0             5/5     Running     0          9m31s
demo-instance1-6hv6-0             5/5     Running     0          9m31s
demo-pgbouncer-866898f6c4-wh7zf   2/2     Running     0          9m31s
demo-repo-host-0                  2/2     Running     0          9m31s

查看pgbackrest的备份信息,应该有3个备份信息 $ oc exec -it demo-repo-host-0 -c pgbackrest -- pgbackrest info

stanza: db
    status: ok
    cipher: none
    db (current)
        wal archive min/max (14): 000000010000000000000001/000000010000000000000008
        full backup: 20230215-094253F
            timestamp start/stop: 2023-02-15 09:42:53 / 2023-02-15 09:44:44
            wal start/stop: 000000010000000000000004 / 000000010000000000000004
            database size: 37.0MB, database backup size: 37.0MB
            repo1: backup set size: 4.5MB, backup size: 4.5MB
        full backup: 20230215-094505F
            timestamp start/stop: 2023-02-15 09:45:05 / 2023-02-15 09:45:23
            wal start/stop: 000000010000000000000006 / 000000010000000000000006
            database size: 37MB, database backup size: 37MB
            repo1: backup set size: 4.5MB, backup size: 4.5MB
        full backup: 20230215-094728F
            timestamp start/stop: 2023-02-15 09:47:28 / 2023-02-15 09:47:44
            wal start/stop: 000000010000000000000008 / 000000010000000000000008
            database size: 37.2MB, database backup size: 37.2MB
            repo1: backup set size: 4.5MB, backup size: 4.5MB

实验二:differential 备份 修改yaml文件,改成

      manual:
        repoName: repo1
        options:
        - --type=diff

然后apply yaml文件。 执行和full backup同样的命令2次,可以通过 pgbackrest info查看备份的信息

$ oc exec -it demo-repo-host-0 -c pgbackrest -- pgbackrest info
stanza: db
    status: ok
    cipher: none
    db (current)
        wal archive min/max (14): 000000010000000000000001/000000010000000000000008
        full backup: 20230215-102129F
            timestamp start/stop: 2023-02-15 10:21:29 / 2023-02-15 10:22:42
            wal start/stop: 000000010000000000000004 / 000000010000000000000004
            database size: 36.9MB, database backup size: 36.9MB
            repo1: backup set size: 4.5MB, backup size: 4.5MB
        diff backup: 20230215-102129F_20230215-102455D
            timestamp start/stop: 2023-02-15 10:24:55 / 2023-02-15 10:25:21
            wal start/stop: 000000010000000000000006 / 000000010000000000000006
            database size: 37MB, database backup size: 6.5MB
            repo1: backup set size: 4.5MB, backup size: 1015.8KB
            backup reference list: 20230215-102129F
        diff backup: 20230215-102129F_20230215-102636D
            timestamp start/stop: 2023-02-15 10:26:36 / 2023-02-15 10:26:40
            wal start/stop: 000000010000000000000008 / 000000010000000000000008
            database size: 37.2MB, database backup size: 6.6MB
            repo1: backup set size: 4.5MB, backup size: 1019.6KB
            backup reference list: 20230215-102129F

实验三:Incremental 备份 修改yaml文件,改成

      manual:
        repoName: repo1
        options:
        - --type=incr

然后apply yaml文件。 执行和full backup同样的命令2次,可以通过 pgbackrest info查看备份的信息

$ oc exec -it demo-repo-host-0 -c pgbackrest -- pgbackrest info
stanza: db
    status: ok
    cipher: none
    db (current)
        wal archive min/max (14): 000000010000000000000001/00000001000000000000000D
        full backup: 20230215-102129F
            timestamp start/stop: 2023-02-15 10:21:29 / 2023-02-15 10:22:42
            wal start/stop: 000000010000000000000004 / 000000010000000000000004
            database size: 36.9MB, database backup size: 36.9MB
            repo1: backup set size: 4.5MB, backup size: 4.5MB
        diff backup: 20230215-102129F_20230215-102455D
            timestamp start/stop: 2023-02-15 10:24:55 / 2023-02-15 10:25:21
            wal start/stop: 000000010000000000000006 / 000000010000000000000006
            database size: 37MB, database backup size: 6.5MB
            repo1: backup set size: 4.5MB, backup size: 1015.8KB
            backup reference list: 20230215-102129F
        diff backup: 20230215-102129F_20230215-102636D
            timestamp start/stop: 2023-02-15 10:26:36 / 2023-02-15 10:26:40
            wal start/stop: 000000010000000000000008 / 000000010000000000000008
            database size: 37.2MB, database backup size: 6.6MB
            repo1: backup set size: 4.5MB, backup size: 1019.6KB
            backup reference list: 20230215-102129F
        incr backup: 20230215-102129F_20230215-103608I
            timestamp start/stop: 2023-02-15 10:36:08 / 2023-02-15 10:36:10
            wal start/stop: 00000001000000000000000B / 00000001000000000000000B
            database size: 38.0MB, database backup size: 1.7MB
            repo1: backup set size: 4.6MB, backup size: 96.8KB
            backup reference list: 20230215-102129F, 20230215-102129F_20230215-102636D
        incr backup: 20230215-102129F_20230215-103656I
            timestamp start/stop: 2023-02-15 10:36:56 / 2023-02-15 10:36:58
            wal start/stop: 00000001000000000000000D / 00000001000000000000000D
            database size: 38MB, database backup size: 1.7MB
            repo1: backup set size: 4.6MB, backup size: 98.4KB
            backup reference list: 20230215-102129F, 20230215-102129F_20230215-102636D, 20230215-102129F_20230215-103608I

相关推荐