{ "default" : { "all" : { "contributing" : [ { "key" : { "id" : "contrib", "image" : "pgbackrest/doc:contrib", "name" : "pgbackrest-dev", "option" : "-v /var/run/docker.sock:/var/run/docker.sock -v /home/vagrant/test:/home/vagrant/test", "os" : "u20", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.10" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get update" ], "host" : "pgbackrest-dev", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install rsync git devscripts build-essential valgrind autoconf \\", " autoconf-archive libssl-dev zlib1g-dev libxml2-dev libpq-dev pkg-config \\", " libxml-checker-perl libyaml-perl libdbd-pg-perl liblz4-dev liblz4-tool \\", " zstd libzstd-dev bzip2 libbz2-dev libyaml-dev ccache python3-distutils meson" ], "cmd-extra" : "-y 2>&1", "host" : "pgbackrest-dev", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "pgbackrest/test/test.pl --clean-only" ], "host" : "pgbackrest-dev", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "curl -fsSL https://get.docker.com | sudo sh" ], "cmd-extra" : "2>&1", "host" : "pgbackrest-dev", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo usermod -aG docker `whoami`" ], "host" : "pgbackrest-dev", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 666 /var/run/docker.sock" ], "host" : "pgbackrest-dev", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "pgbackrest/test/test.pl --dry-run" ], "cmd-extra" : "--no-log-timestamp", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "[0-9]+ tests selected|DRY RUN COMPLETED SUCCESSFULLY" ] }, "host" : "pgbackrest-dev", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: test begin on x86_64 - log level info", "P00 INFO: clean autogenerate code", "P00 INFO: 83 tests selected", " ", "P00 INFO: P1-T01/83 - vm=none, module=common, test=error", " [filtered 80 lines of output]", "P00 INFO: P1-T82/83 - vm=none, module=performance, test=type", "P00 INFO: P1-T83/83 - vm=none, module=performance, test=storage", "P00 INFO: DRY RUN COMPLETED SUCCESSFULLY" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "pgbackrest/test/test.pl --vm-out --module=common --test=wait" ], "cmd-extra" : "--no-log-timestamp", "host" : "pgbackrest-dev", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: test begin on x86_64 - log level info", "P00 INFO: cleanup old data", "P00 INFO: autogenerate code", "P00 INFO: build for none (/home/vagrant/test/build/none)", "P00 INFO: 1 test selected", " ", "P00 INFO: P1-T1/1 - vm=none, module=common, test=wait", " ", " P00 INFO: test command begin 2.55.0: [common/wait] --log-level=info --no-log-timestamp --repo-path=/home/vagrant/test/repo --scale=1 --test-path=/home/vagrant/test --vm=none --vm-id=0", " P00 INFO: test command end: completed successfully", " run 1 - waitNew(), waitMore, and waitFree()", " L0018 expect AssertError: assertion 'waitTime <= 999999000' failed", " ", " run 1/1 ----- L0021 0ms wait", " L0025 new wait", " L0026 check wait time", " L0027 check sleep time", " L0028 check sleep prev time", " L0029 no wait more", " ", " run 1/2 ----- L0032 100ms with retries after time expired", " L0034 new wait", " L0037 time expired, first retry", " L0038 time expired, second retry", " L0039 time expired, retries expired", " ", " run 1/3 ----- L0042 200ms wait", " L0046 new wait = 0.2 sec", " L0047 check wait time", " L0048 check sleep time", " L0049 check sleep prev time", " L0050 check begin time", " L0052 first retry", " L0053 check retry", " L0055 second retry", " L0056 check retry", " L0058 still going because of time", " L0064 lower range check", " L0065 upper range check", " L0067 free wait", " ", " run 1/4 ----- L0070 1100ms wait", " L0074 new wait = 1.1 sec", " L0075 check wait time", " L0076 check sleep time", " L0077 check sleep prev time", " L0078 check begin time", " L0084 lower range check", " L0085 upper range check", " L0087 free wait", " ", " run 1/5 ----- L0090 waitRemainder()", " L0092 new wait = 500ms", " L0093 check initial wait remainder", " L0094 check initial wait remainder", " L0098 check updated wait remainder", " L0099 check updated wait remainder", " ", " TESTS COMPLETED SUCCESSFULLY", "", "P00 INFO: P1-T1/1 - vm=none, module=common, test=wait", "P00 INFO: tested modules have full coverage", "P00 INFO: TESTS COMPLETED SUCCESSFULLY" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "pgbackrest/test/test.pl --module=postgres" ], "cmd-extra" : "--no-log-timestamp", "host" : "pgbackrest-dev", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: test begin on x86_64 - log level info", "P00 INFO: cleanup old data", "P00 INFO: autogenerate code", "P00 INFO: build for none (/home/vagrant/test/build/none)", "P00 INFO: 2 tests selected", " ", "P00 INFO: P1-T1/2 - vm=none, module=postgres, test=client", "P00 INFO: P1-T2/2 - vm=none, module=postgres, test=interface", "P00 INFO: tested modules have full coverage", "P00 INFO: TESTS COMPLETED SUCCESSFULLY" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "pgbackrest/test/test.pl --vm-build --vm=u20" ], "cmd-extra" : "--no-log-timestamp", "host" : "pgbackrest-dev", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: test begin on x86_64 - log level info", "P00 INFO: Using cached pgbackrest/test:u20-base-x86_64-20250228A image (862159b4d2169a4752b106639ca0f47c1ebb1f86) ...", "P00 INFO: Building pgbackrest/test:u20-test-x86_64 image ...", "P00 INFO: Build Complete" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "pgbackrest/test/test.pl --vm=u20 --module=postgres --test=interface --run=2" ], "cmd-extra" : "--no-log-timestamp", "host" : "pgbackrest-dev", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: test begin on x86_64 - log level info", "P00 INFO: cleanup old data and containers", "P00 INFO: autogenerate code", "P00 INFO: clean build for u20 (/home/vagrant/test/build/u20)", "P00 INFO: 1 test selected", " ", "P00 INFO: P1-T1/1 - vm=u20, module=postgres, test=interface, run=2", "P00 INFO: TESTS COMPLETED SUCCESSFULLY" ] } } ], "user-guide" : [ { "key" : { "id" : "azure", "image" : "mcr.microsoft.com/azure-storage/azurite", "name" : "azure-server", "option" : "-v {[host-repo-path]}/doc/resource/fake-cert/azure-server.crt:/root/public.crt:ro -v {[host-repo-path]}/doc/resource/fake-cert/azure-server.key:/root/private.key:ro -e AZURITE_ACCOUNTS='pgbackrest:YXpLZXk='", "os" : "debian", "param" : "azurite-blob --blobPort 443 --blobHost 0.0.0.0 --cert=/root/public.crt --key=/root/private.key", "update-hosts" : false }, "type" : "host", "value" : { "ip" : "172.17.0.2" } }, { "key" : { "id" : "s3", "image" : "minio/minio", "name" : "s3-server", "option" : "-v {[host-repo-path]}/doc/resource/fake-cert/s3-server.crt:/root/.minio/certs/public.crt:ro -v {[host-repo-path]}/doc/resource/fake-cert/s3-server.key:/root/.minio/certs/private.key:ro -e MINIO_REGION=us-east-1 -e MINIO_DOMAIN=s3.us-east-1.amazonaws.com -e MINIO_BROWSER=off -e MINIO_ACCESS_KEY=accessKey1 -e MINIO_SECRET_KEY=verySecretKey1", "os" : "debian", "param" : "server /data --address :443", "update-hosts" : false }, "type" : "host", "value" : { "ip" : "172.17.0.3" } }, { "key" : { "id" : "sftp", "image" : "pgbackrest/doc:debian", "name" : "sftp-server", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.4" } }, { "key" : { "id" : "build", "image" : "pgbackrest/doc:debian", "name" : "build", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.5" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /build/pgbackrest-release-2.55.0" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp -r /pgbackrest/* /build/pgbackrest-release-2.55.0" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown -R vagrant /build" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get update" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install python3-distutils meson gcc libpq-dev libssl-dev libxml2-dev \\", " pkg-config liblz4-dev libzstd-dev libbz2-dev libz-dev libyaml-dev libssh2-1-dev" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "meson setup /build/pgbackrest /build/pgbackrest-release-2.55.0" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "ninja -C /build/pgbackrest" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg1", "image" : "pgbackrest/doc:debian", "name" : "pg-primary", "option" : "-m 512m", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.6" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install postgresql-client libxml2 libssh2-1" ], "cmd-extra" : "-y 2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.55.0 - General help", "", "Usage:", " pgbackrest [options] [command]", "", "Commands:", " annotate add or modify backup annotation", " archive-get get a WAL segment from the archive", " archive-push push a WAL segment to the archive", " backup backup a database cluster", " check check the configuration", " expire expire backups that exceed retention", " help get help", " info retrieve information about backups", " repo-get get a file from a repository", " repo-ls list files in a repository", " restore restore a database cluster", " server pgBackRest server", " server-ping ping pgBackRest server", " stanza-create create the required stanza data", " stanza-delete delete a stanza", " stanza-upgrade upgrade a stanza", " start allow pgBackRest processes to run", " stop stop pgBackRest processes from running", " verify verify contents of a repository", " version get version", "", "Use 'pgbackrest help [command]' for more information." ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/lib/postgresql/16/bin/initdb \\", " -D /var/lib/postgresql/16/demo -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_createcluster 16 demo" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "Configuring already existing cluster (configuration: /etc/postgresql/16/demo, data: /var/lib/postgresql/16/demo, owner: 102:103)", "Ver Cluster Port Status Owner Data directory Log file", "16 demo 5432 down postgres /var/lib/postgresql/16/demo /var/log/postgresql/postgresql-16-demo.log" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "cat /root/postgresql.common.conf >> /etc/postgresql/16/demo/postgresql.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/16/demo" } }, "global" : { "log-timestamp" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres bash -c ' \\", " export PGBACKREST_LOG_PATH=/path/set/by/env && \\", " pgbackrest --log-level-console=error help backup log-path'" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "current\\: \\/path\\/set\\/by\\/env" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.55.0 - 'backup' command - 'log-path' option help", "", "Path where log files are stored.", "", "The log path provides a location for pgBackRest to store log files. Note that", "if log-level-file=off then no log path is required.", "", "current: /path/set/by/env", "default: /var/log/pgbackrest" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/etc/postgresql/16/demo/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo restart" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " create or replace function create_test_table(prefix int, scale int, data bool) returns void as \\$\\$ \\", " declare \\", " index int; \\", " begin \\", " for index in 1 .. scale loop \\", " execute 'create table test_' || prefix || '_' || index || ' (id int)'; \\", " \\", " if data then \\", " execute 'insert into test_' || prefix || '_' || index || ' values (' || (prefix * index) || ')'; \\", " end if; \\", " end loop; \\", " end \\$\\$ LANGUAGE plpgsql;\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global:archive-push" : { "compress-level" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-path=/var/lib/pgbackrest", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-cipher-pass" : { "value" : "zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO" }, "repo1-cipher-type" : { "value" : "aes-256-cbc" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.55.0: --exec-id=377-04baf9b7 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-create for stanza 'demo' on repo1", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " successfully archived to " ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=385-22615bff --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/16-1/0000000100000000/000000010000000000000001-0f20782f86d20ed6487132ce4e1f4674af053cc0.gz' on repo1", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "start-fast" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.55.0: --exec-id=409-120f539e --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028", " [filtered 3 lines of output]", "P00 INFO: check archive for segment(s) 000000010000000000000002:000000010000000000000003", "P00 INFO: new backup label = 20250421-132216F", "P00 INFO: full backup size = 22.0MB, file total = 963", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=409-120f539e --log-level-console=info --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-132216F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "diff backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 7 lines of output]", "P00 INFO: check archive for segment(s) 000000010000000000000004:000000010000000000000005", "P00 INFO: new backup label = 20250421-132216F_20250421-132219D", "P00 INFO: diff backup size = 8.3KB, file total = 963", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=434-60cb387f --log-level-console=info --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "(full|incr|diff) backup" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (16): 000000010000000000000001/000000010000000000000005", "", " full backup: 20250421-132216F", " timestamp start/stop: 2025-04-21 13:22:16+00 / 2025-04-21 13:22:18+00", " wal start/stop: 000000010000000000000002 / 000000010000000000000003", " database size: 22.0MB, database backup size: 22.0MB", " repo1: backup set size: 2.9MB, backup size: 2.9MB", "", " diff backup: 20250421-132216F_20250421-132219D", " timestamp start/stop: 2025-04-21 13:22:19+00 / 2025-04-21 13:22:21+00", " wal start/stop: 000000010000000000000004 / 000000010000000000000005", " database size: 22.0MB, database backup size: 8.3KB", " repo1: backup set size: 2.9MB, backup size: 448B", " backup reference total: 1 full" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm /var/lib/postgresql/16/demo/global/pg_control" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "could not find the database system" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "Error: /usr/lib/postgresql/16/bin/pg_ctl /usr/lib/postgresql/16/bin/pg_ctl start -D /var/lib/postgresql/16/demo -l /var/log/postgresql/postgresql-16-demo.log -s -o -c config_file=\"/etc/postgresql/16/demo/postgresql.conf\" exited with status 1: ", "postgres: could not find the database system", "Expected to find it in the directory \"/var/lib/postgresql/16/demo\",", "but could not open file \"/var/lib/postgresql/16/demo/global/pg_control\": No such file or directory", "Examine the log output." ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres find /var/lib/postgresql/16/demo -mindepth 1 -delete" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p /var/lib/postgresql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cp -r /pgbackrest/doc/example/* \\", " /var/lib/postgresql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- An example of monitoring pgBackRest from within PostgreSQL", "--", "-- Use copy to export data from the pgBackRest info command into the jsonb", "-- type so it can be queried directly by PostgreSQL.", "", "-- Create monitor schema", "create schema monitor;", "", "-- Get pgBackRest info in JSON format", "create function monitor.pgbackrest_info()", " returns jsonb AS $$", "declare", " data jsonb;", "begin", " -- Create a temp table to hold the JSON data", " create temp table temp_pgbackrest_data (data text);", "", " -- Copy data into the table directly from the pgBackRest info command", " copy temp_pgbackrest_data (data)", " from program", " 'pgbackrest --output=json info' (format text);", "", " select replace(temp_pgbackrest_data.data, E'\\n', '\\n')::jsonb", " into data", " from temp_pgbackrest_data;", "", " drop table temp_pgbackrest_data;", "", " return data;", "end $$ language plpgsql;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- Get last successful backup for each stanza", "--", "-- Requires the monitor.pgbackrest_info function.", "with stanza as", "(", " select data->'name' as name,", " data->'backup'->(", " jsonb_array_length(data->'backup') - 1) as last_backup,", " data->'archive'->(", " jsonb_array_length(data->'archive') - 1) as current_archive", " from jsonb_array_elements(monitor.pgbackrest_info()) as data", ")", "select name,", " to_timestamp(", " (last_backup->'timestamp'->>'stop')::numeric) as last_successful_backup,", " current_archive->>'max' as last_archived_wal", " from stanza;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " name | last_successful_backup | last_archived_wal ", "--------+------------------------+--------------------------", " \"demo\" | 2025-04-21 13:22:21+00 | 000000010000000000000005", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install jq" ], "cmd-extra" : "-y 2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --output=json --stanza=demo info | \\", " jq '.[0] | .backup[-1] | .timestamp.stop'" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "1745241741" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --output=json --stanza=demo info | \\", " jq '.[0] | .archive[-1] | .max'" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "\"000000010000000000000005\"" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-bundle" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres find /var/lib/pgbackrest/backup/demo/latest/ -type f | wc -l" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "5" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-block" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --annotation=source=\"demo backup\" \\", " --annotation=key=value --type=full backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-132237F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --set=20250421-132237F info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "annotation" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (16): 000000020000000000000007/000000020000000000000009", "", " full backup: 20250421-132237F", " timestamp start/stop: 2025-04-21 13:22:37+00 / 2025-04-21 13:22:39+00", " wal start/stop: 000000020000000000000008 / 000000020000000000000009", " lsn start/stop: 0/8000028 / 0/9000088", " database size: 22.0MB, database backup size: 22.0MB", " repo1: backup size: 2.9MB", " database list: postgres (5)", " annotation(s)", " key: value", " source: demo backup" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --set=20250421-132237F \\", " --annotation=key= --annotation=new_key=new_value annotate" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --set=20250421-132237F info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "annotation" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (16): 000000020000000000000007/000000020000000000000009", "", " full backup: 20250421-132237F", " timestamp start/stop: 2025-04-21 13:22:37+00 / 2025-04-21 13:22:39+00", " wal start/stop: 000000020000000000000008 / 000000020000000000000009", " lsn start/stop: 0/8000028 / 0/9000088", " database size: 22.0MB, database backup size: 22.0MB", " repo1: backup size: 2.9MB", " database list: postgres (5)", " annotation(s)", " new_key: new_value", " source: demo backup" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20250421-132216F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 975 lines of output]", "P00 INFO: repo1: remove expired backup 20250421-132234F", "P00 DETAIL: repo1: 16-1 archive retention on backup 20250421-132237F, start = 000000020000000000000008", "P00 INFO: repo1: 16-1 remove archive, start = 000000020000000000000007, stop = 000000020000000000000007", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-132241F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire full backup set 20250421-132216F|archive retention on backup 20250421-132241F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 11 lines of output]", "P00 INFO: repo1: expire full backup 20250421-132237F", "P00 INFO: repo1: remove expired backup 20250421-132237F", "P00 INFO: repo1: 16-1 remove archive, start = 000000020000000000000008, stop = 000000020000000000000009", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "1" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=1", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-132243F_20250421-132246D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire diff backup set 20250421-132243F_20250421-132246D" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 10 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=874-6ac36691 --log-level-console=info --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=1 --repo1-retention-full=2 --stanza=demo", "P00 INFO: repo1: expire diff backup set 20250421-132243F_20250421-132246D, 20250421-132243F_20250421-132247I", "P00 INFO: repo1: remove expired backup 20250421-132243F_20250421-132247I", "P00 INFO: repo1: remove expired backup 20250421-132243F_20250421-132246D", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-132243F_20250421-132249D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('generate WAL'); select pg_switch_wal(); \\", " select pg_create_restore_point('generate WAL'); select pg_switch_wal();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "new backup label" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 6 lines of output]", "P00 INFO: backup stop archive = 000000020000000000000017, lsn = 0/17000050", "P00 INFO: check archive for segment(s) 000000020000000000000016:000000020000000000000017", "P00 INFO: new backup label = 20250421-132243F_20250421-132252D", "P00 INFO: diff backup size = 8.3KB, file total = 963", "P00 INFO: backup command end: completed successfully", " [filtered 2 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-132243F_20250421-132252D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \\", " --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20250421-132243F_20250421-132249D|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: expire command begin 2.55.0: --exec-id=951-57bc7d40 --log-level-console=detail --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo", "P00 DETAIL: repo1: 16-1 archive retention on backup 20250421-132241F, start = 00000002000000000000000A, stop = 00000002000000000000000B", "P00 DETAIL: repo1: 16-1 archive retention on backup 20250421-132243F, start = 00000002000000000000000C, stop = 00000002000000000000000D", "P00 DETAIL: repo1: 16-1 archive retention on backup 20250421-132243F_20250421-132249D, start = 000000020000000000000012, stop = 000000020000000000000013", "P00 DETAIL: repo1: 16-1 archive retention on backup 20250421-132243F_20250421-132252D, start = 000000020000000000000016", "P00 INFO: repo1: 16-1 remove archive, start = 00000002000000000000000E, stop = 000000020000000000000011", "P00 INFO: repo1: 16-1 remove archive, start = 000000020000000000000014, stop = 000000020000000000000015", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --log-level-console=detail restore" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "demo\\/PG_VERSION - exists and matches backup|remove invalid files|rename global\\/pg_control" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 DETAIL: check '/var/lib/postgresql/16/demo' exists", "P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete", "P00 INFO: remove invalid files/links/paths from '/var/lib/postgresql/16/demo'", "P00 DETAIL: remove invalid file '/var/lib/postgresql/16/demo/backup_label.old'", "P00 DETAIL: remove invalid file '/var/lib/postgresql/16/demo/base/1/pg_internal.init'", " [filtered 14 lines of output]", "P01 DETAIL: restore file /var/lib/postgresql/16/demo/backup_label (260B, 0.00%) checksum c2b44a40bea599ae0e41169c76589711d996fc04", "P01 DETAIL: restore file /var/lib/postgresql/16/demo/pg_multixact/members/0000 - exists and matches backup (bundle 20250421-132243F/1/0, 8KB, 0.04%) checksum 0631457264ff7f8d5fb1edc2c0211992a67c73e6", "P01 DETAIL: restore file /var/lib/postgresql/16/demo/PG_VERSION - exists and matches backup (bundle 20250421-132243F/1/40, 3B, 0.04%) checksum 3596ea087bfdaf52380eae441077572ed289d657", "P01 DETAIL: restore file /var/lib/postgresql/16/demo/global/pg_filenode.map - exists and matches backup (bundle 20250421-132243F/1/64, 524B, 0.04%) checksum 3de878cf56cdb80345e88da11f91bc6d46f9f804", "P01 DETAIL: restore file /var/lib/postgresql/16/demo/global/6303 - exists and matches backup (bundle 20250421-132243F/1/232, 16KB, 0.11%) checksum 96cb6929d946c1f99979ee1454d0e507bce1356b", " [filtered 987 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test2;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test1_table (id int); \\", " insert into test1_table (id) values (1);\" test1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE TABLE", "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test2_table (id int); \\", " insert into test2_table (id) values (2);\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE TABLE", "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select oid from pg_database where datname = 'test1'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "32768" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/postgresql/16/demo/base/32768" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "7.4M\t/var/lib/postgresql/16/demo/base/32768" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-132243F_20250421-132301I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --set=20250421-132243F_20250421-132301I info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "database list" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 12 lines of output]", " repo1: backup size: 2.0MB", " backup reference list: 20250421-132243F, 20250421-132243F_20250421-132252D", " database list: postgres (5), test1 (32768), test2 (32769)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --db-include=test2 --type=immediate --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test2_table;\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " id ", "----", " 2", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test1_table;\" test1" ], "err-expect" : "2", "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "relation mapping file.*contains invalid data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL: relation mapping file \"base/32768/pg_filenode.map\" contains invalid data" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/postgresql/16/demo/base/32768" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "8.0K\t/var/lib/postgresql/16/demo/base/32768" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"drop database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "DROP DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select oid, datname from pg_database order by oid;\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "test2" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " oid | datname ", "-------+-----------", " 1 | template1", " 4 | template0", " 5 | postgres", " 32769 | test2", "(4 rows)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " create table important_table (message text); \\", " insert into important_table values ('Important Data'); \\", " commit; \\", " select * from important_table;\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 4 lines of output]", " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 1" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select current_timestamp\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "2025-04-21 13:23:13.75819+00" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 1" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " drop table important_table; \\", " commit; \\", " select * from important_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "BEGIN", "DROP TABLE", "COMMITERROR: relation \"important_table\" does not exist", "LINE 1: ...le important_table; commit; select * from important_...", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-132243F_20250421-132315I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "20250421-132243F_20250421-132315I" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 38 lines of output]", " backup reference total: 1 full, 1 diff", "", " incr backup: 20250421-132243F_20250421-132315I", " timestamp start/stop: 2025-04-21 13:23:15+00 / 2025-04-21 13:23:16+00", " wal start/stop: 00000004000000000000001A / 00000004000000000000001A", " [filtered 2 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --set=20250421-132243F_20250421-132315I --target-timeline=current \\", " --type=time \"--target=2025-04-21 13:23:13.75819+00\" --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/log/postgresql/postgresql-16-demo.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery ended before configured recovery target was reached" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 13 lines of output]", "LOG: database system is ready to accept read-only connections", "LOG: redo done at 0/1A000100 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.02 s", "FATAL: recovery ended before configured recovery target was reached", "LOG: startup process (PID 1320) exited with exit code 1", "LOG: terminating any other active server processes", " [filtered 3 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --type=time \"--target=2025-04-21 13:23:13.75819+00\" \\", " --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/log/postgresql/postgresql-16-demo.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/postgresql/16/demo/postgresql.auto.conf" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery_target_time" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 9 lines of output]", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:23:18", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "recovery_target_time = '2025-04-21 13:23:13.75819+00'", "recovery_target_action = 'promote'" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/postgresql/postgresql-16-demo.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery stopping before|last completed transaction|starting point-in-time recovery" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 4 lines of output]", "LOG: database system was interrupted; last known up at 2025-04-21 13:23:02 UTC", "LOG: restored log file \"00000004.history\" from archive", "LOG: starting point-in-time recovery to 2025-04-21 13:23:13.75819+00", "LOG: starting backup recovery with redo LSN 0/19000028, checkpoint LSN 0/19000060, on timeline ID 3", "LOG: restored log file \"00000004.history\" from archive", " [filtered 5 lines of output]", "LOG: database system is ready to accept read-only connections", "LOG: restored log file \"00000004000000000000001A\" from archive", "LOG: recovery stopping before commit of transaction 740, time 2025-04-21 13:23:15.21962+00", "LOG: redo done at 0/19026050 system usage: CPU: user: 0.00 s, system: 0.01 s, elapsed: 0.12 s", "LOG: last completed transaction was at log time 2025-04-21 13:23:12.423262+00", "LOG: restored log file \"000000040000000000000019\" from archive", "LOG: selected new timeline ID: 5", " [filtered 5 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stop" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stop command begin 2.55.0: --exec-id=1442-2351e0cf --log-level-console=info --no-log-timestamp --stanza=demo", "P00 INFO: stop command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=1 \\", " --log-level-console=info stanza-delete" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-delete command begin 2.55.0: --exec-id=1449-7a2289ac --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo=1 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-delete command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo2-azure-account" : { "value" : "pgbackrest" }, "repo2-azure-container" : { "value" : "demo-container" }, "repo2-azure-key" : { "value" : "YXpLZXk=" }, "repo2-path" : { "value" : "/demo-repo" }, "repo2-retention-full" : { "value" : "4" }, "repo2-type" : { "value" : "azure" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "repo2-azure-account=pgbackrest", "repo2-azure-container=demo-container", "repo2-azure-key=YXpLZXk=", "repo2-path=/demo-repo", "repo2-retention-full=4", "repo2-type=azure", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo \"172.17.0.2 pgbackrest.blob.core.windows.net\" | tee -a /etc/hosts" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres bash -c 'export AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1;az storage container create -n demo-container \\", " --connection-string \"DefaultEndpointsProtocol=https;AccountName=pgbackrest;AccountKey=YXpLZXk=\" \\", " 2>&1'" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.55.0: --exec-id=1520-adfe4b22 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo2-type=azure --stanza=demo", "P00 INFO: stanza-create for stanza 'demo' on repo1", "P00 INFO: stanza-create for stanza 'demo' on repo2", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=2 \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.55.0: --exec-id=1528-be60f53e --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo=2 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-block --repo1-bundle --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo2-type=azure --stanza=demo --start-fast", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000005000000000000001B, lsn = 0/1B000028", " [filtered 3 lines of output]", "P00 INFO: check archive for segment(s) 00000005000000000000001B:00000005000000000000001B", "P00 INFO: new backup label = 20250421-132331F", "P00 INFO: full backup size = 29.1MB, file total = 1265", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=1528-be60f53e --log-level-console=info --no-log-timestamp --repo=2 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo2-type=azure --stanza=demo" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo3-path" : { "value" : "/demo-repo" }, "repo3-retention-full" : { "value" : "4" }, "repo3-s3-bucket" : { "value" : "demo-bucket" }, "repo3-s3-endpoint" : { "value" : "s3.us-east-1.amazonaws.com" }, "repo3-s3-key" : { "value" : "accessKey1" }, "repo3-s3-key-secret" : { "value" : "verySecretKey1" }, "repo3-s3-region" : { "value" : "us-east-1" }, "repo3-type" : { "value" : "s3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "repo2-azure-account=pgbackrest", "repo2-azure-container=demo-container", "repo2-azure-key=YXpLZXk=", "repo2-path=/demo-repo", "repo2-retention-full=4", "repo2-type=azure", "repo3-path=/demo-repo", "repo3-retention-full=4", "repo3-s3-bucket=demo-bucket", "repo3-s3-endpoint=s3.us-east-1.amazonaws.com", "repo3-s3-key=accessKey1", "repo3-s3-key-secret=verySecretKey1", "repo3-s3-region=us-east-1", "repo3-type=s3", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo \"172.17.0.3 demo-bucket.s3.us-east-1.amazonaws.com s3.us-east-1.amazonaws.com\" | tee -a /etc/hosts" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc --insecure alias set s3 https://127.0.0.1 accessKey1 verySecretKey1" ], "host" : "s3-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc --insecure mb --with-versioning s3/demo-bucket" ], "host" : "s3-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 4 lines of output]", "P00 INFO: stanza 'demo' already exists on repo2 and is valid", "P00 INFO: stanza-create for stanza 'demo' on repo3", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.55.0: --exec-id=1577-7000e92d --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo=3 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-block --repo1-bundle --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo --start-fast", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000005000000000000001D, lsn = 0/1D000028", " [filtered 3 lines of output]", "P00 INFO: check archive for segment(s) 00000005000000000000001D:00000005000000000000001D", "P00 INFO: new backup label = 20250421-132342F", "P00 INFO: full backup size = 29.1MB, file total = 1265", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=1577-7000e92d --log-level-console=info --no-log-timestamp --repo=3 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select date_trunc('seconds', current_timestamp)\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "2025-04-21 13:23:49+00" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "process-max" : { "value" : "4" }, "repo4-bundle" : { "value" : "y" }, "repo4-path" : { "value" : "/demo-repo" }, "repo4-sftp-host" : { "value" : "sftp-server" }, "repo4-sftp-host-key-hash-type" : { "value" : "sha1" }, "repo4-sftp-host-user" : { "value" : "pgbackrest" }, "repo4-sftp-private-key-file" : { "value" : "/var/lib/postgresql/.ssh/id_rsa_sftp" }, "repo4-sftp-public-key-file" : { "value" : "/var/lib/postgresql/.ssh/id_rsa_sftp.pub" }, "repo4-type" : { "value" : "sftp" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "process-max=4", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "repo2-azure-account=pgbackrest", "repo2-azure-container=demo-container", "repo2-azure-key=YXpLZXk=", "repo2-path=/demo-repo", "repo2-retention-full=4", "repo2-type=azure", "repo3-path=/demo-repo", "repo3-retention-full=4", "repo3-s3-bucket=demo-bucket", "repo3-s3-endpoint=s3.us-east-1.amazonaws.com", "repo3-s3-key=accessKey1", "repo3-s3-key-secret=verySecretKey1", "repo3-s3-region=us-east-1", "repo3-type=s3", "repo4-bundle=y", "repo4-path=/demo-repo", "repo4-sftp-host=sftp-server", "repo4-sftp-host-key-hash-type=sha1", "repo4-sftp-host-user=pgbackrest", "repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp", "repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub", "repo4-type=sftp", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa_sftp \\", " -t rsa -b 4096 -N \"\" -m PEM" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "id -u pgbackrest > /dev/null 2>&1 || adduser --disabled-password --gecos \"\" pgbackrest" ], "host" : "sftp-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mkdir -m 750 -p /demo-repo && chown pgbackrest /demo-repo" ], "host" : "sftp-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest mkdir -m 750 -p /home/pgbackrest/.ssh" ], "host" : "sftp-server", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(sudo ssh root@pg-primary cat /var/lib/postgresql/.ssh/id_rsa_sftp.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "sftp-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "ssh-keyscan -H sftp-server >> /var/lib/postgresql/.ssh/known_hosts 2>/dev/null" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "postgres" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 6 lines of output]", "P00 INFO: stanza 'demo' already exists on repo3 and is valid", "P00 INFO: stanza-create for stanza 'demo' on repo4", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=4 \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.55.0: --exec-id=1658-f71182f2 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --process-max=4 --repo=4 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-block --repo1-bundle --repo4-bundle --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --stanza=demo --start-fast", "P00 WARN: option 'repo4-retention-full' is not set for 'repo4-retention-full-type=count', the repository may run out of space", " HINT: to retain full backups indefinitely (without warning), set option 'repo4-retention-full' to the maximum.", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000005000000000000001E, lsn = 0/1E000028", " [filtered 3 lines of output]", "P00 INFO: check archive for segment(s) 00000005000000000000001E:00000005000000000000001F", "P00 INFO: new backup label = 20250421-132353F", "P00 INFO: full backup size = 29.1MB, file total = 1265", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=1658-f71182f2 --log-level-console=info --no-log-timestamp --repo=4 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --stanza=demo", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo5-gcs-bucket" : { "value" : "demo-bucket" }, "repo5-gcs-key" : { "value" : "/etc/pgbackrest/gcs-key.json" }, "repo5-path" : { "value" : "/demo-repo" }, "repo5-type" : { "value" : "gcs" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "process-max=4", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "repo2-azure-account=pgbackrest", "repo2-azure-container=demo-container", "repo2-azure-key=YXpLZXk=", "repo2-path=/demo-repo", "repo2-retention-full=4", "repo2-type=azure", "repo3-path=/demo-repo", "repo3-retention-full=4", "repo3-s3-bucket=demo-bucket", "repo3-s3-endpoint=s3.us-east-1.amazonaws.com", "repo3-s3-key=accessKey1", "repo3-s3-key-secret=verySecretKey1", "repo3-s3-region=us-east-1", "repo3-type=s3", "repo4-bundle=y", "repo4-path=/demo-repo", "repo4-sftp-host=sftp-server", "repo4-sftp-host-key-hash-type=sha1", "repo4-sftp-host-user=pgbackrest", "repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp", "repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub", "repo4-type=sftp", "repo5-gcs-bucket=demo-bucket", "repo5-gcs-key=/etc/pgbackrest/gcs-key.json", "repo5-path=/demo-repo", "repo5-type=gcs", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 1" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 stanza-delete" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "missing stanza data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: error (missing stanza data)", " cipher: none" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc ls --versions s3/demo-bucket/demo-repo/backup/demo/backup.info" ], "cmd-extra" : "--insecure", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup\\.info$" ] }, "host" : "s3-server", "load-env" : true, "output" : true, "run-as-user" : "root" }, "type" : "exe", "value" : { "output" : [ "[2025-04-21 13:24:01 UTC] 0B STANDARD cc69bf9a-ef6e-4e9d-bdfe-14b8cc7cbe79 v3 DEL backup.info", "[2025-04-21 13:23:49 UTC] 1.0KiB STANDARD c0a96670-2dbe-42d0-bc9f-e285d9aae810 v2 PUT backup.info", "[2025-04-21 13:23:42 UTC] 372B STANDARD 078af0c6-1d22-436d-bd92-05af190f796a v1 PUT backup.info", "[2025-04-21 13:24:01 UTC] 0B STANDARD abb8661b-9150-4de2-8428-8adc361c35f3 v3 DEL backup.info.copy", "[2025-04-21 13:23:49 UTC] 1.0KiB STANDARD a533578d-eb2c-49a0-bfc6-7e5ae4c2de59 v2 PUT backup.info.copy" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 \\", " --repo-target-time=\"2025-04-21 13:23:49+00\" info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "full backup" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 5 lines of output]", " wal archive min/max (16): 00000005000000000000001C/00000005000000000000001D", "", " full backup: 20250421-132342F", " timestamp start/stop: 2025-04-21 13:23:42+00 / 2025-04-21 13:23:48+00", " wal start/stop: 00000005000000000000001D / 00000005000000000000001D", " repo3: backup set size: 3.9MB, backup size: 3.9MB" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 --delta \\", " --repo-target-time=\"2025-04-21 13:23:49+00\" --log-level-console=info restore" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " restore backup set " ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: restore command begin 2.55.0: --delta --exec-id=1738-70f39985 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --process-max=4 --repo=3 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo5-gcs-bucket=demo-bucket --repo5-gcs-key= --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo5-path=/demo-repo --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/postgresql/.ssh/id_rsa_sftp.pub --repo-target-time=\"2025-04-21 13:23:49+00\" --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --repo5-type=gcs --stanza=demo", "P00 INFO: repo3: restore backup set 20250421-132342F, recovery will start at 2025-04-21 13:23:42", "P00 INFO: remove invalid files/links/paths from '/var/lib/postgresql/16/demo'", "P00 INFO: write updated /var/lib/postgresql/16/demo/postgresql.auto.conf", " [filtered 2 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "repo1", "image" : "pgbackrest/doc:debian", "name" : "repository", "option" : "-m 512m", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.7" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo adduser --disabled-password --gecos \"\" pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install postgresql-client libxml2 libssh2-1" ], "cmd-extra" : "-y 2>&1", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest mkdir -m 750 /home/pgbackrest/.ssh" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh-keygen -f /home/pgbackrest/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@pg-primary cat /var/lib/postgresql/.ssh/id_rsa.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \\", " sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh postgres@pg-primary" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh pgbackrest@repository" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-host" : { "value" : "pg-primary" }, "pg1-path" : { "value" : "/var/lib/postgresql/16/demo" } }, "global" : { "log-timestamp" : { "value" : "n" }, "repo1-retention-full" : { "value" : "2" }, "start-fast" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/16/demo" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" } } }, "reset" : true }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo stanza-create" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: no prior backup exists, incr backup has been changed to full" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "process-max" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "timestamp start/stop" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: none", "", " db (current)", " wal archive min/max (16): 000000070000000000000023/000000070000000000000025", "", " full backup: 20250421-132437F", " timestamp start/stop: 2025-04-21 13:24:37+00 / 2025-04-21 13:24:40+00", " wal start/stop: 000000070000000000000023 / 000000070000000000000023", " database size: 29.1MB, database backup size: 29.1MB", " repo1: backup set size: 3.9MB, backup size: 3.9MB", "", " full backup: 20250421-132442F", " timestamp start/stop: 2025-04-21 13:24:42+00 / 2025-04-21 13:24:48+00", " wal start/stop: 000000070000000000000024 / 000000070000000000000025", " database size: 29.1MB, database backup size: 29.1MB", " repo1: backup set size: 3.9MB, backup size: 3.9MB" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for all stanzas" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg1: [StopError] raised from remote-0 ssh protocol on 'pg-primary': stop file exists for all stanzas", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed", " HINT: are all available clusters in recovery?" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: stop file already exists for all stanzas" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for stanza demo" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg1: [StopError] raised from remote-0 ssh protocol on 'pg-primary': stop file exists for stanza demo", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed", " HINT: are all available clusters in recovery?" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg2", "image" : "pgbackrest/doc:debian", "name" : "pg-standby", "option" : "-m 512m", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.8" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install postgresql-client libxml2 libssh2-1" ], "cmd-extra" : "-y 2>&1", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@pg-standby cat /var/lib/postgresql/.ssh/id_rsa.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \\", " sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh postgres@pg-standby" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh pgbackrest@repository" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/16/demo" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_createcluster 16 demo" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/postgresql/16/demo/postgresql.auto.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Do not edit this file manually!", "# It will be overwritten by the ALTER SYSTEM command.", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:22:24", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:22:54", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:23:18", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "# Removed by pgBackRest restore on 2025-04-21 13:24:04 # recovery_target_time = '2025-04-21 13:23:13.75819+00'", "# Removed by pgBackRest restore on 2025-04-21 13:24:04 # recovery_target_action = 'promote'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:24:04", "restore_command = 'pgbackrest --repo=3 --repo-target-time=\"2025-04-21 13:23:49+00\" --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:24:30", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:25:04", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "cat /root/postgresql.common.conf >> /etc/postgresql/16/demo/postgresql.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "file" : "/etc/postgresql/16/demo/postgresql.conf", "host" : "pg-standby", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "hot_standby" : { "value" : "on" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "hot_standby = on", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/log/postgresql/postgresql-16-demo.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/postgresql/postgresql-16-demo.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "entering standby mode|database system is ready to accept read only connections" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 3 lines of output]", "LOG: listening on Unix socket \"/var/run/postgresql/.s.PGSQL.5432\"", "LOG: database system was interrupted; last known up at 2025-04-21 13:24:42 UTC", "LOG: entering standby mode", "LOG: starting backup recovery with redo LSN 0/24000028, checkpoint LSN 0/24000060, on timeline ID 7", "LOG: restored log file \"00000007.history\" from archive", " [filtered 6 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table replicated_table (message text); \\", " insert into replicated_table values ('Important Data'); \\", " commit; \\", " select * from replicated_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 4 lines of output]", " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from replicated_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"replicated_table\" does not exist", "LINE 1: select * from replicated_table;", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select *, current_timestamp from pg_switch_wal()\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " pg_switch_wal | current_timestamp ", "---------------+-------------------------------", " 0/2601A838 | 2025-04-21 13:25:12.350044+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from replicated_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | current_timestamp ", "----------------+-------------------------------", " Important Data | 2025-04-21 13:25:18.355849+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "because this is a standby" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=578-68c225ee --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo1-host=repository --stanza=demo", "P00 INFO: check repo1 (standby)", "P00 INFO: switch wal not performed because this is a standby", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " create user replicator password 'jw8s0F4' replication\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"host replication replicator 172.17.0.8/32 md5\" \\", " >> /etc/postgresql/16/demo/pg_hba.conf'" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo reload" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "recovery-option" : { "value" : "primary_conninfo=host=172.17.0.6 port=5432 user=replicator" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"172.17.0.6:*:replication:replicator:jw8s0F4\" \\", " >> /var/lib/postgresql/.pgpass'" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres chmod 600 /var/lib/postgresql/.pgpass" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/postgresql/16/demo/postgresql.auto.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Do not edit this file manually!", "# It will be overwritten by the ALTER SYSTEM command.", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:22:24", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:22:54", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:23:18", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "# Removed by pgBackRest restore on 2025-04-21 13:24:04 # recovery_target_time = '2025-04-21 13:23:13.75819+00'", "# Removed by pgBackRest restore on 2025-04-21 13:24:04 # recovery_target_action = 'promote'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:24:04", "restore_command = 'pgbackrest --repo=3 --repo-target-time=\"2025-04-21 13:23:49+00\" --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:24:30", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:25:21", "primary_conninfo = 'host=172.17.0.6 port=5432 user=replicator'", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/log/postgresql/postgresql-16-demo.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo start" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/postgresql/postgresql-16-demo.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "started streaming WAL from primary" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 13 lines of output]", "LOG: consistent recovery state reached at 0/25000088", "LOG: database system is ready to accept read-only connections", "LOG: started streaming WAL from primary at 0/27000000 on timeline 7" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table stream_table (message text); \\", " insert into stream_table values ('Important Data'); \\", " commit; \\", " select *, current_timestamp from stream_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 4 lines of output]", " message | current_timestamp ", "----------------+-------------------------------", " Important Data | 2025-04-21 13:25:28.605823+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from stream_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | current_timestamp ", "----------------+-------------------------------", " Important Data | 2025-04-21 13:25:29.119293+00", "(1 row)" ] } }, { "key" : { "id" : "pgalt", "image" : "pgbackrest/doc:debian", "name" : "pg-alt", "option" : "-m 512m", "os" : "debian", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.9" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo apt-get install postgresql-client libxml2 libssh2-1" ], "cmd-extra" : "-y 2>&1", "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \\", " -t rsa -b 4096 -N \"\"" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@pg-alt cat /var/lib/postgresql/.ssh/id_rsa.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\", " echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\", " sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \\", " sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest ssh postgres@pg-alt" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh pgbackrest@repository" ], "cmd-extra" : "-o StrictHostKeyChecking=no", "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-alt", "option" : { "demo-alt" : { "pg1-path" : { "value" : "/var/lib/postgresql/16/demo" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo-alt]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "log-level-file=detail", "repo1-host=repository" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo-alt" : { "pg1-host" : { "value" : "pg-alt" }, "pg1-path" : { "value" : "/var/lib/postgresql/16/demo" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/16/demo", "", "[demo-alt]", "pg1-host=pg-alt", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/lib/postgresql/16/bin/initdb \\", " -D /var/lib/postgresql/16/demo -k -A peer" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_createcluster 16 demo" ], "host" : "pg-alt", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "Configuring already existing cluster (configuration: /etc/postgresql/16/demo, data: /var/lib/postgresql/16/demo, owner: 102:103)", "Ver Cluster Port Status Owner Data directory Log file", "16 demo 5432 down postgres /var/lib/postgresql/16/demo /var/log/postgresql/postgresql-16-demo.log" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "cat /root/postgresql.common.conf >> /etc/postgresql/16/demo/postgresql.conf" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "file" : "/etc/postgresql/16/demo/postgresql.conf", "host" : "pg-alt", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo-alt archive-push %p'" }, "archive_mode" : { "value" : "on" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo-alt archive-push %p'", "archive_mode = on", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo restart" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo-alt --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-alt", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.55.0: --exec-id=350-4c3a4d5f --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo1-host=repository --stanza=demo-alt", "P00 INFO: stanza-create for stanza 'demo-alt' on repo1", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "check stanza | successfully archived to " ] }, "host" : "pg-alt", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=359-c12a2d8d --log-level-console=info --log-level-file=detail --no-log-timestamp --repo1-host=repository", "P00 INFO: check stanza 'demo-alt'", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo-alt/16-1/0000000100000000/000000010000000000000001-3c1c240bafc52d38daf4d168813a0bca920ab769.gz' on repo1", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "check stanza | successfully archived to " ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=1239-b5ee7e8c --log-level-console=info --no-log-timestamp --repo1-path=/var/lib/pgbackrest", "P00 INFO: check stanza 'demo'", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 000000070000000000000027 successfully archived to '/var/lib/pgbackrest/archive/demo/16-1/0000000700000000/000000070000000000000027-ca01f4409b28706fc8ce995286afd7c3daa2c3e3.gz' on repo1", "P00 INFO: check stanza 'demo-alt'", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 000000010000000000000002 successfully archived to '/var/lib/pgbackrest/archive/demo-alt/16-1/0000000100000000/000000010000000000000002-610d0c18ced4092a83df2dcdc171e191a92be9a2.gz' on repo1", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/16/demo", "recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'bogus'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo restart" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm -f /var/log/pgbackrest/demo-archive-push-async.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "WAL segment" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=2343-fa56562f --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --repo1-host=repository --stanza=demo", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 00000007000000000000002D successfully archived to '/var/lib/pgbackrest/archive/demo/16-1/0000000700000000/00000007000000000000002D-9b9ad0e1bb13f7f4499492eed7677a1653428a27.gz' on repo1", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " WAL file\\(s\\) to archive|pushed WAL file \\'0000000" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.55.0: [/var/lib/postgresql/16/demo/pg_wal] --archive-async --exec-id=2329-fb8679e6 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 1 WAL file(s) to archive: 000000070000000000000028", "P01 DETAIL: pushed WAL file '000000070000000000000028' to the archive", "P00 INFO: archive-push:async command end: completed successfully", "", "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.55.0: [/var/lib/postgresql/16/demo/pg_wal] --archive-async --exec-id=2347-65368df7 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 5 WAL file(s) to archive: 000000070000000000000029...00000007000000000000002D", "P01 DETAIL: pushed WAL file '000000070000000000000029' to the archive", "P02 DETAIL: pushed WAL file '00000007000000000000002A' to the archive", "P01 DETAIL: pushed WAL file '00000007000000000000002B' to the archive", "P02 DETAIL: pushed WAL file '00000007000000000000002C' to the archive", "P01 DETAIL: pushed WAL file '00000007000000000000002D' to the archive", "P00 INFO: archive-push:async command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 5" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "found [0-F]{24} in the .* archive" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-get:async command begin 2.55.0: [000000070000000000000024, 000000070000000000000025, 000000070000000000000026, 000000070000000000000027, 000000070000000000000028, 000000070000000000000029, 00000007000000000000002A, 00000007000000000000002B] --archive-async --exec-id=782-e7977f4c --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000070000000000000024...00000007000000000000002B", "P01 DETAIL: found 000000070000000000000024 in the repo1: 16-1 archive", "P02 DETAIL: found 000000070000000000000025 in the repo1: 16-1 archive", "P01 DETAIL: found 000000070000000000000026 in the repo1: 16-1 archive", "P02 DETAIL: found 000000070000000000000027 in the repo1: 16-1 archive", "P00 DETAIL: unable to find 000000070000000000000028 in the archive", "P00 INFO: archive-get:async command end: completed successfully", " [filtered 14 lines of output]", "P00 INFO: archive-get:async command begin 2.55.0: [000000070000000000000028, 000000070000000000000029, 00000007000000000000002A, 00000007000000000000002B, 00000007000000000000002C, 00000007000000000000002D, 00000007000000000000002E, 00000007000000000000002F] --archive-async --exec-id=825-0652b343 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000070000000000000028...00000007000000000000002F", "P01 DETAIL: found 000000070000000000000028 in the repo1: 16-1 archive", "P02 DETAIL: found 000000070000000000000029 in the repo1: 16-1 archive", "P01 DETAIL: found 00000007000000000000002A in the repo1: 16-1 archive", "P00 DETAIL: unable to find 00000007000000000000002B in the archive", "P00 INFO: archive-get:async command end: completed successfully", " [filtered 2 lines of output]", "P00 INFO: archive-get:async command begin 2.55.0: [00000007000000000000002B, 00000007000000000000002C, 00000007000000000000002D, 00000007000000000000002E, 00000007000000000000002F, 000000070000000000000030, 000000070000000000000031, 000000070000000000000032] --archive-async --exec-id=838-91151505 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/16/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 00000007000000000000002B...000000070000000000000032", "P02 DETAIL: found 00000007000000000000002C in the repo1: 16-1 archive", "P01 DETAIL: found 00000007000000000000002B in the repo1: 16-1 archive", "P02 DETAIL: found 00000007000000000000002D in the repo1: 16-1 archive", "P00 DETAIL: unable to find 00000007000000000000002E in the archive", "P00 INFO: archive-get:async command end: completed successfully", " [filtered 17 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'jw8s0F4'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg2-host" : { "value" : "pg-standby" }, "pg2-path" : { "value" : "/var/lib/postgresql/16/demo" } }, "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/16/demo", "pg2-host=pg-standby", "pg2-path=/var/lib/postgresql/16/demo", "", "[demo-alt]", "pg1-host=pg-alt", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup file pg-primary|replay on the standby" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000007000000000000002F, lsn = 0/2F000028", "P00 INFO: wait for replay on the standby to reach 0/2F000028", "P00 INFO: replay on the standby reached 0/2F000028", "P00 INFO: check archive for prior segment 00000007000000000000002E", "P01 DETAIL: backup file pg-primary:/var/lib/postgresql/16/demo/global/pg_control (8KB, 0.53%) checksum e76644f179dd23ad60eea0e6e5a1dba33c7832a0", "P01 DETAIL: match file from prior backup pg-primary:/var/lib/postgresql/16/demo/pg_logical/replorigin_checkpoint (8B, 0.53%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532", "P02 DETAIL: backup file pg-standby:/var/lib/postgresql/16/demo/base/5/1249 (464KB, 31.38%) checksum ad21eff1041d8672b2fbccf2b8e4af4c4d4cf7b2", " [filtered 1278 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 16 demo stop" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/lib/postgresql/17/bin/initdb \\", " -D /var/lib/postgresql/17/demo -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_createcluster 17 demo" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'cd /var/lib/postgresql && \\", " /usr/lib/postgresql/17/bin/pg_upgrade \\", " --old-bindir=/usr/lib/postgresql/16/bin \\", " --new-bindir=/usr/lib/postgresql/17/bin \\", " --old-datadir=/var/lib/postgresql/16/demo \\", " --new-datadir=/var/lib/postgresql/17/demo \\", " --old-options=\" -c config_file=/etc/postgresql/16/demo/postgresql.conf\" \\", " --new-options=\" -c config_file=/etc/postgresql/17/demo/postgresql.conf\"'" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Upgrade Complete" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 40 lines of output]", "Checking for extension updates ok", "", "Upgrade Complete", "----------------", "Optimizer statistics are not transferred by pg_upgrade.", " [filtered 3 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "cat /root/postgresql.common.conf >> /etc/postgresql/17/demo/postgresql.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "file" : "/etc/postgresql/17/demo/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/17/demo" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/17/demo", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/17/demo" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/postgresql/17/demo", "recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "spool-path=/var/spool/pgbackrest", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/postgresql/17/demo" }, "pg2-path" : { "value" : "/var/lib/postgresql/17/demo" } }, "global" : { "backup-standby" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/17/demo", "pg2-host=pg-standby", "pg2-path=/var/lib/postgresql/17/demo", "", "[demo-alt]", "pg1-host=pg-alt", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "backup-standby=n", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp /etc/postgresql/16/demo/pg_hba.conf \\", " /etc/postgresql/17/demo/pg_hba.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --no-online \\", " --log-level-console=info stanza-upgrade" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-upgrade command begin 2.55.0: --exec-id=2737-74c8e868 --log-level-console=info --log-level-file=detail --no-log-timestamp --no-online --pg1-path=/var/lib/postgresql/17/demo --repo1-host=repository --stanza=demo", "P00 INFO: stanza-upgrade for stanza 'demo' on repo1", "P00 INFO: stanza-upgrade command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 17 demo start" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_lsclusters" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_dropcluster 16 demo" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_dropcluster 16 demo" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_createcluster 17 demo" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg2: [DbConnectError] raised from remote-0 ssh protocol on 'pg-standby': unable to connect to 'dbname='postgres' port=5432': connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: No such file or directory", " \tIs the server running locally and accepting connections on that socket?" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/postgresql/17/demo/postgresql.conf", "host" : "pg-standby", "option" : { "hot_standby" : { "value" : "on" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "hot_standby = on" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo pg_ctlcluster 17 demo start" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-path=/var/lib/postgresql/17/demo", "pg2-host=pg-standby", "pg2-path=/var/lib/postgresql/17/demo", "", "[demo-alt]", "pg1-host=pg-alt", "pg1-path=/var/lib/postgresql/16/demo", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y" ] } } ] } }, "{\"os-type\":\"rhel\"}" : { "all" : { "user-guide" : [ { "key" : { "id" : "azure", "image" : "mcr.microsoft.com/azure-storage/azurite", "name" : "azure-server", "option" : "-v {[host-repo-path]}/doc/resource/fake-cert/azure-server.crt:/root/public.crt:ro -v {[host-repo-path]}/doc/resource/fake-cert/azure-server.key:/root/private.key:ro -e AZURITE_ACCOUNTS='pgbackrest:YXpLZXk='", "os" : "rhel", "param" : "azurite-blob --blobPort 443 --blobHost 0.0.0.0 --cert=/root/public.crt --key=/root/private.key", "update-hosts" : false }, "type" : "host", "value" : { "ip" : "172.17.0.2" } }, { "key" : { "id" : "s3", "image" : "minio/minio", "name" : "s3-server", "option" : "-v {[host-repo-path]}/doc/resource/fake-cert/s3-server.crt:/root/.minio/certs/public.crt:ro -v {[host-repo-path]}/doc/resource/fake-cert/s3-server.key:/root/.minio/certs/private.key:ro -e MINIO_REGION=us-east-1 -e MINIO_DOMAIN=s3.us-east-1.amazonaws.com -e MINIO_BROWSER=off -e MINIO_ACCESS_KEY=accessKey1 -e MINIO_SECRET_KEY=verySecretKey1", "os" : "rhel", "param" : "server /data --address :443", "update-hosts" : false }, "type" : "host", "value" : { "ip" : "172.17.0.3" } }, { "key" : { "id" : "sftp", "image" : "pgbackrest/doc:rhel", "name" : "sftp-server", "os" : "rhel", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.4" } }, { "key" : { "id" : "build", "image" : "pgbackrest/doc:rhel", "name" : "build", "os" : "rhel", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.5" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /build/pgbackrest-release-2.55.0" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp -r /pgbackrest/* /build/pgbackrest-release-2.55.0" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown -R vagrant /build" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install meson gcc postgresql13-devel openssl-devel \\", " libxml2-devel lz4-devel libzstd-devel bzip2-devel libyaml-devel libssh2-devel" ], "cmd-extra" : "-y 2>&1", "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "meson setup /build/pgbackrest /build/pgbackrest-release-2.55.0" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "ninja -C /build/pgbackrest" ], "host" : "build", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg1", "image" : "pgbackrest/doc:rhel", "name" : "pg-primary", "option" : "-m 512m", "os" : "rhel", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.6" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs libssh2" ], "cmd-extra" : "-y 2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.55.0 - General help", "", "Usage:", " pgbackrest [options] [command]", "", "Commands:", " annotate add or modify backup annotation", " archive-get get a WAL segment from the archive", " archive-push push a WAL segment to the archive", " backup backup a database cluster", " check check the configuration", " expire expire backups that exceed retention", " help get help", " info retrieve information about backups", " repo-get get a file from a repository", " repo-ls list files in a repository", " restore restore a database cluster", " server pgBackRest server", " server-ping ping pgBackRest server", " stanza-create create the required stanza data", " stanza-delete delete a stanza", " stanza-upgrade upgrade a stanza", " start allow pgBackRest processes to run", " stop stop pgBackRest processes from running", " verify verify contents of a repository", " version get version", "", "Use 'pgbackrest help [command]' for more information." ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/pgsql-13/bin/initdb \\", " -D /var/lib/pgsql/13/data -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "cat /root/postgresql.common.conf >> /var/lib/pgsql/13/data/postgresql.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "file" : "/var/lib/pgsql/13/data/postgresql.conf", "host" : "pg-primary", "option" : { "log_filename" : { "value" : "'postgresql.log'" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "log_filename = 'postgresql.log'" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/13/data" } }, "global" : { "log-timestamp" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres bash -c ' \\", " export PGBACKREST_LOG_PATH=/path/set/by/env && \\", " pgbackrest --log-level-console=error help backup log-path'" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "current\\: \\/path\\/set\\/by\\/env" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "pgBackRest 2.55.0 - 'backup' command - 'log-path' option help", "", "Path where log files are stored.", "", "The log path provides a location for pgBackRest to store log files. Note that", "if log-level-file=off then no log path is required.", "", "current: /path/set/by/env", "default: /var/log/pgbackrest" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/lib/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/var/lib/pgsql/13/data/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "log_filename = 'postgresql.log'", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl restart postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " create or replace function create_test_table(prefix int, scale int, data bool) returns void as \\$\\$ \\", " declare \\", " index int; \\", " begin \\", " for index in 1 .. scale loop \\", " execute 'create table test_' || prefix || '_' || index || ' (id int)'; \\", " \\", " if data then \\", " execute 'insert into test_' || prefix || '_' || index || ' values (' || (prefix * index) || ')'; \\", " end if; \\", " end loop; \\", " end \\$\\$ LANGUAGE plpgsql;\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global:archive-push" : { "compress-level" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-path=/var/lib/pgbackrest", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-cipher-pass" : { "value" : "zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO" }, "repo1-cipher-type" : { "value" : "aes-256-cbc" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.55.0: --exec-id=1132-b904d6ef --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-create for stanza 'demo' on repo1", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " successfully archived to " ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=1159-e5a4570b --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/13-1/0000000100000000/000000010000000000000001-422bb25a2f87163142f34c61d8545fb377c1275f.gz' on repo1", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "start-fast" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.55.0: --exec-id=1230-d6c8d558 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028", " [filtered 3 lines of output]", "P00 INFO: check archive for segment(s) 000000010000000000000002:000000010000000000000003", "P00 INFO: new backup label = 20250421-131256F", "P00 INFO: full backup size = 23.2MB, file total = 936", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=1230-d6c8d558 --log-level-console=info --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-131256F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "diff backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 7 lines of output]", "P00 INFO: check archive for segment(s) 000000010000000000000004:000000010000000000000005", "P00 INFO: new backup label = 20250421-131256F_20250421-131300D", "P00 INFO: diff backup size = 9.1KB, file total = 936", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=1289-be2b5ffd --log-level-console=info --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "(full|incr|diff) backup" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (13): 000000010000000000000001/000000010000000000000005", "", " full backup: 20250421-131256F", " timestamp start/stop: 2025-04-21 13:12:56+00 / 2025-04-21 13:12:58+00", " wal start/stop: 000000010000000000000002 / 000000010000000000000003", " database size: 23.2MB, database backup size: 23.2MB", " repo1: backup set size: 2.9MB, backup size: 2.9MB", "", " diff backup: 20250421-131256F_20250421-131300D", " timestamp start/stop: 2025-04-21 13:13:00+00 / 2025-04-21 13:13:01+00", " wal start/stop: 000000010000000000000004 / 000000010000000000000005", " database size: 23.2MB, database backup size: 9.1KB", " repo1: backup set size: 2.9MB, backup size: 832B", " backup reference total: 1 full" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm /var/lib/pgsql/13/data/global/pg_control" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "err-expect" : "1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl status postgresql-13.service" ], "err-expect" : "3", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "failed" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "postgresql-13.service - PostgreSQL 13 database server", " Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service, disabled)", " Active: failed (failed)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres find /var/lib/pgsql/13/data -mindepth 1 -delete" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p /var/lib/pgsql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cp -r /pgbackrest/doc/example/* \\", " /var/lib/pgsql/pgbackrest/doc/example" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- An example of monitoring pgBackRest from within PostgreSQL", "--", "-- Use copy to export data from the pgBackRest info command into the jsonb", "-- type so it can be queried directly by PostgreSQL.", "", "-- Create monitor schema", "create schema monitor;", "", "-- Get pgBackRest info in JSON format", "create function monitor.pgbackrest_info()", " returns jsonb AS $$", "declare", " data jsonb;", "begin", " -- Create a temp table to hold the JSON data", " create temp table temp_pgbackrest_data (data text);", "", " -- Copy data into the table directly from the pgBackRest info command", " copy temp_pgbackrest_data (data)", " from program", " 'pgbackrest --output=json info' (format text);", "", " select replace(temp_pgbackrest_data.data, E'\\n', '\\n')::jsonb", " into data", " from temp_pgbackrest_data;", "", " drop table temp_pgbackrest_data;", "", " return data;", "end $$ language plpgsql;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-- Get last successful backup for each stanza", "--", "-- Requires the monitor.pgbackrest_info function.", "with stanza as", "(", " select data->'name' as name,", " data->'backup'->(", " jsonb_array_length(data->'backup') - 1) as last_backup,", " data->'archive'->(", " jsonb_array_length(data->'archive') - 1) as current_archive", " from jsonb_array_elements(monitor.pgbackrest_info()) as data", ")", "select name,", " to_timestamp(", " (last_backup->'timestamp'->>'stop')::numeric) as last_successful_backup,", " current_archive->>'max' as last_archived_wal", " from stanza;" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -f \\", " /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " name | last_successful_backup | last_archived_wal ", "--------+------------------------+--------------------------", " \"demo\" | 2025-04-21 13:13:01+00 | 000000010000000000000005", "(1 row)" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-bundle" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres find /var/lib/pgbackrest/backup/demo/latest/ -type f | wc -l" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "5" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-block" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --annotation=source=\"demo backup\" \\", " --annotation=key=value --type=full backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-131317F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --set=20250421-131317F info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "annotation" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (13): 000000020000000000000007/000000020000000000000009", "", " full backup: 20250421-131317F", " timestamp start/stop: 2025-04-21 13:13:17+00 / 2025-04-21 13:13:19+00", " wal start/stop: 000000020000000000000008 / 000000020000000000000009", " lsn start/stop: 0/8000028 / 0/9000050", " database size: 23.2MB, database backup size: 23.2MB", " repo1: backup size: 2.9MB", " database list: postgres (13383)", " annotation(s)", " key: value", " source: demo backup" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --set=20250421-131317F \\", " --annotation=key= --annotation=new_key=new_value annotate" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --set=20250421-131317F info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "annotation" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: aes-256-cbc", "", " db (current)", " wal archive min/max (13): 000000020000000000000007/000000020000000000000009", "", " full backup: 20250421-131317F", " timestamp start/stop: 2025-04-21 13:13:17+00 / 2025-04-21 13:13:19+00", " wal start/stop: 000000020000000000000008 / 000000020000000000000009", " lsn start/stop: 0/8000028 / 0/9000050", " database size: 23.2MB, database backup size: 23.2MB", " repo1: backup size: 2.9MB", " database list: postgres (13383)", " annotation(s)", " new_key: new_value", " source: demo backup" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-full" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20250421-131256F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 948 lines of output]", "P00 INFO: repo1: remove expired backup 20250421-131313F", "P00 DETAIL: repo1: 13-1 archive retention on backup 20250421-131317F, start = 000000020000000000000008", "P00 INFO: repo1: 13-1 remove archive, start = 000000020000000000000007, stop = 000000020000000000000007", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-131321F" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=full \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire full backup set 20250421-131256F|archive retention on backup 20250421-131321F|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 11 lines of output]", "P00 INFO: repo1: expire full backup 20250421-131317F", "P00 INFO: repo1: remove expired backup 20250421-131317F", "P00 INFO: repo1: 13-1 remove archive, start = 000000020000000000000008, stop = 000000020000000000000009", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "1" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=1", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-131323F_20250421-131326D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "expire diff backup set 20250421-131323F_20250421-131326D" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 10 lines of output]", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=2288-640159d6 --log-level-console=info --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=1 --repo1-retention-full=2 --stanza=demo", "P00 INFO: repo1: expire diff backup set 20250421-131323F_20250421-131326D, 20250421-131323F_20250421-131328I", "P00 INFO: repo1: remove expired backup 20250421-131323F_20250421-131328I", "P00 INFO: repo1: remove expired backup 20250421-131323F_20250421-131326D", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo1-retention-diff" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-131323F_20250421-131330D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('generate WAL'); select pg_switch_wal(); \\", " select pg_create_restore_point('generate WAL'); select pg_switch_wal();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=diff \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "new backup label" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 6 lines of output]", "P00 INFO: backup stop archive = 000000020000000000000017, lsn = 0/17000050", "P00 INFO: check archive for segment(s) 000000020000000000000016:000000020000000000000017", "P00 INFO: new backup label = 20250421-131323F_20250421-131332D", "P00 INFO: diff backup size = 11.4KB, file total = 936", "P00 INFO: backup command end: completed successfully", " [filtered 2 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-131323F_20250421-131332D" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \\", " --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "archive retention on backup 20250421-131323F_20250421-131330D|remove archive" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: expire command begin 2.55.0: --exec-id=2478-d1622894 --log-level-console=detail --no-log-timestamp --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo", "P00 DETAIL: repo1: 13-1 archive retention on backup 20250421-131321F, start = 00000002000000000000000A, stop = 00000002000000000000000B", "P00 DETAIL: repo1: 13-1 archive retention on backup 20250421-131323F, start = 00000002000000000000000D, stop = 00000002000000000000000D", "P00 DETAIL: repo1: 13-1 archive retention on backup 20250421-131323F_20250421-131330D, start = 000000020000000000000012, stop = 000000020000000000000013", "P00 DETAIL: repo1: 13-1 archive retention on backup 20250421-131323F_20250421-131332D, start = 000000020000000000000016", "P00 INFO: repo1: 13-1 remove archive, start = 00000002000000000000000C, stop = 00000002000000000000000C", "P00 INFO: repo1: 13-1 remove archive, start = 00000002000000000000000E, stop = 000000020000000000000011", "P00 INFO: repo1: 13-1 remove archive, start = 000000020000000000000014, stop = 000000020000000000000015", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --log-level-console=detail restore" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "demo\\/PG_VERSION - exists and matches backup|remove invalid files|rename global\\/pg_control" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 DETAIL: check '/var/lib/pgsql/13/data' exists", "P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete", "P00 INFO: remove invalid files/links/paths from '/var/lib/pgsql/13/data'", "P00 DETAIL: remove invalid file '/var/lib/pgsql/13/data/backup_label.old'", "P00 DETAIL: remove invalid file '/var/lib/pgsql/13/data/base/13383/pg_internal.init'", " [filtered 981 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create database test2;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test1_table (id int); \\", " insert into test1_table (id) values (1);\" test1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"create table test2_table (id int); \\", " insert into test2_table (id) values (2);\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "INSERT 0 1" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select oid from pg_database where datname = 'test1'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "32768" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/pgsql/13/data/base/32768" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "7.8M\t/var/lib/pgsql/13/data/base/32768" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-131323F_20250421-131343I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo \\", " --set=20250421-131323F_20250421-131343I info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "database list" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 12 lines of output]", " repo1: backup size: 1.9MB", " backup reference list: 20250421-131323F, 20250421-131323F_20250421-131332D", " database list: postgres (13383), test1 (32768), test2 (32769)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --db-include=test2 --type=immediate --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test2_table;\" test2" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " id ", "----", " 2", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from test1_table;\" test1" ], "err-expect" : "2", "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "relation mapping file.*contains invalid data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "psql: error: connection to server on socket \"/run/postgresql/.s.PGSQL.5432\" failed: FATAL: relation mapping file \"base/32768/pg_filenode.map\" contains invalid data" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres du -sh /var/lib/pgsql/13/data/base/32768" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "8.0K\t/var/lib/pgsql/13/data/base/32768" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"drop database test1;\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "DROP DATABASE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select oid, datname from pg_database order by oid;\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "test2" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " oid | datname ", "-------+-----------", " 1 | template1", " 13382 | template0", " 13383 | postgres", " 32769 | test2", "(4 rows)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " create table important_table (message text); \\", " insert into important_table values ('Important Data'); \\", " commit; \\", " select * from important_table;\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 1" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select current_timestamp\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "2025-04-21 13:13:56.887384+00" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 1" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"begin; \\", " drop table important_table; \\", " commit; \\", " select * from important_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"important_table\" does not exist", "LINE 1: ...le important_table; commit; select * from important_...", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=incr backup" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "20250421-131323F_20250421-131358I" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "20250421-131323F_20250421-131358I" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 38 lines of output]", " backup reference total: 1 full, 1 diff", "", " incr backup: 20250421-131323F_20250421-131358I", " timestamp start/stop: 2025-04-21 13:13:58+00 / 2025-04-21 13:13:59+00", " wal start/stop: 00000004000000000000001A / 00000004000000000000001A", " [filtered 2 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --set=20250421-131323F_20250421-131358I --target-timeline=current \\", " --type=time \"--target=2025-04-21 13:13:56.887384+00\" --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/13/data/log/postgresql.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "err-expect" : "1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/13/data/log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery ended before configured recovery target was reached" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 11 lines of output]", "LOG: database system is ready to accept read only connections", "LOG: redo done at 0/1A000100", "FATAL: recovery ended before configured recovery target was reached", "LOG: startup process (PID 3443) exited with exit code 1", "LOG: terminating any other active server processes" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta \\", " --type=time \"--target=2025-04-21 13:13:56.887384+00\" \\", " --target-action=promote restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/13/data/log/postgresql.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/13/data/postgresql.auto.conf" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery_target_time" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 9 lines of output]", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:14:05", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "recovery_target_time = '2025-04-21 13:13:56.887384+00'", "recovery_target_action = 'promote'" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from important_table\"" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/13/data/log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "recovery stopping before|last completed transaction|starting point-in-time recovery" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 5 lines of output]", "LOG: database system was interrupted; last known up at 2025-04-21 13:13:43 UTC", "LOG: restored log file \"00000004.history\" from archive", "LOG: starting point-in-time recovery to 2025-04-21 13:13:56.887384+00", "LOG: restored log file \"00000004.history\" from archive", "LOG: restored log file \"000000040000000000000019\" from archive", " [filtered 2 lines of output]", "LOG: consistent recovery state reached at 0/19000100", "LOG: database system is ready to accept read only connections", "LOG: recovery stopping before commit of transaction 495, time 2025-04-21 13:13:58.415355+00", "LOG: redo done at 0/1901E348", "LOG: last completed transaction was at log time 2025-04-21 13:13:55.599557+00", "LOG: selected new timeline ID: 5", "LOG: archive recovery complete", "LOG: database system is ready to accept connections" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stop" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stop command begin 2.55.0: --exec-id=3734-6522fbe8 --log-level-console=info --no-log-timestamp --stanza=demo", "P00 INFO: stop command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=1 \\", " --log-level-console=info stanza-delete" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-delete command begin 2.55.0: --exec-id=3760-e53bdbcf --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo=1 --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo", "P00 INFO: stanza-delete command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo2-azure-account" : { "value" : "pgbackrest" }, "repo2-azure-container" : { "value" : "demo-container" }, "repo2-azure-key" : { "value" : "YXpLZXk=" }, "repo2-path" : { "value" : "/demo-repo" }, "repo2-retention-full" : { "value" : "4" }, "repo2-type" : { "value" : "azure" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "repo2-azure-account=pgbackrest", "repo2-azure-container=demo-container", "repo2-azure-key=YXpLZXk=", "repo2-path=/demo-repo", "repo2-retention-full=4", "repo2-type=azure", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo \"172.17.0.2 pgbackrest.blob.core.windows.net\" | tee -a /etc/hosts" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres bash -c 'export AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1;az storage container create -n demo-container \\", " --connection-string \"DefaultEndpointsProtocol=https;AccountName=pgbackrest;AccountKey=YXpLZXk=\" \\", " 2>&1'" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.55.0: --exec-id=3926-affd3ca0 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo2-type=azure --stanza=demo", "P00 INFO: stanza-create for stanza 'demo' on repo1", "P00 INFO: stanza-create for stanza 'demo' on repo2", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=2 \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.55.0: --exec-id=3953-68d03872 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo=2 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-block --repo1-bundle --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo2-type=azure --stanza=demo --start-fast", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000005000000000000001B, lsn = 0/1B000028", " [filtered 3 lines of output]", "P00 INFO: check archive for segment(s) 00000005000000000000001B:00000005000000000000001B", "P00 INFO: new backup label = 20250421-131423F", "P00 INFO: full backup size = 30.8MB, file total = 1229", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=3953-68d03872 --log-level-console=info --no-log-timestamp --repo=2 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo2-type=azure --stanza=demo" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo3-path" : { "value" : "/demo-repo" }, "repo3-retention-full" : { "value" : "4" }, "repo3-s3-bucket" : { "value" : "demo-bucket" }, "repo3-s3-endpoint" : { "value" : "s3.us-east-1.amazonaws.com" }, "repo3-s3-key" : { "value" : "accessKey1" }, "repo3-s3-key-secret" : { "value" : "verySecretKey1" }, "repo3-s3-region" : { "value" : "us-east-1" }, "repo3-type" : { "value" : "s3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "repo2-azure-account=pgbackrest", "repo2-azure-container=demo-container", "repo2-azure-key=YXpLZXk=", "repo2-path=/demo-repo", "repo2-retention-full=4", "repo2-type=azure", "repo3-path=/demo-repo", "repo3-retention-full=4", "repo3-s3-bucket=demo-bucket", "repo3-s3-endpoint=s3.us-east-1.amazonaws.com", "repo3-s3-key=accessKey1", "repo3-s3-key-secret=verySecretKey1", "repo3-s3-region=us-east-1", "repo3-type=s3", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo \"172.17.0.3 demo-bucket.s3.us-east-1.amazonaws.com s3.us-east-1.amazonaws.com\" | tee -a /etc/hosts" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc --insecure alias set s3 https://127.0.0.1 accessKey1 verySecretKey1" ], "host" : "s3-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc --insecure mb --with-versioning s3/demo-bucket" ], "host" : "s3-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 4 lines of output]", "P00 INFO: stanza 'demo' already exists on repo2 and is valid", "P00 INFO: stanza-create for stanza 'demo' on repo3", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.55.0: --exec-id=4076-d08c3169 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo=3 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-block --repo1-bundle --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo --start-fast", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000005000000000000001C, lsn = 0/1C000028", " [filtered 3 lines of output]", "P00 INFO: check archive for segment(s) 00000005000000000000001C:00000005000000000000001D", "P00 INFO: new backup label = 20250421-131433F", "P00 INFO: full backup size = 30.8MB, file total = 1229", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=4076-d08c3169 --log-level-console=info --no-log-timestamp --repo=3 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -Atc \"select date_trunc('seconds', current_timestamp)\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "2025-04-21 13:14:40+00" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "process-max" : { "value" : "4" }, "repo4-bundle" : { "value" : "y" }, "repo4-path" : { "value" : "/demo-repo" }, "repo4-sftp-host" : { "value" : "sftp-server" }, "repo4-sftp-host-key-hash-type" : { "value" : "sha1" }, "repo4-sftp-host-user" : { "value" : "pgbackrest" }, "repo4-sftp-private-key-file" : { "value" : "/var/lib/pgsql/.ssh/id_rsa_sftp" }, "repo4-sftp-public-key-file" : { "value" : "/var/lib/pgsql/.ssh/id_rsa_sftp.pub" }, "repo4-type" : { "value" : "sftp" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "process-max=4", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "repo2-azure-account=pgbackrest", "repo2-azure-container=demo-container", "repo2-azure-key=YXpLZXk=", "repo2-path=/demo-repo", "repo2-retention-full=4", "repo2-type=azure", "repo3-path=/demo-repo", "repo3-retention-full=4", "repo3-s3-bucket=demo-bucket", "repo3-s3-endpoint=s3.us-east-1.amazonaws.com", "repo3-s3-key=accessKey1", "repo3-s3-key-secret=verySecretKey1", "repo3-s3-region=us-east-1", "repo3-type=s3", "repo4-bundle=y", "repo4-path=/demo-repo", "repo4-sftp-host=sftp-server", "repo4-sftp-host-key-hash-type=sha1", "repo4-sftp-host-user=pgbackrest", "repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp", "repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub", "repo4-type=sftp", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -m 750 -p /var/lib/pgsql/.ssh" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres ssh-keygen -f /var/lib/pgsql/.ssh/id_rsa_sftp \\", " -t rsa -b 4096 -N \"\" -m PEM" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "id -u pgbackrest > /dev/null 2>&1 || adduser -n pgbackrest" ], "host" : "sftp-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mkdir -m 750 -p /demo-repo && chown pgbackrest /demo-repo" ], "host" : "sftp-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest mkdir -m 750 -p /home/pgbackrest/.ssh" ], "host" : "sftp-server", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "(sudo ssh root@pg-primary cat /var/lib/pgsql/.ssh/id_rsa_sftp.pub) | \\", " sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys" ], "host" : "sftp-server", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "ssh-keyscan -H sftp-server >> /var/lib/pgsql/.ssh/known_hosts 2>/dev/null" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "postgres" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 6 lines of output]", "P00 INFO: stanza 'demo' already exists on repo3 and is valid", "P00 INFO: stanza-create for stanza 'demo' on repo4", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=4 \\", " --log-level-console=info backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "no prior backup exists|full backup size" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: backup command begin 2.55.0: --exec-id=4309-3d23f2f1 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --process-max=4 --repo=4 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-block --repo1-bundle --repo4-bundle --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --stanza=demo --start-fast", "P00 WARN: option 'repo4-retention-full' is not set for 'repo4-retention-full-type=count', the repository may run out of space", " HINT: to retain full backups indefinitely (without warning), set option 'repo4-retention-full' to the maximum.", "P00 WARN: no prior backup exists, incr backup has been changed to full", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000005000000000000001E, lsn = 0/1E000028", " [filtered 3 lines of output]", "P00 INFO: check archive for segment(s) 00000005000000000000001E:00000005000000000000001F", "P00 INFO: new backup label = 20250421-131443F", "P00 INFO: full backup size = 30.8MB, file total = 1229", "P00 INFO: backup command end: completed successfully", "P00 INFO: expire command begin 2.55.0: --exec-id=4309-3d23f2f1 --log-level-console=info --no-log-timestamp --repo=4 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo2-retention-full=4 --repo3-retention-full=4 --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --stanza=demo", "P00 INFO: expire command end: completed successfully" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "repo5-gcs-bucket" : { "value" : "demo-bucket" }, "repo5-gcs-key" : { "value" : "/etc/pgbackrest/gcs-key.json" }, "repo5-path" : { "value" : "/demo-repo" }, "repo5-type" : { "value" : "gcs" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "process-max=4", "repo1-block=y", "repo1-bundle=y", "repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO", "repo1-cipher-type=aes-256-cbc", "repo1-path=/var/lib/pgbackrest", "repo1-retention-diff=2", "repo1-retention-full=2", "repo2-azure-account=pgbackrest", "repo2-azure-container=demo-container", "repo2-azure-key=YXpLZXk=", "repo2-path=/demo-repo", "repo2-retention-full=4", "repo2-type=azure", "repo3-path=/demo-repo", "repo3-retention-full=4", "repo3-s3-bucket=demo-bucket", "repo3-s3-endpoint=s3.us-east-1.amazonaws.com", "repo3-s3-key=accessKey1", "repo3-s3-key-secret=verySecretKey1", "repo3-s3-region=us-east-1", "repo3-type=s3", "repo4-bundle=y", "repo4-path=/demo-repo", "repo4-sftp-host=sftp-server", "repo4-sftp-host-key-hash-type=sha1", "repo4-sftp-host-user=pgbackrest", "repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp", "repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub", "repo4-type=sftp", "repo5-gcs-bucket=demo-bucket", "repo5-gcs-key=/etc/pgbackrest/gcs-key.json", "repo5-path=/demo-repo", "repo5-type=gcs", "start-fast=y", "", "[global:archive-push]", "compress-level=3" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 1" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 stanza-delete" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "missing stanza data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: error (missing stanza data)", " cipher: none" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "mc ls --versions s3/demo-bucket/demo-repo/backup/demo/backup.info" ], "cmd-extra" : "--insecure", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup\\.info$" ] }, "host" : "s3-server", "load-env" : true, "output" : true, "run-as-user" : "root" }, "type" : "exe", "value" : { "output" : [ "[2025-04-21 13:14:52 UTC] 0B STANDARD 87e00a49-cfe8-4978-947f-9a557f039513 v3 DEL backup.info", "[2025-04-21 13:14:40 UTC] 1.0KiB STANDARD 908ea7a5-a84f-4b0d-88cb-c8b17e6c0290 v2 PUT backup.info", "[2025-04-21 13:14:33 UTC] 372B STANDARD 149d2def-0871-48c7-ba6f-6bad83a9afd4 v1 PUT backup.info", "[2025-04-21 13:14:52 UTC] 0B STANDARD 05a26eec-7460-419f-9397-6444fae38507 v3 DEL backup.info.copy", "[2025-04-21 13:14:40 UTC] 1.0KiB STANDARD 4369ef03-d0bd-4e29-8342-03d757acba14 v2 PUT backup.info.copy" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 \\", " --repo-target-time=\"2025-04-21 13:14:40+00\" info" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "full backup" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 5 lines of output]", " wal archive min/max (13): 00000005000000000000001C/00000005000000000000001D", "", " full backup: 20250421-131433F", " timestamp start/stop: 2025-04-21 13:14:33+00 / 2025-04-21 13:14:39+00", " wal start/stop: 00000005000000000000001C / 00000005000000000000001D", " repo3: backup set size: 3.8MB, backup size: 3.8MB" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --repo=3 --delta \\", " --repo-target-time=\"2025-04-21 13:14:40+00\" --log-level-console=info restore" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " restore backup set " ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: restore command begin 2.55.0: --delta --exec-id=4541-34fb8277 --log-level-console=info --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --process-max=4 --repo=3 --repo2-azure-account= --repo2-azure-container=demo-container --repo2-azure-key= --repo1-cipher-pass= --repo1-cipher-type=aes-256-cbc --repo5-gcs-bucket=demo-bucket --repo5-gcs-key= --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo5-path=/demo-repo --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key= --repo3-s3-key-secret= --repo3-s3-region=us-east-1 --repo4-sftp-host=sftp-server --repo4-sftp-host-key-hash-type=sha1 --repo4-sftp-host-user=pgbackrest --repo4-sftp-private-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp --repo4-sftp-public-key-file=/var/lib/pgsql/.ssh/id_rsa_sftp.pub --repo-target-time=\"2025-04-21 13:14:40+00\" --repo2-type=azure --repo3-type=s3 --repo4-type=sftp --repo5-type=gcs --stanza=demo", "P00 INFO: repo3: restore backup set 20250421-131433F, recovery will start at 2025-04-21 13:14:33", "P00 INFO: remove invalid files/links/paths from '/var/lib/pgsql/13/data'", "P00 INFO: write updated /var/lib/pgsql/13/data/postgresql.auto.conf", " [filtered 2 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "repo1", "image" : "pgbackrest/doc:rhel", "name" : "repository", "option" : "-m 512m", "os" : "rhel", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.7" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo groupadd pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo adduser -gpgbackrest -n pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs libssh2" ], "cmd-extra" : "-y 2>&1", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/log/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 750 /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "repo1-path" : { "value" : "/var/lib/pgbackrest" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[global]", "repo1-path=/var/lib/pgbackrest" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-host" : { "value" : "pg-primary" }, "pg1-host-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "pg1-host-cert-file" : { "value" : "/etc/pgbackrest/cert/client.crt" }, "pg1-host-key-file" : { "value" : "/etc/pgbackrest/cert/client.key" }, "pg1-host-type" : { "value" : "tls" }, "pg1-path" : { "value" : "/var/lib/pgsql/13/data" } }, "global" : { "log-timestamp" : { "value" : "n" }, "repo1-retention-full" : { "value" : "2" }, "start-fast" : { "value" : "y" }, "tls-server-address" : { "value" : "*" }, "tls-server-auth" : { "value" : "pgbackrest-client=*" }, "tls-server-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "tls-server-cert-file" : { "value" : "/etc/pgbackrest/cert/server.crt" }, "tls-server-key-file" : { "value" : "/etc/pgbackrest/cert/server.key" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "tls-server-address=*", "tls-server-auth=pgbackrest-client=*", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/13/data" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" }, "repo1-host-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "repo1-host-cert-file" : { "value" : "/etc/pgbackrest/cert/client.crt" }, "repo1-host-key-file" : { "value" : "/etc/pgbackrest/cert/client.key" }, "repo1-host-type" : { "value" : "tls" }, "tls-server-address" : { "value" : "*" }, "tls-server-auth" : { "value" : "pgbackrest-client=demo" }, "tls-server-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "tls-server-cert-file" : { "value" : "/etc/pgbackrest/cert/server.crt" }, "tls-server-key-file" : { "value" : "/etc/pgbackrest/cert/server.key" } } }, "reset" : true }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "log-level-file=detail", "repo1-host=repository", "repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "repo1-host-cert-file=/etc/pgbackrest/cert/client.crt", "repo1-host-key-file=/etc/pgbackrest/cert/client.key", "repo1-host-type=tls", "tls-server-address=*", "tls-server-auth=pgbackrest-client=demo", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "mkdir -p -m 770 /etc/pgbackrest/cert && \\", " cp /pgbackrest/doc/resource/fake-cert/ca.crt \\", " /etc/pgbackrest/cert/ca.crt && \\", " \\", " openssl genrsa -out /etc/pgbackrest/cert/server.key 2048 2>&1 && \\", " chmod 600 /etc/pgbackrest/cert/server.key && \\", " openssl req -new -sha256 -nodes -out /etc/pgbackrest/cert/server.csr \\", " -key /etc/pgbackrest/cert/server.key -subj \"/CN=repository\" 2>&1 && \\", " openssl x509 -req -in /etc/pgbackrest/cert/server.csr \\", " -CA /etc/pgbackrest/cert/ca.crt \\", " -CAkey /pgbackrest/doc/resource/fake-cert/ca.key -CAcreateserial \\", " -out /etc/pgbackrest/cert/server.crt -days 9 2>&1 && \\", " \\", " openssl genrsa -out /etc/pgbackrest/cert/client.key 2048 2>&1 && \\", " chmod 600 /etc/pgbackrest/cert/client.key && \\", " openssl req -new -sha256 -nodes -out /etc/pgbackrest/cert/client.csr \\", " -key /etc/pgbackrest/cert/client.key -subj \"/CN=pgbackrest-client\" 2>&1 && \\", " openssl x509 -req -in /etc/pgbackrest/cert/client.csr \\", " -CA /etc/pgbackrest/cert/ca.crt \\", " -CAkey /pgbackrest/doc/resource/fake-cert/ca.key -CAcreateserial \\", " -out /etc/pgbackrest/cert/client.crt -days 9 2>&1 && \\", " \\", " chown -R pgbackrest /etc/pgbackrest/cert" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo '[Unit]' | tee /etc/systemd/system/pgbackrest.service && \\", " echo 'Description=pgBackRest Server' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'After=network.target' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'StartLimitIntervalSec=0' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '[Service]' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'Type=simple' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'Restart=always' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'RestartSec=1' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'User=pgbackrest' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStart=/usr/bin/pgbackrest server' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStartPost=/bin/sleep 3' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecReload=/bin/kill -HUP $MAINPID' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '[Install]' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'WantedBy=multi-user.target' | tee -a /etc/systemd/system/pgbackrest.service" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cat /etc/systemd/system/pgbackrest.service" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "[Unit]", "Description=pgBackRest Server", "After=network.target", "StartLimitIntervalSec=0", "", "[Service]", "Type=simple", "Restart=always", "RestartSec=1", "User=pgbackrest", "ExecStart=/usr/bin/pgbackrest server", "ExecStartPost=/bin/sleep 3", "ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"", "ExecReload=/bin/kill -HUP $MAINPID", "", "[Install]", "WantedBy=multi-user.target" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl enable pgbackrest" ], "cmd-extra" : "2>&1", "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start pgbackrest" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "mkdir -p -m 770 /etc/pgbackrest/cert && \\", " cp /pgbackrest/doc/resource/fake-cert/ca.crt \\", " /etc/pgbackrest/cert/ca.crt && \\", " \\", " openssl genrsa -out /etc/pgbackrest/cert/server.key 2048 2>&1 && \\", " chmod 600 /etc/pgbackrest/cert/server.key && \\", " openssl req -new -sha256 -nodes -out /etc/pgbackrest/cert/server.csr \\", " -key /etc/pgbackrest/cert/server.key -subj \"/CN=pg-primary\" 2>&1 && \\", " openssl x509 -req -in /etc/pgbackrest/cert/server.csr \\", " -CA /etc/pgbackrest/cert/ca.crt \\", " -CAkey /pgbackrest/doc/resource/fake-cert/ca.key -CAcreateserial \\", " -out /etc/pgbackrest/cert/server.crt -days 9 2>&1 && \\", " \\", " openssl genrsa -out /etc/pgbackrest/cert/client.key 2048 2>&1 && \\", " chmod 600 /etc/pgbackrest/cert/client.key && \\", " openssl req -new -sha256 -nodes -out /etc/pgbackrest/cert/client.csr \\", " -key /etc/pgbackrest/cert/client.key -subj \"/CN=pgbackrest-client\" 2>&1 && \\", " openssl x509 -req -in /etc/pgbackrest/cert/client.csr \\", " -CA /etc/pgbackrest/cert/ca.crt \\", " -CAkey /pgbackrest/doc/resource/fake-cert/ca.key -CAcreateserial \\", " -out /etc/pgbackrest/cert/client.crt -days 9 2>&1 && \\", " \\", " chown -R postgres /etc/pgbackrest/cert" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo '[Unit]' | tee /etc/systemd/system/pgbackrest.service && \\", " echo 'Description=pgBackRest Server' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'After=network.target' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'StartLimitIntervalSec=0' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '[Service]' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'Type=simple' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'Restart=always' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'RestartSec=1' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'User=postgres' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStart=/usr/bin/pgbackrest server' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStartPost=/bin/sleep 3' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecReload=/bin/kill -HUP $MAINPID' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '[Install]' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'WantedBy=multi-user.target' | tee -a /etc/systemd/system/pgbackrest.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cat /etc/systemd/system/pgbackrest.service" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "[Unit]", "Description=pgBackRest Server", "After=network.target", "StartLimitIntervalSec=0", "", "[Service]", "Type=simple", "Restart=always", "RestartSec=1", "User=postgres", "ExecStart=/usr/bin/pgbackrest server", "ExecStartPost=/bin/sleep 3", "ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"", "ExecReload=/bin/kill -HUP $MAINPID", "", "[Install]", "WantedBy=multi-user.target" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl enable pgbackrest" ], "cmd-extra" : "2>&1", "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo stanza-create" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: no prior backup exists, incr backup has been changed to full" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta restore" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "process-max" : { "value" : "3" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "tls-server-address=*", "tls-server-auth=pgbackrest-client=*", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest info" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "timestamp start/stop" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "stanza: demo", " status: ok", " cipher: none", "", " db (current)", " wal archive min/max (13): 000000070000000000000023/000000070000000000000025", "", " full backup: 20250421-131610F", " timestamp start/stop: 2025-04-21 13:16:10+00 / 2025-04-21 13:16:14+00", " wal start/stop: 000000070000000000000023 / 000000070000000000000023", " database size: 30.8MB, database backup size: 30.8MB", " repo1: backup set size: 3.8MB, backup size: 3.8MB", "", " full backup: 20250421-131615F", " timestamp start/stop: 2025-04-21 13:16:15+00 / 2025-04-21 13:16:19+00", " wal start/stop: 000000070000000000000024 / 000000070000000000000025", " database size: 30.8MB, database backup size: 30.8MB", " repo1: backup set size: 3.8MB, backup size: 3.8MB" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for all stanzas" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg1: [StopError] raised from remote-0 tls protocol on 'pg-primary': stop file exists for all stanzas", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed", " HINT: are all available clusters in recovery?" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest stop" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: stop file already exists for all stanzas" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo stop" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo backup" ], "err-expect" : "56", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "\\: stop file exists for stanza demo" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg1: [StopError] raised from remote-0 tls protocol on 'pg-primary': stop file exists for stanza demo", "P00 ERROR: [056]: unable to find primary cluster - cannot proceed", " HINT: are all available clusters in recovery?" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo start" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "id" : "pg2", "image" : "pgbackrest/doc:rhel", "name" : "pg-standby", "option" : "-m 512m", "os" : "rhel", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.8" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs libssh2" ], "cmd-extra" : "-y 2>&1", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/13/data" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" }, "repo1-host-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "repo1-host-cert-file" : { "value" : "/etc/pgbackrest/cert/client.crt" }, "repo1-host-key-file" : { "value" : "/etc/pgbackrest/cert/client.key" }, "repo1-host-type" : { "value" : "tls" }, "tls-server-address" : { "value" : "*" }, "tls-server-auth" : { "value" : "pgbackrest-client=demo" }, "tls-server-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "tls-server-cert-file" : { "value" : "/etc/pgbackrest/cert/server.crt" }, "tls-server-key-file" : { "value" : "/etc/pgbackrest/cert/server.key" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "log-level-file=detail", "repo1-host=repository", "repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "repo1-host-cert-file=/etc/pgbackrest/cert/client.crt", "repo1-host-key-file=/etc/pgbackrest/cert/client.key", "repo1-host-type=tls", "tls-server-address=*", "tls-server-auth=pgbackrest-client=demo", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "mkdir -p -m 770 /etc/pgbackrest/cert && \\", " cp /pgbackrest/doc/resource/fake-cert/ca.crt \\", " /etc/pgbackrest/cert/ca.crt && \\", " \\", " openssl genrsa -out /etc/pgbackrest/cert/server.key 2048 2>&1 && \\", " chmod 600 /etc/pgbackrest/cert/server.key && \\", " openssl req -new -sha256 -nodes -out /etc/pgbackrest/cert/server.csr \\", " -key /etc/pgbackrest/cert/server.key -subj \"/CN=pg-standby\" 2>&1 && \\", " openssl x509 -req -in /etc/pgbackrest/cert/server.csr \\", " -CA /etc/pgbackrest/cert/ca.crt \\", " -CAkey /pgbackrest/doc/resource/fake-cert/ca.key -CAcreateserial \\", " -out /etc/pgbackrest/cert/server.crt -days 9 2>&1 && \\", " \\", " openssl genrsa -out /etc/pgbackrest/cert/client.key 2048 2>&1 && \\", " chmod 600 /etc/pgbackrest/cert/client.key && \\", " openssl req -new -sha256 -nodes -out /etc/pgbackrest/cert/client.csr \\", " -key /etc/pgbackrest/cert/client.key -subj \"/CN=pgbackrest-client\" 2>&1 && \\", " openssl x509 -req -in /etc/pgbackrest/cert/client.csr \\", " -CA /etc/pgbackrest/cert/ca.crt \\", " -CAkey /pgbackrest/doc/resource/fake-cert/ca.key -CAcreateserial \\", " -out /etc/pgbackrest/cert/client.crt -days 9 2>&1 && \\", " \\", " chown -R postgres /etc/pgbackrest/cert" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo '[Unit]' | tee /etc/systemd/system/pgbackrest.service && \\", " echo 'Description=pgBackRest Server' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'After=network.target' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'StartLimitIntervalSec=0' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '[Service]' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'Type=simple' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'Restart=always' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'RestartSec=1' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'User=postgres' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStart=/usr/bin/pgbackrest server' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStartPost=/bin/sleep 3' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecReload=/bin/kill -HUP $MAINPID' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '[Install]' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'WantedBy=multi-user.target' | tee -a /etc/systemd/system/pgbackrest.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cat /etc/systemd/system/pgbackrest.service" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "[Unit]", "Description=pgBackRest Server", "After=network.target", "StartLimitIntervalSec=0", "", "[Service]", "Type=simple", "Restart=always", "RestartSec=1", "User=postgres", "ExecStart=/usr/bin/pgbackrest server", "ExecStartPost=/bin/sleep 3", "ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"", "ExecReload=/bin/kill -HUP $MAINPID", "", "[Install]", "WantedBy=multi-user.target" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl enable pgbackrest" ], "cmd-extra" : "2>&1", "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p -m 700 /var/lib/pgsql/13/data" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/13/data/postgresql.auto.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Do not edit this file manually!", "# It will be overwritten by the ALTER SYSTEM command.", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:13:06", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:13:37", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:14:05", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "# Removed by pgBackRest restore on 2025-04-21 13:14:55 # recovery_target_time = '2025-04-21 13:13:56.887384+00'", "# Removed by pgBackRest restore on 2025-04-21 13:14:55 # recovery_target_action = 'promote'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:14:55", "restore_command = 'pgbackrest --repo=3 --repo-target-time=\"2025-04-21 13:14:40+00\" --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:16:05", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:17:16", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "cat /root/postgresql.common.conf >> /var/lib/pgsql/13/data/postgresql.conf" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "file" : "/var/lib/pgsql/13/data/postgresql.conf", "host" : "pg-standby", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "hot_standby" : { "value" : "on" }, "log_filename" : { "value" : "'postgresql.log'" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "hot_standby = on", "log_filename = 'postgresql.log'", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/13/data/log/postgresql.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/13/data/log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "entering standby mode|database system is ready to accept read only connections" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 4 lines of output]", "LOG: listening on Unix socket \"/tmp/.s.PGSQL.5432\"", "LOG: database system was interrupted; last known up at 2025-04-21 13:16:15 UTC", "LOG: entering standby mode", "LOG: restored log file \"00000007.history\" from archive", "LOG: restored log file \"000000070000000000000024\" from archive", "LOG: redo starts at 0/24000028", "LOG: restored log file \"000000070000000000000025\" from archive", "LOG: consistent recovery state reached at 0/25000050", "LOG: database system is ready to accept read only connections" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table replicated_table (message text); \\", " insert into replicated_table values ('Important Data'); \\", " commit; \\", " select * from replicated_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message ", "----------------", " Important Data", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select * from replicated_table;\"" ], "err-expect" : "1", "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "does not exist" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ERROR: relation \"replicated_table\" does not exist", "LINE 1: select * from replicated_table;", " ^" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"select *, current_timestamp from pg_switch_wal()\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " pg_switch_wal | current_timestamp ", "---------------+-------------------------------", " 0/26017738 | 2025-04-21 13:17:23.254782+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from replicated_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | current_timestamp ", "----------------+-------------------------------", " Important Data | 2025-04-21 13:17:24.472161+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "because this is a standby" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=1181-83c0863f --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --stanza=demo", "P00 INFO: check repo1 (standby)", "P00 INFO: switch wal not performed because this is a standby", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " create user replicator password 'jw8s0F4' replication\";" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "CREATE ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"host replication replicator 172.17.0.8/32 md5\" \\", " >> /var/lib/pgsql/13/data/pg_hba.conf'" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl reload postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "recovery-option" : { "value" : "primary_conninfo=host=172.17.0.6 port=5432 user=replicator" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator", "", "[global]", "log-level-file=detail", "repo1-host=repository", "repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "repo1-host-cert-file=/etc/pgbackrest/cert/client.crt", "repo1-host-key-file=/etc/pgbackrest/cert/client.key", "repo1-host-type=tls", "tls-server-address=*", "tls-server-auth=pgbackrest-client=demo", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'echo \\", " \"172.17.0.6:*:replication:replicator:jw8s0F4\" \\", " >> /var/lib/pgsql/.pgpass'" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres chmod 600 /var/lib/pgsql/.pgpass" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/13/data/postgresql.auto.conf" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "# Do not edit this file manually!", "# It will be overwritten by the ALTER SYSTEM command.", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:13:06", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:13:37", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:14:05", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "# Removed by pgBackRest restore on 2025-04-21 13:14:55 # recovery_target_time = '2025-04-21 13:13:56.887384+00'", "# Removed by pgBackRest restore on 2025-04-21 13:14:55 # recovery_target_action = 'promote'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:14:55", "restore_command = 'pgbackrest --repo=3 --repo-target-time=\"2025-04-21 13:14:40+00\" --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:16:05", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'", "", "# Recovery settings generated by pgBackRest restore on 2025-04-21 13:17:30", "primary_conninfo = 'host=172.17.0.6 port=5432 user=replicator'", "restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'" ] } }, { "key" : { "file" : "/var/lib/pgsql/13/data/postgresql.conf", "host" : "pg-standby", "option" : { "hot_standby" : { "value" : "on" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "hot_standby = on", "log_filename = 'postgresql.log'", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm /var/lib/pgsql/13/data/log/postgresql.log" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-13.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/lib/pgsql/13/data/log/postgresql.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "started streaming WAL from primary" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 12 lines of output]", "LOG: database system is ready to accept read only connections", "LOG: restored log file \"000000070000000000000026\" from archive", "LOG: started streaming WAL from primary at 0/27000000 on timeline 7" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " begin; \\", " create table stream_table (message text); \\", " insert into stream_table values ('Important Data'); \\", " commit; \\", " select *, current_timestamp from stream_table\";" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | current_timestamp ", "----------------+-------------------------------", " Important Data | 2025-04-21 13:17:37.632395+00", "(1 row)" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select *, current_timestamp from stream_table\"" ], "highlight" : { "filter" : false, "filter-context" : 2, "list" : [ "Important Data" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " message | current_timestamp ", "----------------+-------------------------------", " Important Data | 2025-04-21 13:17:38.039114+00", "(1 row)" ] } }, { "key" : { "id" : "pgalt", "image" : "pgbackrest/doc:rhel", "name" : "pg-alt", "option" : "-m 512m", "os" : "rhel", "update-hosts" : true }, "type" : "host", "value" : { "ip" : "172.17.0.9" } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo yum install postgresql-libs libssh2" ], "cmd-extra" : "-y 2>&1", "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo scp build:/build/pgbackrest/src/pgbackrest /usr/bin" ], "cmd-extra" : "2>&1", "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 755 /usr/bin/pgbackrest" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 770 /var/log/pgbackrest" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/log/pgbackrest" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p /etc/pgbackrest/conf.d" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo touch /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chmod 640 /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-alt", "option" : { "demo-alt" : { "pg1-path" : { "value" : "/var/lib/pgsql/13/data" } }, "global" : { "log-level-file" : { "value" : "detail" }, "log-timestamp" : { "value" : "n" }, "repo1-host" : { "value" : "repository" }, "repo1-host-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "repo1-host-cert-file" : { "value" : "/etc/pgbackrest/cert/client.crt" }, "repo1-host-key-file" : { "value" : "/etc/pgbackrest/cert/client.key" }, "repo1-host-type" : { "value" : "tls" }, "tls-server-address" : { "value" : "*" }, "tls-server-auth" : { "value" : "pgbackrest-client=demo-alt" }, "tls-server-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "tls-server-cert-file" : { "value" : "/etc/pgbackrest/cert/server.crt" }, "tls-server-key-file" : { "value" : "/etc/pgbackrest/cert/server.key" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo-alt]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "log-level-file=detail", "repo1-host=repository", "repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "repo1-host-cert-file=/etc/pgbackrest/cert/client.crt", "repo1-host-key-file=/etc/pgbackrest/cert/client.key", "repo1-host-type=tls", "tls-server-address=*", "tls-server-auth=pgbackrest-client=demo-alt", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo-alt" : { "pg1-host" : { "value" : "pg-alt" }, "pg1-host-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "pg1-host-cert-file" : { "value" : "/etc/pgbackrest/cert/client.crt" }, "pg1-host-key-file" : { "value" : "/etc/pgbackrest/cert/client.key" }, "pg1-host-type" : { "value" : "tls" }, "pg1-path" : { "value" : "/var/lib/pgsql/13/data" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/13/data", "", "[demo-alt]", "pg1-host=pg-alt", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "tls-server-address=*", "tls-server-auth=pgbackrest-client=*", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "mkdir -p -m 770 /etc/pgbackrest/cert && \\", " cp /pgbackrest/doc/resource/fake-cert/ca.crt \\", " /etc/pgbackrest/cert/ca.crt && \\", " \\", " openssl genrsa -out /etc/pgbackrest/cert/server.key 2048 2>&1 && \\", " chmod 600 /etc/pgbackrest/cert/server.key && \\", " openssl req -new -sha256 -nodes -out /etc/pgbackrest/cert/server.csr \\", " -key /etc/pgbackrest/cert/server.key -subj \"/CN=pg-alt\" 2>&1 && \\", " openssl x509 -req -in /etc/pgbackrest/cert/server.csr \\", " -CA /etc/pgbackrest/cert/ca.crt \\", " -CAkey /pgbackrest/doc/resource/fake-cert/ca.key -CAcreateserial \\", " -out /etc/pgbackrest/cert/server.crt -days 9 2>&1 && \\", " \\", " openssl genrsa -out /etc/pgbackrest/cert/client.key 2048 2>&1 && \\", " chmod 600 /etc/pgbackrest/cert/client.key && \\", " openssl req -new -sha256 -nodes -out /etc/pgbackrest/cert/client.csr \\", " -key /etc/pgbackrest/cert/client.key -subj \"/CN=pgbackrest-client\" 2>&1 && \\", " openssl x509 -req -in /etc/pgbackrest/cert/client.csr \\", " -CA /etc/pgbackrest/cert/ca.crt \\", " -CAkey /pgbackrest/doc/resource/fake-cert/ca.key -CAcreateserial \\", " -out /etc/pgbackrest/cert/client.crt -days 9 2>&1 && \\", " \\", " chown -R postgres /etc/pgbackrest/cert" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "echo '[Unit]' | tee /etc/systemd/system/pgbackrest.service && \\", " echo 'Description=pgBackRest Server' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'After=network.target' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'StartLimitIntervalSec=0' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '[Service]' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'Type=simple' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'Restart=always' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'RestartSec=1' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'User=postgres' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStart=/usr/bin/pgbackrest server' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStartPost=/bin/sleep 3' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'ExecReload=/bin/kill -HUP $MAINPID' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo '[Install]' | tee -a /etc/systemd/system/pgbackrest.service && \\", " echo 'WantedBy=multi-user.target' | tee -a /etc/systemd/system/pgbackrest.service" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cat /etc/systemd/system/pgbackrest.service" ], "host" : "pg-alt", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "[Unit]", "Description=pgBackRest Server", "After=network.target", "StartLimitIntervalSec=0", "", "[Service]", "Type=simple", "Restart=always", "RestartSec=1", "User=postgres", "ExecStart=/usr/bin/pgbackrest server", "ExecStartPost=/bin/sleep 3", "ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"", "ExecReload=/bin/kill -HUP $MAINPID", "", "[Install]", "WantedBy=multi-user.target" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl enable pgbackrest" ], "cmd-extra" : "2>&1", "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start pgbackrest" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/pgsql-13/bin/initdb \\", " -D /var/lib/pgsql/13/data -k -A peer" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "cat /root/postgresql.common.conf >> /var/lib/pgsql/13/data/postgresql.conf" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "file" : "/var/lib/pgsql/13/data/postgresql.conf", "host" : "pg-alt", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo-alt archive-push %p'" }, "archive_mode" : { "value" : "on" }, "log_filename" : { "value" : "'postgresql.log'" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo-alt archive-push %p'", "archive_mode = on", "log_filename = 'postgresql.log'", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl restart postgresql-13.service" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-alt", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo-alt --log-level-console=info stanza-create" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-alt", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-create command begin 2.55.0: --exec-id=947-b37a53d9 --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --stanza=demo-alt", "P00 INFO: stanza-create for stanza 'demo-alt' on repo1", "P00 INFO: stanza-create command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "check stanza | successfully archived to " ] }, "host" : "pg-alt", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=974-2b58c025 --log-level-console=info --log-level-file=detail --no-log-timestamp --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls", "P00 INFO: check stanza 'demo-alt'", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo-alt/13-1/0000000100000000/000000010000000000000001-29488ff35f82cacada9829c78d94ee2e32ee1348.gz' on repo1", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "check stanza | successfully archived to " ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=1315-e00697ae --log-level-console=info --no-log-timestamp --repo1-path=/var/lib/pgbackrest", "P00 INFO: check stanza 'demo'", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 000000070000000000000027 successfully archived to '/var/lib/pgbackrest/archive/demo/13-1/0000000700000000/000000070000000000000027-169f61cb3767208eadc5ca574c2e239df78a7a19.gz' on repo1", "P00 INFO: check stanza 'demo-alt'", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 000000010000000000000002 successfully archived to '/var/lib/pgbackrest/archive/demo-alt/13-1/0000000100000000/000000010000000000000002-28405895feb2380d58e61593cfe240092dd889d0.gz' on repo1", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo mkdir -p -m 750 /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo chown postgres:postgres /var/spool/pgbackrest" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "repo1-host-cert-file=/etc/pgbackrest/cert/client.crt", "repo1-host-key-file=/etc/pgbackrest/cert/client.key", "repo1-host-type=tls", "spool-path=/var/spool/pgbackrest", "tls-server-address=*", "tls-server-auth=pgbackrest-client=demo", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "global" : { "archive-async" : { "value" : "y" }, "spool-path" : { "value" : "/var/spool/pgbackrest" } }, "global:archive-get" : { "process-max" : { "value" : "2" } }, "global:archive-push" : { "process-max" : { "value" : "2" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/13/data", "recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "repo1-host-cert-file=/etc/pgbackrest/cert/client.crt", "repo1-host-key-file=/etc/pgbackrest/cert/client.key", "repo1-host-type=tls", "spool-path=/var/spool/pgbackrest", "tls-server-address=*", "tls-server-auth=pgbackrest-client=demo", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'bogus'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl restart postgresql-13.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres rm -f /var/log/pgbackrest/demo-archive-push-async.log" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \" \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal(); \\", " select pg_create_restore_point('test async push'); select pg_switch_wal();\"" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "WAL segment" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: check command begin 2.55.0: --exec-id=5511-cb21831a --log-level-console=info --log-level-file=detail --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --stanza=demo", "P00 INFO: check repo1 configuration (primary)", "P00 INFO: check repo1 archive for WAL (primary)", "P00 INFO: WAL segment 00000007000000000000002D successfully archived to '/var/lib/pgbackrest/archive/demo/13-1/0000000700000000/00000007000000000000002D-4bd363f7546edd3efde7b1ba090b69f1040593dc.gz' on repo1", "P00 INFO: check command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ " WAL file\\(s\\) to archive|pushed WAL file \\'0000000" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.55.0: [/var/lib/pgsql/13/data/pg_wal] --archive-async --exec-id=5481-f44d1eeb --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --process-max=2 --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 1 WAL file(s) to archive: 000000070000000000000028", "P01 DETAIL: pushed WAL file '000000070000000000000028' to the archive", "P00 DETAIL: statistics: {\"socket.client\":{\"total\":1},\"socket.session\":{\"total\":1},\"tls.client\":{\"total\":1},\"tls.session\":{\"total\":1}}", "P00 INFO: archive-push:async command end: completed successfully", "", "-------------------PROCESS START-------------------", "P00 INFO: archive-push:async command begin 2.55.0: [/var/lib/pgsql/13/data/pg_wal] --archive-async --exec-id=5513-df50761d --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --process-max=2 --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: push 5 WAL file(s) to archive: 000000070000000000000029...00000007000000000000002D", "P02 DETAIL: pushed WAL file '00000007000000000000002A' to the archive", "P01 DETAIL: pushed WAL file '000000070000000000000029' to the archive", "P02 DETAIL: pushed WAL file '00000007000000000000002B' to the archive", "P01 DETAIL: pushed WAL file '00000007000000000000002C' to the archive", "P02 DETAIL: pushed WAL file '00000007000000000000002D' to the archive", "P00 DETAIL: statistics: {\"socket.client\":{\"total\":1},\"socket.session\":{\"total\":1},\"tls.client\":{\"total\":1},\"tls.session\":{\"total\":1}}", "P00 INFO: archive-push:async command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 5" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "found [0-F]{24} in the .* archive" ] }, "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "-------------------PROCESS START-------------------", "P00 INFO: archive-get:async command begin 2.55.0: [000000070000000000000024, 000000070000000000000025, 000000070000000000000026, 000000070000000000000027, 000000070000000000000028, 000000070000000000000029, 00000007000000000000002A, 00000007000000000000002B] --archive-async --exec-id=1711-e6e77f2e --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --process-max=2 --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000070000000000000024...00000007000000000000002B", "P01 DETAIL: found 000000070000000000000024 in the repo1: 13-1 archive", "P02 DETAIL: found 000000070000000000000025 in the repo1: 13-1 archive", "P02 DETAIL: found 000000070000000000000027 in the repo1: 13-1 archive", "P01 DETAIL: found 000000070000000000000026 in the repo1: 13-1 archive", "P00 DETAIL: unable to find 000000070000000000000028 in the archive", "P00 DETAIL: statistics: {\"socket.client\":{\"total\":1},\"socket.session\":{\"total\":1},\"tls.client\":{\"total\":1},\"tls.session\":{\"total\":1}}", " [filtered 31 lines of output]", "P00 INFO: archive-get:async command begin 2.55.0: [000000070000000000000028, 000000070000000000000029, 00000007000000000000002A, 00000007000000000000002B, 00000007000000000000002C, 00000007000000000000002D, 00000007000000000000002E, 00000007000000000000002F] --archive-async --exec-id=1762-650b709b --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/13/data --process-max=2 --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --spool-path=/var/spool/pgbackrest --stanza=demo", "P00 INFO: get 8 WAL file(s) from archive: 000000070000000000000028...00000007000000000000002F", "P02 DETAIL: found 000000070000000000000029 in the repo1: 13-1 archive", "P01 DETAIL: found 000000070000000000000028 in the repo1: 13-1 archive", "P02 DETAIL: found 00000007000000000000002A in the repo1: 13-1 archive", "P01 DETAIL: found 00000007000000000000002B in the repo1: 13-1 archive", "P02 DETAIL: found 00000007000000000000002C in the repo1: 13-1 archive", "P01 DETAIL: found 00000007000000000000002D in the repo1: 13-1 archive", "P00 DETAIL: unable to find 00000007000000000000002E in the archive", "P00 DETAIL: statistics: {\"socket.client\":{\"total\":1},\"socket.session\":{\"total\":1},\"tls.client\":{\"total\":1},\"tls.session\":{\"total\":1}}", " [filtered 7 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres psql -c \"alter user replicator password 'jw8s0F4'\"" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "ALTER ROLE" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg2-host" : { "value" : "pg-standby" }, "pg2-host-ca-file" : { "value" : "/etc/pgbackrest/cert/ca.crt" }, "pg2-host-cert-file" : { "value" : "/etc/pgbackrest/cert/client.crt" }, "pg2-host-key-file" : { "value" : "/etc/pgbackrest/cert/client.key" }, "pg2-host-type" : { "value" : "tls" }, "pg2-path" : { "value" : "/var/lib/pgsql/13/data" } }, "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/13/data", "pg2-host=pg-standby", "pg2-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg2-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg2-host-key-file=/etc/pgbackrest/cert/client.key", "pg2-host-type=tls", "pg2-path=/var/lib/pgsql/13/data", "", "[demo-alt]", "pg1-host=pg-alt", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "tls-server-address=*", "tls-server-auth=pgbackrest-client=*", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --log-level-console=detail backup" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "backup file pg-primary|replay on the standby" ] }, "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 2 lines of output]", "P00 INFO: execute non-exclusive backup start: backup begins after the requested immediate checkpoint completes", "P00 INFO: backup start archive = 00000007000000000000002F, lsn = 0/2F000028", "P00 INFO: wait for replay on the standby to reach 0/2F000028", "P00 INFO: replay on the standby reached 0/2F000028", "P00 INFO: check archive for prior segment 00000007000000000000002E", "P01 DETAIL: backup file pg-primary:/var/lib/pgsql/13/data/log/postgresql.log (11.2KB, 0.48%) checksum 0ab0ed392cd1eb096a240e6603b1acdcb8ca54e1", "P01 DETAIL: backup file pg-primary:/var/lib/pgsql/13/data/global/pg_control (8KB, 0.83%) checksum 7f9eedf2565b2097757a3f122e168488e41ea3fb", "P01 DETAIL: backup file pg-primary:/var/lib/pgsql/13/data/pg_hba.conf (4.5KB, 1.02%) checksum 65e54ae24bda87b2542351cb16a7fecc7e5aceeb", "P01 DETAIL: match file from prior backup pg-primary:/var/lib/pgsql/13/data/current_logfiles (26B, 1.03%) checksum 78a9f5c10960f0d91fcd313937469824861795a2", "P01 DETAIL: match file from prior backup pg-primary:/var/lib/pgsql/13/data/pg_logical/replorigin_checkpoint (8B, 1.03%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532", " [filtered 1243 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl stop postgresql-13.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres /usr/pgsql-14/bin/initdb \\", " -D /var/lib/pgsql/14/data -k -A peer" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sh -c 'cd /var/lib/pgsql && \\", " /usr/pgsql-14/bin/pg_upgrade \\", " --old-bindir=/usr/pgsql-13/bin \\", " --new-bindir=/usr/pgsql-14/bin \\", " --old-datadir=/var/lib/pgsql/13/data \\", " --new-datadir=/var/lib/pgsql/14/data \\", " --old-options=\" -c config_file=/var/lib/pgsql/13/data/postgresql.conf\" \\", " --new-options=\" -c config_file=/var/lib/pgsql/14/data/postgresql.conf\"'" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "Upgrade Complete" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ " [filtered 68 lines of output]", "Checking for extension updates ok", "", "Upgrade Complete", "----------------", "Optimizer statistics are not transferred by pg_upgrade.", " [filtered 4 lines of output]" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "cat /root/postgresql.common.conf >> /var/lib/pgsql/14/data/postgresql.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : "root" }, "type" : "exe" }, { "key" : { "file" : "/var/lib/pgsql/14/data/postgresql.conf", "host" : "pg-primary", "option" : { "archive_command" : { "value" : "'pgbackrest --stanza=demo archive-push %p'" }, "archive_mode" : { "value" : "on" }, "log_filename" : { "value" : "'postgresql.log'" }, "max_wal_senders" : { "value" : "3" }, "wal_level" : { "value" : "replica" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "archive_command = 'pgbackrest --stanza=demo archive-push %p'", "archive_mode = on", "log_filename = 'postgresql.log'", "max_wal_senders = 3", "wal_level = replica" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-primary", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/14/data" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/14/data", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "repo1-host-cert-file=/etc/pgbackrest/cert/client.crt", "repo1-host-key-file=/etc/pgbackrest/cert/client.key", "repo1-host-type=tls", "spool-path=/var/spool/pgbackrest", "tls-server-address=*", "tls-server-auth=pgbackrest-client=demo", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "pg-standby", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/14/data" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-path=/var/lib/pgsql/14/data", "recovery-option=primary_conninfo=host=172.17.0.6 port=5432 user=replicator", "", "[global]", "archive-async=y", "log-level-file=detail", "repo1-host=repository", "repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "repo1-host-cert-file=/etc/pgbackrest/cert/client.crt", "repo1-host-key-file=/etc/pgbackrest/cert/client.key", "repo1-host-type=tls", "spool-path=/var/spool/pgbackrest", "tls-server-address=*", "tls-server-auth=pgbackrest-client=demo", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key", "", "[global:archive-get]", "process-max=2", "", "[global:archive-push]", "process-max=2" ] } }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "demo" : { "pg1-path" : { "value" : "/var/lib/pgsql/14/data" }, "pg2-path" : { "value" : "/var/lib/pgsql/14/data" } }, "global" : { "backup-standby" : { "value" : "n" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/14/data", "pg2-host=pg-standby", "pg2-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg2-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg2-host-key-file=/etc/pgbackrest/cert/client.key", "pg2-host-type=tls", "pg2-path=/var/lib/pgsql/14/data", "", "[demo-alt]", "pg1-host=pg-alt", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "backup-standby=n", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "tls-server-address=*", "tls-server-auth=pgbackrest-client=*", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo cp /var/lib/pgsql/13/data/pg_hba.conf \\", " /var/lib/pgsql/14/data/pg_hba.conf" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --no-online \\", " --log-level-console=info stanza-upgrade" ], "highlight" : { "filter" : true, "filter-context" : 2, "list" : [ "completed successfully" ] }, "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 INFO: stanza-upgrade command begin 2.55.0: --exec-id=6025-fcfa8929 --log-level-console=info --log-level-file=detail --no-log-timestamp --no-online --pg1-path=/var/lib/pgsql/14/data --repo1-host=repository --repo1-host-ca-file=/etc/pgbackrest/cert/ca.crt --repo1-host-cert-file=/etc/pgbackrest/cert/client.crt --repo1-host-key-file=/etc/pgbackrest/cert/client.key --repo1-host-type=tls --stanza=demo", "P00 INFO: stanza-upgrade for stanza 'demo' on repo1", "P00 INFO: stanza-upgrade command end: completed successfully" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-14.service" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl status postgresql-14.service" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-primary", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm -rf /var/lib/pgsql/13/data" ], "host" : "pg-primary", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo rm -rf /var/lib/pgsql/13/data" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres mkdir -p -m 700 /usr/pgsql-14/bin" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo check" ], "host" : "repository", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe", "value" : { "output" : [ "P00 WARN: unable to check pg2: [DbConnectError] raised from remote-0 tls protocol on 'pg-standby': unable to connect to 'dbname='postgres' port=5432': could not connect to server: No such file or directory", " \tIs the server running locally and accepting", " \tconnections on Unix domain socket \"/run/postgresql/.s.PGSQL.5432\"?" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup" ], "host" : "repository", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo --type=standby restore" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/var/lib/pgsql/14/data/postgresql.conf", "host" : "pg-standby", "option" : { "hot_standby" : { "value" : "on" } } }, "type" : "cfg-postgresql", "value" : { "config" : [ "hot_standby = on" ] } }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo systemctl start postgresql-14.service" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres sleep 2" ], "host" : "pg-standby", "load-env" : true, "output" : false, "run-as-user" : null }, "type" : "exe" }, { "key" : { "bash-wrap" : true, "cmd" : [ "sudo -u postgres pgbackrest --stanza=demo check" ], "host" : "pg-standby", "load-env" : true, "output" : true, "run-as-user" : null }, "type" : "exe" }, { "key" : { "file" : "/etc/pgbackrest/pgbackrest.conf", "host" : "repository", "option" : { "global" : { "backup-standby" : { "value" : "y" } } } }, "type" : "cfg-pgbackrest", "value" : { "config" : [ "[demo]", "pg1-host=pg-primary", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/14/data", "pg2-host=pg-standby", "pg2-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg2-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg2-host-key-file=/etc/pgbackrest/cert/client.key", "pg2-host-type=tls", "pg2-path=/var/lib/pgsql/14/data", "", "[demo-alt]", "pg1-host=pg-alt", "pg1-host-ca-file=/etc/pgbackrest/cert/ca.crt", "pg1-host-cert-file=/etc/pgbackrest/cert/client.crt", "pg1-host-key-file=/etc/pgbackrest/cert/client.key", "pg1-host-type=tls", "pg1-path=/var/lib/pgsql/13/data", "", "[global]", "backup-standby=y", "process-max=3", "repo1-path=/var/lib/pgbackrest", "repo1-retention-full=2", "start-fast=y", "tls-server-address=*", "tls-server-auth=pgbackrest-client=*", "tls-server-ca-file=/etc/pgbackrest/cert/ca.crt", "tls-server-cert-file=/etc/pgbackrest/cert/server.crt", "tls-server-key-file=/etc/pgbackrest/cert/server.key" ] } } ] } } }