2016-06-02 17:10:24 +02:00
{
2019-01-02 22:04:47 +02:00
"default" : {
2016-06-02 17:10:24 +02:00
"all" : {
2020-03-26 23:14:53 +02:00
"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",
2021-08-23 12:52:51 +02:00
"os" : "u20",
2020-03-26 23:14:53 +02:00
"update-hosts" : true
},
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.8"
2020-03-26 23:14:53 +02:00
}
},
2020-10-05 17:51:45 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
"sudo apt-get update"
],
"host" : "pgbackrest-dev",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
2020-03-26 23:14:53 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
"sudo apt-get install rsync git devscripts build-essential valgrind lcov autoconf \\",
" autoconf-archive libssl-dev zlib1g-dev libxml2-dev libpq-dev pkg-config \\",
2021-02-08 16:08:16 +02:00
" libxml-checker-perl libyaml-perl libdbd-pg-perl liblz4-dev liblz4-tool \\",
2021-08-23 12:52:51 +02:00
" zstd libzstd-dev bzip2 libbz2-dev libyaml-dev"
2020-03-26 23:14:53 +02:00
],
"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"
},
2021-02-08 16:08:16 +02:00
{
"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"
},
2020-03-26 23:14:53 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
"pgbackrest/test/test.pl --vm=none --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" : [
2021-06-07 12:51:08 +02:00
"P00 INFO: test begin on x86_64 - log level info",
2021-08-23 12:52:51 +02:00
"P00 INFO: configure build",
2020-03-26 23:14:53 +02:00
"P00 INFO: builds required: bin",
2022-03-06 18:30:59 +02:00
"P00 INFO: 72 tests selected",
2020-03-26 23:14:53 +02:00
" ",
2022-03-06 18:30:59 +02:00
"P00 INFO: P1-T01/72 - vm=none, module=common, test=error",
" [filtered 69 lines of output]",
"P00 INFO: P1-T71/72 - vm=none, module=performance, test=type",
"P00 INFO: P1-T72/72 - vm=none, module=performance, test=storage",
2020-03-26 23:14:53 +02:00
"P00 INFO: DRY RUN COMPLETED SUCCESSFULLY"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-08-23 12:52:51 +02:00
"pgbackrest/test/test.pl --vm=none --vm-out --module=common --test=wait"
2020-03-26 23:14:53 +02:00
],
"cmd-extra" : "--no-log-timestamp",
"host" : "pgbackrest-dev",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
"P00 INFO: test begin on x86_64 - log level info",
2021-08-23 12:52:51 +02:00
"P00 INFO: autogenerate configure",
"P00 INFO: autogenerated version in configure.ac script: no changes",
"P00 INFO: autogenerated configure script: no changes",
"P00 INFO: autogenerate code",
2020-03-26 23:14:53 +02:00
"P00 INFO: cleanup old data",
"P00 INFO: builds required: none",
"P00 INFO: 1 test selected",
" ",
"P00 INFO: P1-T1/1 - vm=none, module=common, test=wait",
" ",
2021-02-08 16:08:16 +02:00
" run 1 - waitNew(), waitMore, and waitFree()",
2021-06-07 12:51:08 +02:00
" L0018 expect AssertError: assertion 'waitTime <= 999999000' failed",
2021-02-08 16:08:16 +02:00
" ",
2021-06-07 12:51:08 +02:00
" run 1/1 ------------- L0021 0ms wait",
" L0025 new wait",
" L0026 check remaining time",
" L0027 check wait time",
" L0028 check sleep time",
" L0029 check sleep prev time",
" L0030 no wait more",
" L0033 new wait = 0.2 sec",
" L0034 check remaining time",
" L0035 check wait time",
" L0036 check sleep time",
" L0037 check sleep prev time",
" L0038 check begin time",
" L0044 lower range check",
" L0045 upper range check",
" L0047 free wait",
" L0052 new wait = 1.1 sec",
" L0053 check wait time",
" L0054 check sleep time",
" L0055 check sleep prev time",
" L0056 check begin time",
" L0062 lower range check",
" L0063 upper range check",
" L0065 free wait",
2020-03-26 23:14:53 +02:00
" ",
" TESTS COMPLETED SUCCESSFULLY",
"",
"P00 INFO: P1-T1/1 - vm=none, module=common, test=wait",
2020-07-20 14:57:22 +02:00
"P00 INFO: tested modules have full coverage",
2020-03-26 23:14:53 +02:00
"P00 INFO: writing C coverage report",
"P00 INFO: TESTS COMPLETED SUCCESSFULLY"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-08-23 12:52:51 +02:00
"pgbackrest/test/test.pl --vm=none --module=postgres"
2020-03-26 23:14:53 +02:00
],
"cmd-extra" : "--no-log-timestamp",
"host" : "pgbackrest-dev",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
"P00 INFO: test begin on x86_64 - log level info",
2021-08-23 12:52:51 +02:00
"P00 INFO: autogenerate configure",
"P00 INFO: autogenerated version in configure.ac script: no changes",
"P00 INFO: autogenerated configure script: no changes",
"P00 INFO: autogenerate code",
2020-03-26 23:14:53 +02:00
"P00 INFO: cleanup old data",
"P00 INFO: builds required: 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",
2020-07-20 14:57:22 +02:00
"P00 INFO: tested modules have full coverage",
2020-03-26 23:14:53 +02:00
"P00 INFO: writing C coverage report",
"P00 INFO: TESTS COMPLETED SUCCESSFULLY"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-08-23 12:52:51 +02:00
"pgbackrest/test/test.pl --vm-build --vm=u20"
2020-03-26 23:14:53 +02:00
],
"cmd-extra" : "--no-log-timestamp",
"host" : "pgbackrest-dev",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
"P00 INFO: test begin on x86_64 - log level info",
2021-11-01 14:59:14 +02:00
"P00 INFO: Using cached pgbackrest/test:u20-base-20210930A image (7ffb73ceb9a2e3aad2cba7eb5c8e28fc3982db18) ...",
2021-08-23 12:52:51 +02:00
"P00 INFO: Building pgbackrest/test:u20-test image ...",
2020-03-26 23:14:53 +02:00
"P00 INFO: Build Complete"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-08-23 12:52:51 +02:00
"pgbackrest/test/test.pl --vm=u20 --module=mock --test=archive --run=2"
2020-03-26 23:14:53 +02:00
],
"cmd-extra" : "--no-log-timestamp",
"host" : "pgbackrest-dev",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
"P00 INFO: test begin on x86_64 - log level info",
2021-08-23 12:52:51 +02:00
"P00 INFO: autogenerate configure",
"P00 INFO: autogenerated version in configure.ac script: no changes",
"P00 INFO: autogenerated configure script: no changes",
"P00 INFO: autogenerate code",
2020-03-26 23:14:53 +02:00
"P00 INFO: cleanup old data and containers",
"P00 INFO: builds required: bin, bin host",
2021-08-23 12:52:51 +02:00
"P00 INFO: build bin for u20 (/home/vagrant/test/bin/u20)",
"P00 INFO: bin dependencies have changed, rebuilding",
2020-03-26 23:14:53 +02:00
"P00 INFO: build bin for none (/home/vagrant/test/bin/none)",
2021-08-23 12:52:51 +02:00
"P00 INFO: bin dependencies have changed, rebuilding",
2020-03-26 23:14:53 +02:00
"P00 INFO: 1 test selected",
" ",
2021-08-23 12:52:51 +02:00
"P00 INFO: P1-T1/1 - vm=u20, module=mock, test=archive, run=2",
2020-03-26 23:14:53 +02:00
"P00 INFO: no code modules had all tests run required for coverage",
"P00 INFO: TESTS COMPLETED SUCCESSFULLY"
]
}
}
],
2016-06-02 17:10:24 +02:00
"user-guide" : [
2020-07-20 14:57:22 +02:00
{
"key" : {
"id" : "azure",
"image" : "mcr.microsoft.com/azure-storage/azurite",
"name" : "azure-server",
2021-08-23 12:52:51 +02:00
"option" : "-m 128m -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='",
2020-07-20 14:57:22 +02:00
"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"
}
},
2019-06-25 14:29:06 +02:00
{
"key" : {
"id" : "s3",
2022-03-06 18:30:59 +02:00
"image" : "minio/minio:RELEASE.2022-01-28T02-28-16Z",
2019-06-25 14:29:06 +02:00
"name" : "s3-server",
2021-08-23 12:52:51 +02:00
"option" : "-m 128m -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",
2019-06-25 14:29:06 +02:00
"os" : "debian",
2019-11-12 22:51:28 +02:00
"param" : "server /data --address :443",
2019-06-25 14:29:06 +02:00
"update-hosts" : false
},
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.3"
2019-06-25 14:29:06 +02:00
}
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2019-01-02 22:04:47 +02:00
"id" : "build",
"image" : "pgbackrest/doc:debian",
"name" : "build",
2021-08-23 12:52:51 +02:00
"option" : "-m 256m -v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run",
2019-01-02 22:04:47 +02:00
"os" : "debian",
"update-hosts" : true
},
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.4"
2019-01-02 22:04:47 +02:00
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo mkdir -p /build/pgbackrest-release-2.38"
2019-01-02 22:04:47 +02:00
],
"host" : "build",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo cp -r /pgbackrest/src /build/pgbackrest-release-2.38"
2019-01-02 22:04:47 +02:00
],
"host" : "build",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo chown -R vagrant /build/pgbackrest-release-2.38"
2019-01-02 22:04:47 +02:00
],
"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" : [
2020-05-26 14:11:50 +02:00
"sudo apt-get install make gcc libpq-dev libssl-dev libxml2-dev pkg-config \\",
2021-08-23 12:52:51 +02:00
" liblz4-dev libzstd-dev libbz2-dev libz-dev libyaml-dev"
2019-01-02 22:04:47 +02:00
],
"cmd-extra" : "-y 2>&1",
"host" : "build",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"cd /build/pgbackrest-release-2.38/src && ./configure && make"
2019-01-02 22:04:47 +02:00
],
2021-08-23 12:52:51 +02:00
"cmd-extra" : "-j 4",
2019-01-02 22:04:47 +02:00
"host" : "build",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"id" : "pg1",
"image" : "pgbackrest/doc:debian",
"name" : "pg-primary",
2021-08-23 12:52:51 +02:00
"option" : "-m 512m -v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run",
2019-01-02 22:04:47 +02:00
"os" : "debian",
"update-hosts" : true
},
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.5"
2019-01-02 22:04:47 +02:00
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo apt-get install postgresql-client libxml2"
2019-01-02 22:04:47 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "-y 2>&1",
2021-08-23 12:52:51 +02:00
"host" : "pg-primary",
2019-01-02 22:04:47 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo scp build:/build/pgbackrest-release-2.38/src/pgbackrest /usr/bin"
2019-01-02 22:04:47 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "2>&1",
2019-01-02 22:04:47 +02:00
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo chmod 755 /usr/bin/pgbackrest"
2019-01-02 22:04:47 +02:00
],
"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" : [
2022-03-06 18:30:59 +02:00
"pgBackRest 2.38 - General help",
2019-01-02 22:04:47 +02:00
"",
"Usage:",
" pgbackrest [options] [command]",
"",
"Commands:",
" 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.",
2021-04-05 15:18:20 +02:00
" repo-get Get a file from a repository.",
2021-02-08 16:08:16 +02:00
" repo-ls List files in a repository.",
2019-01-02 22:04:47 +02:00
" restore Restore a database cluster.",
2022-01-03 15:43:55 +02:00
" server pgBackRest server.",
" server-ping Ping pgBackRest server.",
2019-01-02 22:04:47 +02:00
" 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.",
" version Get version.",
"",
"Use 'pgbackrest help [command]' for more information."
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres /usr/lib/postgresql/12/bin/initdb \\",
" -D /var/lib/postgresql/12/demo -k -A peer"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_createcluster 12 demo"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2021-08-23 12:52:51 +02:00
"Configuring already existing cluster (configuration: /etc/postgresql/12/demo, data: /var/lib/postgresql/12/demo, owner: 102:103)",
2019-03-10 18:56:00 +02:00
"Ver Cluster Port Status Owner Data directory Log file",
2020-07-20 14:57:22 +02:00
"12 demo 5432 down postgres /var/lib/postgresql/12/demo /var/log/postgresql/postgresql-12-demo.log"
2019-01-02 22:04:47 +02:00
]
}
},
2021-08-23 12:52:51 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"cat /root/postgresql.common.conf >> /etc/postgresql/12/demo/postgresql.conf"
2021-08-23 12:52:51 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
2019-01-02 22:04:47 +02:00
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"demo" : {
"pg1-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/var/lib/postgresql/12/demo"
2019-01-02 22:04:47 +02:00
}
},
"global" : {
"log-level-stderr" : {
"value" : "off"
},
"log-timestamp" : {
"value" : "n"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/postgresql/12/demo"
2019-01-02 22:04:47 +02:00
]
}
},
{
"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" : [
2022-03-06 18:30:59 +02:00
"pgBackRest 2.38 - 'backup' command - 'log-path' option help",
2019-01-02 22:04:47 +02:00
"",
"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]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2019-01-02 22:04:47 +02:00
"",
"[global]",
"repo1-path=/var/lib/pgbackrest"
]
}
},
{
"key" : {
2020-07-20 14:57:22 +02:00
"file" : "/etc/postgresql/12/demo/postgresql.conf",
2019-01-02 22:04:47 +02:00
"host" : "pg-primary",
"option" : {
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
"max_wal_senders" : {
"value" : "3"
},
"wal_level" : {
2019-06-25 14:29:06 +02:00
"value" : "replica"
2019-01-02 22:04:47 +02:00
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
"max_wal_senders = 3",
2019-06-25 14:29:06 +02:00
"wal_level = replica"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo restart"
2019-01-02 22:04:47 +02:00
],
"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"
},
2022-03-06 18:30:59 +02:00
{
"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"
},
2019-01-02 22:04:47 +02:00
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global:archive-push" : {
"compress-level" : {
"value" : "3"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2019-01-02 22:04:47 +02:00
"",
"[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]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2019-01-02 22:04:47 +02:00
"",
"[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]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2019-01-02 22:04:47 +02:00
"",
"[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" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: stanza-create command begin 2.38: --exec-id=1353-61b8040a --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo",
2021-02-08 16:08:16 +02:00
"P00 INFO: stanza-create for stanza 'demo' on repo1",
2019-01-02 22:04:47 +02:00
"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" : [
2019-08-05 18:03:04 +02:00
" successfully archived to "
2019-01-02 22:04:47 +02:00
]
},
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: check command begin 2.38: --exec-id=1364-72e7f2f8 --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo",
2021-02-08 16:08:16 +02:00
"P00 INFO: check repo1 configuration (primary)",
"P00 INFO: check repo1 archive for WAL (primary)",
2022-03-06 18:30:59 +02:00
"P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/12-1/0000000100000000/000000010000000000000001-3aea70531f42c93d4601c38bcd1f60b0b8ebb92a.gz' on repo1",
2019-01-02 22:04:47 +02:00
"P00 INFO: check command end: completed successfully"
]
}
},
2021-08-23 12:52:51 +02:00
{
"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/12/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"
]
}
},
2019-01-02 22:04:47 +02:00
{
"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" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: backup command begin 2.38: --exec-id=1400-cdd3205f --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast",
2019-01-02 22:04:47 +02:00
"P00 WARN: no prior backup exists, incr backup has been changed to full",
2021-08-23 12:52:51 +02:00
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes",
2019-03-10 18:56:00 +02:00
"P00 INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028",
2022-01-03 15:43:55 +02:00
" [filtered 3 lines of output]",
"P00 INFO: check archive for segment(s) 000000010000000000000002:000000010000000000000003",
2022-03-06 18:30:59 +02:00
"P00 INFO: new backup label = 20220306-155001F",
2021-08-23 12:52:51 +02:00
"P00 INFO: full backup size = 23.4MB, file total = 976",
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1400-cdd3205f --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-155001F"
2019-01-02 22:04:47 +02:00
]
}
},
{
"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" : [
2022-01-03 15:43:55 +02:00
" [filtered 7 lines of output]",
"P00 INFO: check archive for segment(s) 000000010000000000000004:000000010000000000000005",
2022-03-06 18:30:59 +02:00
"P00 INFO: new backup label = 20220306-155001F_20220306-155006D",
2022-01-03 15:43:55 +02:00
"P00 INFO: diff backup size = 8.3KB, file total = 976",
2021-08-23 12:52:51 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1430-d1de1763 --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo"
2019-01-02 22:04:47 +02:00
]
}
},
{
"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)",
2022-01-03 15:43:55 +02:00
" wal archive min/max (12): 000000010000000000000001/000000010000000000000005",
2019-01-02 22:04:47 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-155001F",
" timestamp start/stop: 2022-03-06 15:50:01 / 2022-03-06 15:50:05",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000010000000000000002 / 000000010000000000000003",
2021-02-08 16:08:16 +02:00
" database size: 23.4MB, database backup size: 23.4MB",
" repo1: backup set size: 2.8MB, backup size: 2.8MB",
2019-01-02 22:04:47 +02:00
"",
2022-03-06 18:30:59 +02:00
" diff backup: 20220306-155001F_20220306-155006D",
" timestamp start/stop: 2022-03-06 15:50:06 / 2022-03-06 15:50:08",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000010000000000000004 / 000000010000000000000005",
2021-02-08 16:08:16 +02:00
" database size: 23.4MB, database backup size: 8.3KB",
2022-03-06 18:30:59 +02:00
" repo1: backup set size: 2.8MB, backup size: 480B",
" backup reference list: 20220306-155001F"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo stop"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres rm /var/lib/postgresql/12/demo/global/pg_control"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo start"
2019-01-02 22:04:47 +02:00
],
"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" : [
2020-07-20 14:57:22 +02:00
"Error: /usr/lib/postgresql/12/bin/pg_ctl /usr/lib/postgresql/12/bin/pg_ctl start -D /var/lib/postgresql/12/demo -l /var/log/postgresql/postgresql-12-demo.log -s -o -c config_file=\"/etc/postgresql/12/demo/postgresql.conf\" exited with status 1: ",
2019-01-02 22:04:47 +02:00
"postgres: could not find the database system",
2020-07-20 14:57:22 +02:00
"Expected to find it in the directory \"/var/lib/postgresql/12/demo\",",
"but could not open file \"/var/lib/postgresql/12/demo/global/pg_control\": No such file or directory",
2019-03-10 18:56:00 +02:00
"Examine the log output."
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres find /var/lib/postgresql/12/demo -mindepth 1 -delete"
2019-01-02 22:04:47 +02:00
],
"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" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo start"
2019-01-02 22:04:47 +02:00
],
"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" : [
2019-01-30 22:37:35 +02:00
"sudo -u postgres cp -r /pgbackrest/doc/example/* \\",
2019-01-02 22:04:47 +02:00
" /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" : [
2019-01-30 22:37:35 +02:00
"-- An example of monitoring pgBackRest from within PostgreSQL",
2019-01-02 22:04:47 +02:00
"--",
"-- Use copy to export data from the pgBackRest info command into the jsonb",
2019-01-30 22:37:35 +02:00
"-- type so it can be queried directly by PostgreSQL.",
2019-01-02 22:04:47 +02:00
"",
"-- 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 jsonb);",
"",
2019-11-12 22:51:28 +02:00
" -- Copy data into the table directly from the pgBackRest info command",
2019-01-02 22:04:47 +02:00
" copy temp_pgbackrest_data (data)",
" from program",
2019-11-12 22:51:28 +02:00
" 'pgbackrest --output=json info' (format text);",
2019-01-02 22:04:47 +02:00
"",
" select temp_pgbackrest_data.data",
" 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 ",
"--------+------------------------+--------------------------",
2022-03-06 18:30:59 +02:00
" \"demo\" | 2022-03-06 15:50:08+00 | 000000010000000000000005",
2019-01-02 22:04:47 +02:00
"(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" : [
2022-03-06 18:30:59 +02:00
"1646581808"
2019-01-02 22:04:47 +02:00
]
}
},
{
"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" : [
2022-01-03 15:43:55 +02:00
"\"000000010000000000000005\""
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global" : {
"repo1-retention-full" : {
"value" : "2"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2019-01-02 22:04:47 +02:00
"",
"[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 --type=full \\",
" --log-level-console=detail backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2022-03-06 18:30:59 +02:00
"archive retention on backup 20220306-155001F|remove archive"
2019-01-02 22:04:47 +02:00
]
},
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" [filtered 985 lines of output]",
2019-01-02 22:04:47 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1738-a85be91e --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo",
"P00 DETAIL: repo1: 12-1 archive retention on backup 20220306-155001F, start = 000000010000000000000002",
2021-06-07 12:51:08 +02:00
"P00 INFO: repo1: 12-1 remove archive, start = 000000010000000000000001, stop = 000000010000000000000001",
2019-01-02 22:04:47 +02:00
"P00 INFO: expire command end: completed successfully"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-155021F"
2019-01-02 22:04:47 +02:00
]
}
},
{
"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" : [
2022-03-06 18:30:59 +02:00
"expire full backup set 20220306-155001F|archive retention on backup 20220306-155021F|remove archive"
2019-01-02 22:04:47 +02:00
]
},
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" [filtered 9 lines of output]",
2019-01-02 22:04:47 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1770-9967a6d8 --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo",
"P00 INFO: repo1: expire full backup set 20220306-155001F, 20220306-155001F_20220306-155006D",
"P00 INFO: repo1: remove expired backup 20220306-155001F_20220306-155006D",
"P00 INFO: repo1: remove expired backup 20220306-155001F",
2022-01-03 15:43:55 +02:00
"P00 INFO: repo1: 12-1 remove archive, start = 0000000100000000, stop = 000000020000000000000006",
2021-06-07 12:51:08 +02:00
"P00 INFO: expire command end: completed successfully"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global" : {
"repo1-retention-diff" : {
"value" : "1"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2019-01-02 22:04:47 +02:00
"",
"[global]",
"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" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-155026F_20220306-155030D"
2019-01-02 22:04:47 +02:00
]
}
},
{
"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" : [
2022-03-06 18:30:59 +02:00
"expire diff backup set 20220306-155026F_20220306-155030D"
2019-01-02 22:04:47 +02:00
]
},
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" [filtered 10 lines of output]",
2019-01-02 22:04:47 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1861-710ac72b --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --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 20220306-155026F_20220306-155030D, 20220306-155026F_20220306-155032I",
"P00 INFO: repo1: remove expired backup 20220306-155026F_20220306-155032I",
"P00 INFO: repo1: remove expired backup 20220306-155026F_20220306-155030D",
2021-06-07 12:51:08 +02:00
"P00 INFO: expire command end: completed successfully"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global" : {
"repo1-retention-diff" : {
"value" : "2"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2019-01-02 22:04:47 +02:00
"",
"[global]",
"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" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-155026F_20220306-155035D"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
"sudo -u postgres psql -c \" \\",
2019-03-10 18:56:00 +02:00
" select pg_create_restore_point('generate WAL'); select pg_switch_wal(); \\",
" select pg_create_restore_point('generate WAL'); select pg_switch_wal();\""
2019-01-02 22:04:47 +02:00
],
"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" : [
2022-01-03 15:43:55 +02:00
" [filtered 6 lines of output]",
"P00 INFO: backup stop archive = 000000020000000000000013, lsn = 0/13000050",
"P00 INFO: check archive for segment(s) 000000020000000000000012:000000020000000000000013",
2022-03-06 18:30:59 +02:00
"P00 INFO: new backup label = 20220306-155026F_20220306-155039D",
2022-01-03 15:43:55 +02:00
"P00 INFO: diff backup size = 8.3KB, file total = 976",
2019-01-02 22:04:47 +02:00
"P00 INFO: backup command end: completed successfully",
2021-08-23 12:52:51 +02:00
" [filtered 2 lines of output]"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-155026F_20220306-155039D"
2019-01-02 22:04:47 +02:00
]
}
},
{
"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" : [
2022-03-06 18:30:59 +02:00
"archive retention on backup 20220306-155026F_20220306-155035D|remove archive"
2019-01-02 22:04:47 +02:00
]
},
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1968-5fa9fc93 --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --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: 12-1 archive retention on backup 20220306-155021F, start = 000000020000000000000007, stop = 000000020000000000000007",
"P00 DETAIL: repo1: 12-1 archive retention on backup 20220306-155026F, start = 000000020000000000000008, stop = 000000020000000000000009",
"P00 DETAIL: repo1: 12-1 archive retention on backup 20220306-155026F_20220306-155035D, start = 00000002000000000000000E, stop = 00000002000000000000000F",
"P00 DETAIL: repo1: 12-1 archive retention on backup 20220306-155026F_20220306-155039D, start = 000000020000000000000012",
2022-01-03 15:43:55 +02:00
"P00 INFO: repo1: 12-1 remove archive, start = 00000002000000000000000A, stop = 00000002000000000000000D",
"P00 INFO: repo1: 12-1 remove archive, start = 000000020000000000000010, stop = 000000020000000000000011",
2019-01-02 22:04:47 +02:00
"P00 INFO: expire command end: completed successfully"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo stop"
2019-01-02 22:04:47 +02:00
],
"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" : [
2019-10-01 22:02:07 +02:00
"demo\\/PG_VERSION - exists and matches backup|remove invalid files|rename global\\/pg_control"
2019-01-02 22:04:47 +02:00
]
},
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2019-10-01 22:02:07 +02:00
" [filtered 2 lines of output]",
2020-07-20 14:57:22 +02:00
"P00 DETAIL: check '/var/lib/postgresql/12/demo' exists",
2019-10-01 22:02:07 +02:00
"P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete",
2020-07-20 14:57:22 +02:00
"P00 INFO: remove invalid files/links/paths from '/var/lib/postgresql/12/demo'",
"P00 DETAIL: remove invalid file '/var/lib/postgresql/12/demo/backup_label.old'",
"P00 DETAIL: remove invalid file '/var/lib/postgresql/12/demo/base/1/pg_internal.init'",
2022-01-03 15:43:55 +02:00
" [filtered 816 lines of output]",
2021-08-23 12:52:51 +02:00
"P01 DETAIL: restore file /var/lib/postgresql/12/demo/base/13397/PG_VERSION - exists and matches backup (3B, 99%) checksum ad552e6dc057d1d825bf49df79d6b98eba846ebe",
2020-07-20 14:57:22 +02:00
"P01 DETAIL: restore file /var/lib/postgresql/12/demo/base/1/PG_VERSION - exists and matches backup (3B, 99%) checksum ad552e6dc057d1d825bf49df79d6b98eba846ebe",
"P01 DETAIL: restore file /var/lib/postgresql/12/demo/PG_VERSION - exists and matches backup (3B, 100%) checksum ad552e6dc057d1d825bf49df79d6b98eba846ebe",
"P01 DETAIL: restore file /var/lib/postgresql/12/demo/global/6100 - exists and is zero size (0B, 100%)",
"P01 DETAIL: restore file /var/lib/postgresql/12/demo/global/6000 - exists and is zero size (0B, 100%)",
2021-08-23 12:52:51 +02:00
" [filtered 202 lines of output]"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo start"
2019-01-02 22:04:47 +02:00
],
"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"
]
}
},
2021-04-05 15:18:20 +02:00
{
"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"
},
2019-01-02 22:04:47 +02:00
{
"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" : [
2022-03-06 18:30:59 +02:00
"32768"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo -u postgres du -sh /var/lib/postgresql/12/demo/base/32768"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"7.8M\t/var/lib/postgresql/12/demo/base/32768"
2019-01-02 22:04:47 +02:00
]
}
},
2019-10-01 22:02:07 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2019-10-01 22:02:07 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-155026F_20220306-155048I"
2019-10-01 22:02:07 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo \\",
2022-03-06 18:30:59 +02:00
" --set=20220306-155026F_20220306-155048I info"
2019-10-01 22:02:07 +02:00
],
"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" : [
2022-03-06 18:30:59 +02:00
" [filtered 12 lines of output]",
2021-02-08 16:08:16 +02:00
" repo1: backup set size: 4.7MB, backup size: 1.9MB",
2022-03-06 18:30:59 +02:00
" backup reference list: 20220306-155026F, 20220306-155026F_20220306-155039D",
" database list: postgres (13398), test1 (32768), test2 (32769)"
2019-10-01 22:02:07 +02:00
]
}
},
2019-01-02 22:04:47 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo stop"
2019-01-02 22:04:47 +02:00
],
"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 \\",
2021-04-05 15:18:20 +02:00
" --db-include=test2 --type=immediate --target-action=promote restore"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo start"
2019-01-02 22:04:47 +02:00
],
"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" : [
2022-03-06 18:30:59 +02:00
"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"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo -u postgres du -sh /var/lib/postgresql/12/demo/base/32768"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"16K\t/var/lib/postgresql/12/demo/base/32768"
2019-01-02 22:04:47 +02:00
]
}
},
{
"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",
2021-08-23 12:52:51 +02:00
" 13397 | template0",
" 13398 | postgres",
2022-03-06 18:30:59 +02:00
" 32769 | test2",
2019-01-02 22:04:47 +02:00
"(4 rows)"
]
}
},
{
"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 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)"
]
}
},
2020-03-26 23:14:53 +02: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"
},
2019-01-02 22:04:47 +02:00
{
"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" : [
2022-03-06 18:30:59 +02:00
"2022-03-06 15:51:04.010329+00"
2019-01-02 22:04:47 +02:00
]
}
},
2020-03-26 23:14:53 +02: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"
},
2019-01-02 22:04:47 +02:00
{
"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" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo stop"
2019-01-02 22:04:47 +02:00
],
"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 \\",
2022-03-06 18:30:59 +02:00
" --type=time \"--target=2022-03-06 15:51:04.010329+00\" \\",
2019-03-10 18:56:00 +02:00
" --target-action=promote restore"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm /var/log/postgresql/postgresql-12-demo.log"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/lib/postgresql/12/demo/postgresql.auto.conf"
2019-01-02 22:04:47 +02:00
],
"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" : [
2021-04-05 15:18:20 +02:00
" [filtered 14 lines of output]",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:51:06",
2019-01-02 22:04:47 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
2022-03-06 18:30:59 +02:00
"recovery_target_time = '2022-03-06 15:51:04.010329+00'",
2019-03-10 18:56:00 +02:00
"recovery_target_action = 'promote'"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo start"
2019-01-02 22:04:47 +02:00
],
"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" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/log/postgresql/postgresql-12-demo.log"
2019-01-02 22:04:47 +02:00
],
"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" : [
2020-07-20 14:57:22 +02:00
" [filtered 3 lines of output]",
2019-03-10 18:56:00 +02:00
"LOG: listening on Unix socket \"/var/run/postgresql/.s.PGSQL.5432\"",
2022-03-06 18:30:59 +02:00
"LOG: database system was interrupted; last known up at 2022-03-06 15:51:00 UTC",
"LOG: starting point-in-time recovery to 2022-03-06 15:51:04.010329+00",
2019-01-02 22:04:47 +02:00
"LOG: restored log file \"00000004.history\" from archive",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000040000000000000016\" from archive",
2019-03-10 18:56:00 +02:00
" [filtered 2 lines of output]",
"LOG: database system is ready to accept read only connections",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000040000000000000017\" from archive",
2022-03-06 18:30:59 +02:00
"LOG: recovery stopping before commit of transaction 496, time 2022-03-06 15:51:05.378634+00",
"LOG: redo done at 0/17019E88",
"LOG: last completed transaction was at log time 2022-03-06 15:51:02.651754+00",
2019-01-02 22:04:47 +02:00
"LOG: selected new timeline ID: 5",
2019-03-10 18:56:00 +02:00
"LOG: archive recovery complete",
2021-04-05 15:18:20 +02:00
" [filtered 2 lines of output]"
2019-01-02 22:04:47 +02:00
]
}
},
{
"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_...",
" ^"
]
}
},
2020-02-26 00:05:45 +02:00
{
"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"
},
2019-01-02 22:04:47 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-155026F_20220306-155112I"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-02-26 00:05:45 +02:00
"sudo -u postgres pgbackrest info"
2019-01-02 22:04:47 +02:00
],
2020-02-26 00:05:45 +02:00
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
2022-03-06 18:30:59 +02:00
"20220306-155026F_20220306-155112I"
2020-02-26 00:05:45 +02:00
]
},
2019-01-02 22:04:47 +02:00
"host" : "pg-primary",
"load-env" : true,
2020-02-26 00:05:45 +02:00
"output" : true,
2019-01-02 22:04:47 +02:00
"run-as-user" : null
},
2020-02-26 00:05:45 +02:00
"type" : "exe",
"value" : {
"output" : [
"stanza: demo",
" status: ok",
" cipher: aes-256-cbc",
"",
" db (current)",
2022-01-03 15:43:55 +02:00
" wal archive min/max (12): 000000020000000000000007/000000050000000000000018",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-155021F",
" timestamp start/stop: 2022-03-06 15:50:21 / 2022-03-06 15:50:24",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000020000000000000007 / 000000020000000000000007",
2021-02-08 16:08:16 +02:00
" database size: 23.4MB, database backup size: 23.4MB",
" repo1: backup set size: 2.8MB, backup size: 2.8MB",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-155026F",
" timestamp start/stop: 2022-03-06 15:50:26 / 2022-03-06 15:50:28",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000020000000000000008 / 000000020000000000000009",
2021-02-08 16:08:16 +02:00
" database size: 23.4MB, database backup size: 23.4MB",
" repo1: backup set size: 2.8MB, backup size: 2.8MB",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" diff backup: 20220306-155026F_20220306-155039D",
" timestamp start/stop: 2022-03-06 15:50:39 / 2022-03-06 15:50:40",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000020000000000000012 / 000000020000000000000013",
2021-06-07 12:51:08 +02:00
" database size: 23.4MB, database backup size: 8.3KB",
2022-01-03 15:43:55 +02:00
" repo1: backup set size: 2.8MB, backup size: 512B",
2022-03-06 18:30:59 +02:00
" backup reference list: 20220306-155026F",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" incr backup: 20220306-155026F_20220306-155048I",
" timestamp start/stop: 2022-03-06 15:50:48 / 2022-03-06 15:50:51",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000030000000000000015 / 000000030000000000000015",
2021-08-23 12:52:51 +02:00
" database size: 38.7MB, database backup size: 15.8MB",
2021-02-08 16:08:16 +02:00
" repo1: backup set size: 4.7MB, backup size: 1.9MB",
2022-03-06 18:30:59 +02:00
" backup reference list: 20220306-155026F, 20220306-155026F_20220306-155039D",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" diff backup: 20220306-155026F_20220306-155100D",
" timestamp start/stop: 2022-03-06 15:51:00 / 2022-03-06 15:51:02",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000040000000000000016 / 000000040000000000000016",
2021-02-08 16:08:16 +02:00
" database size: 31MB, database backup size: 8.2MB",
2021-08-23 12:52:51 +02:00
" repo1: backup set size: 3.8MB, backup size: 1011.1KB",
2022-03-06 18:30:59 +02:00
" backup reference list: 20220306-155026F",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" incr backup: 20220306-155026F_20220306-155112I",
" timestamp start/stop: 2022-03-06 15:51:12 / 2022-03-06 15:51:14",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000050000000000000018 / 000000050000000000000018",
2021-02-08 16:08:16 +02:00
" database size: 31MB, database backup size: 2.2MB",
2021-04-05 15:18:20 +02:00
" repo1: backup set size: 3.8MB, backup size: 234KB",
2022-03-06 18:30:59 +02:00
" backup reference list: 20220306-155026F, 20220306-155026F_20220306-155100D"
2020-02-26 00:05:45 +02:00
]
}
2019-01-02 22:04:47 +02:00
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo stop"
2019-01-02 22:04:47 +02:00
],
"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 \\",
2022-03-06 18:30:59 +02:00
" --set=20220306-155026F_20220306-155112I \\",
" --type=time \"--target=2022-03-06 15:51:04.010329+00\" --target-action=promote restore"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm /var/log/postgresql/postgresql-12-demo.log"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo start"
2019-01-02 22:04:47 +02:00
],
"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\""
],
"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: select * from important_table",
" ^"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/log/postgresql/postgresql-12-demo.log"
2019-01-02 22:04:47 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"starting point-in-time recovery|consistent recovery state reached"
]
},
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2020-07-20 14:57:22 +02:00
" [filtered 3 lines of output]",
2020-01-22 01:12:33 +02:00
"LOG: listening on Unix socket \"/var/run/postgresql/.s.PGSQL.5432\"",
2022-03-06 18:30:59 +02:00
"LOG: database system was interrupted; last known up at 2022-03-06 15:51:13 UTC",
"LOG: starting point-in-time recovery to 2022-03-06 15:51:04.010329+00",
2019-01-02 22:04:47 +02:00
"LOG: restored log file \"00000005.history\" from archive",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000050000000000000018\" from archive",
"LOG: redo starts at 0/18000028",
"LOG: consistent recovery state reached at 0/18000100",
2019-03-10 18:56:00 +02:00
"LOG: database system is ready to accept read only connections",
2022-01-03 15:43:55 +02:00
"LOG: redo done at 0/18000100",
2020-07-20 14:57:22 +02:00
" [filtered 7 lines of output]"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo stop"
2019-01-02 22:04:47 +02:00
],
"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 \\",
2022-03-06 18:30:59 +02:00
" --type=time \"--target=2022-03-06 15:51:04.010329+00\" \\",
2020-02-26 00:05:45 +02:00
" --target-action=promote restore"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm /var/log/postgresql/postgresql-12-demo.log"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo start"
2019-01-02 22:04:47 +02:00
],
"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" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/log/postgresql/postgresql-12-demo.log"
2019-01-02 22:04:47 +02:00
],
"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" : [
2021-04-05 15:18:20 +02:00
" [filtered 5 lines of output]",
2019-01-02 22:04:47 +02:00
"LOG: restored log file \"00000005.history\" from archive",
2019-02-09 19:52:31 +02:00
"LOG: restored log file \"00000006.history\" from archive",
2022-03-06 18:30:59 +02:00
"LOG: starting point-in-time recovery to 2022-03-06 15:51:04.010329+00",
2020-07-20 14:57:22 +02:00
"LOG: restored log file \"00000006.history\" from archive",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000040000000000000016\" from archive",
2020-07-20 14:57:22 +02:00
" [filtered 4 lines of output]",
"LOG: database system is ready to accept read only connections",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000050000000000000017\" from archive",
2022-03-06 18:30:59 +02:00
"LOG: recovery stopping before commit of transaction 497, time 2022-03-06 15:51:11.947526+00",
"LOG: redo done at 0/17022530",
"LOG: last completed transaction was at log time 2022-03-06 15:51:02.651754+00",
2020-07-20 14:57:22 +02:00
"LOG: selected new timeline ID: 7",
"LOG: archive recovery complete",
2021-04-05 15:18:20 +02:00
" [filtered 2 lines of output]"
2020-07-20 14:57:22 +02:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global" : {
"process-max" : {
"value" : "4"
},
2021-04-05 15:18:20 +02:00
"repo2-azure-account" : {
2020-07-20 14:57:22 +02:00
"value" : "pgbackrest"
},
2021-04-05 15:18:20 +02:00
"repo2-azure-container" : {
2020-07-20 14:57:22 +02:00
"value" : "demo-container"
},
2021-04-05 15:18:20 +02:00
"repo2-azure-key" : {
2020-07-20 14:57:22 +02:00
"value" : "YXpLZXk="
},
2021-04-05 15:18:20 +02:00
"repo2-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/demo-repo"
},
2021-04-05 15:18:20 +02:00
"repo2-retention-full" : {
"value" : "4"
},
"repo2-type" : {
2020-07-20 14:57:22 +02:00
"value" : "azure"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"pg1-path=/var/lib/postgresql/12/demo",
"",
"[global]",
"process-max=4",
"repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO",
"repo1-cipher-type=aes-256-cbc",
2021-04-05 15:18:20 +02:00
"repo1-path=/var/lib/pgbackrest",
2020-07-20 14:57:22 +02:00
"repo1-retention-diff=2",
"repo1-retention-full=2",
2021-04-05 15:18:20 +02:00
"repo2-azure-account=pgbackrest",
"repo2-azure-container=demo-container",
"repo2-azure-key=YXpLZXk=",
"repo2-path=/demo-repo",
"repo2-retention-full=4",
"repo2-type=azure",
2020-07-20 14:57:22 +02:00
"start-fast=y",
"",
"[global:archive-push]",
"compress-level=3"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-11-01 14:59:14 +02:00
"echo \"172.17.0.2 pgbackrest.blob.core.windows.net\" | tee -a /etc/hosts"
2020-07-20 14:57:22 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --repo=2 repo-create"
2020-07-20 14:57:22 +02:00
],
"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" : [
2021-04-05 15:18:20 +02:00
" [filtered 2 lines of output]",
"P00 INFO: stanza 'demo' already exists on repo1 and is valid",
"P00 INFO: stanza-create for stanza 'demo' on repo2",
2020-07-20 14:57:22 +02:00
"P00 INFO: stanza-create command end: completed successfully"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --stanza=demo --repo=2 \\",
2020-07-20 14:57:22 +02:00
" --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" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: backup command begin 2.38: --exec-id=2850-261f6fb8 --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --process-max=4 --repo=2 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --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",
2020-07-20 14:57:22 +02:00
"P00 WARN: no prior backup exists, incr backup has been changed to full",
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes",
2022-01-03 15:43:55 +02:00
"P00 INFO: backup start archive = 000000070000000000000018, lsn = 0/18000028",
" [filtered 3 lines of output]",
"P00 INFO: check archive for segment(s) 000000070000000000000018:000000070000000000000018",
2022-03-06 18:30:59 +02:00
"P00 INFO: new backup label = 20220306-155130F",
2021-08-23 12:52:51 +02:00
"P00 INFO: full backup size = 31MB, file total = 1282",
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=2850-261f6fb8 --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo=2 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --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"
2019-01-02 22:04:47 +02:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global" : {
"process-max" : {
"value" : "4"
},
2021-04-05 15:18:20 +02:00
"repo3-path" : {
2019-01-02 22:04:47 +02:00
"value" : "/demo-repo"
},
2021-04-05 15:18:20 +02:00
"repo3-retention-full" : {
"value" : "4"
},
"repo3-s3-bucket" : {
2019-01-02 22:04:47 +02:00
"value" : "demo-bucket"
},
2021-04-05 15:18:20 +02:00
"repo3-s3-endpoint" : {
2019-06-25 14:29:06 +02:00
"value" : "s3.us-east-1.amazonaws.com"
2019-01-02 22:04:47 +02:00
},
2021-04-05 15:18:20 +02:00
"repo3-s3-key" : {
2019-01-02 22:04:47 +02:00
"value" : "accessKey1"
},
2021-04-05 15:18:20 +02:00
"repo3-s3-key-secret" : {
2019-01-02 22:04:47 +02:00
"value" : "verySecretKey1"
},
2021-04-05 15:18:20 +02:00
"repo3-s3-region" : {
2019-01-02 22:04:47 +02:00
"value" : "us-east-1"
},
2021-04-05 15:18:20 +02:00
"repo3-type" : {
2019-01-02 22:04:47 +02:00
"value" : "s3"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2019-01-02 22:04:47 +02:00
"",
"[global]",
"process-max=4",
2019-06-25 14:29:06 +02:00
"repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO",
"repo1-cipher-type=aes-256-cbc",
2021-04-05 15:18:20 +02:00
"repo1-path=/var/lib/pgbackrest",
2019-01-02 22:04:47 +02:00
"repo1-retention-diff=2",
"repo1-retention-full=2",
2021-04-05 15:18:20 +02:00
"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",
2019-01-02 22:04:47 +02:00
"start-fast=y",
"",
"[global:archive-push]",
"compress-level=3"
]
}
},
2020-03-26 23:14:53 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"echo \"172.17.0.3 demo-bucket.s3.us-east-1.amazonaws.com s3.us-east-1.amazonaws.com\" | tee -a /etc/hosts"
2020-03-26 23:14:53 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --repo=3 repo-create"
2020-03-26 23:14:53 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
2019-01-02 22:04:47 +02:00
{
"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" : [
2021-04-05 15:18:20 +02:00
" [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",
2019-01-02 22:04:47 +02:00
"P00 INFO: stanza-create command end: completed successfully"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --stanza=demo --repo=3 \\",
2019-01-02 22:04:47 +02:00
" --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" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: backup command begin 2.38: --exec-id=2927-f38c54e7 --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --process-max=4 --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --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=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo --start-fast",
2019-01-02 22:04:47 +02:00
"P00 WARN: no prior backup exists, incr backup has been changed to full",
2020-01-15 22:21:52 +02:00
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes",
2022-03-06 18:30:59 +02:00
"P00 INFO: backup start archive = 00000007000000000000001A, lsn = 0/1A000028",
2022-01-03 15:43:55 +02:00
" [filtered 3 lines of output]",
2022-03-06 18:30:59 +02:00
"P00 INFO: check archive for segment(s) 00000007000000000000001A:00000007000000000000001A",
"P00 INFO: new backup label = 20220306-155140F",
2021-08-23 12:52:51 +02:00
"P00 INFO: full backup size = 31MB, file total = 1282",
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=2927-f38c54e7 --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --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=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo"
2019-01-02 22:04:47 +02:00
]
}
},
2021-04-05 15:18:20 +02:00
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global" : {
"process-max" : {
"value" : "4"
},
"repo4-gcs-bucket" : {
"value" : "demo-bucket"
},
"repo4-gcs-key" : {
"value" : "/etc/pgbackrest/gcs-key.json"
},
"repo4-path" : {
"value" : "/demo-repo"
},
"repo4-type" : {
"value" : "gcs"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"pg1-path=/var/lib/postgresql/12/demo",
"",
"[global]",
"process-max=4",
"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-gcs-bucket=demo-bucket",
"repo4-gcs-key=/etc/pgbackrest/gcs-key.json",
"repo4-path=/demo-repo",
"repo4-type=gcs",
"start-fast=y",
"",
"[global:archive-push]",
"compress-level=3"
]
}
},
2019-01-02 22:04:47 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo stop"
2019-01-02 22:04:47 +02:00
],
"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" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: stop command begin 2.38: --exec-id=2981-23c4e31d --log-level-console=info --log-level-stderr=off --no-log-timestamp --stanza=demo",
2019-01-02 22:04:47 +02:00
"P00 INFO: stop command end: completed successfully"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --stanza=demo --repo=1 \\",
" --log-level-console=info stanza-delete"
2019-01-02 22:04:47 +02:00
],
"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" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: stanza-delete command begin 2.38: --exec-id=2990-7fce0c61 --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --repo=1 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo4-gcs-bucket=demo-bucket --repo4-gcs-key=<redacted> --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --repo4-type=gcs --stanza=demo",
2019-01-02 22:04:47 +02:00
"P00 INFO: stanza-delete command end: completed successfully"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo pg_ctlcluster 12 demo start"
2019-01-02 22:04:47 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"id" : "repo1",
"image" : "pgbackrest/doc:debian",
"name" : "repository",
2021-08-23 12:52:51 +02:00
"option" : "-m 512m -v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run",
2021-06-07 12:51:08 +02:00
"os" : "debian",
"update-hosts" : true
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
2021-06-07 12:51:08 +02:00
"type" : "host",
"value" : {
"ip" : "172.17.0.6"
}
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
2016-07-02 16:22:52 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo adduser --disabled-password --gecos \"\" pgbackrest"
2016-07-02 16:22:52 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-07-02 16:22:52 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo apt-get install postgresql-client libxml2"
2016-07-02 16:22:52 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "-y 2>&1",
2021-08-23 12:52:51 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-07-02 16:22:52 +02:00
},
2016-10-10 23:35:58 +02:00
"type" : "exe"
2016-07-02 16:22:52 +02:00
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo scp build:/build/pgbackrest-release-2.38/src/pgbackrest /usr/bin"
2016-06-02 17:10:24 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "2>&1",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo chmod 755 /usr/bin/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p -m 770 /var/log/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
2016-07-02 16:22:52 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo chown pgbackrest:pgbackrest /var/log/pgbackrest"
2016-07-02 16:22:52 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-07-02 16:22:52 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest"
2018-05-07 01:53:42 +02:00
],
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest/conf.d"
2018-05-07 01:53:42 +02:00
],
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo touch /etc/pgbackrest/pgbackrest.conf"
2016-07-02 16:22:52 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-07-02 16:22:52 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chmod 640 /etc/pgbackrest/pgbackrest.conf"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo mkdir -p /var/lib/pgbackrest"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo chmod 750 /var/lib/pgbackrest"
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest mkdir -m 750 /home/pgbackrest/.ssh"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest ssh-keygen -f /home/pgbackrest/.ssh/id_rsa \\",
" -t rsa -b 4096 -N \"\""
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \\",
2018-02-24 05:38:45 +02:00
" -t rsa -b 4096 -N \"\""
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-10-16 15:56:51 +02:00
"(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\",
" echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\",
2021-06-07 12:51:08 +02:00
" sudo ssh root@pg-primary cat /var/lib/postgresql/.ssh/id_rsa.pub) | \\",
2018-02-24 05:38:45 +02:00
" sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
2018-10-16 15:56:51 +02:00
"run-as-user" : "root"
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-10-16 15:56:51 +02:00
"(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) | \\",
2021-06-07 12:51:08 +02:00
" sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
2018-10-16 15:56:51 +02:00
"run-as-user" : "root"
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest ssh postgres@pg-primary"
2017-09-29 01:06:41 +02:00
],
2018-10-16 15:56:51 +02:00
"cmd-extra" : "-o StrictHostKeyChecking=no",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u postgres ssh pgbackrest@repository"
2017-09-29 01:06:41 +02:00
],
2018-10-16 15:56:51 +02:00
"cmd-extra" : "-o StrictHostKeyChecking=no",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2017-09-29 01:06:41 +02:00
"option" : {
"global" : {
2018-02-24 05:38:45 +02:00
"repo1-path" : {
2017-09-29 01:06:41 +02:00
"value" : "/var/lib/pgbackrest"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2017-09-29 01:06:41 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-host" : {
"value" : "pg-primary"
2017-09-29 01:06:41 +02:00
},
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2021-06-07 12:51:08 +02:00
"value" : "/var/lib/postgresql/12/demo"
2017-09-29 01:06:41 +02:00
}
},
"global" : {
"log-level-stderr" : {
"value" : "off"
},
"log-timestamp" : {
"value" : "n"
},
2018-02-24 05:38:45 +02:00
"repo1-retention-full" : {
2017-09-29 01:06:41 +02:00
"value" : "2"
},
"start-fast" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2018-02-24 05:38:45 +02:00
"pg1-host=pg-primary",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2017-09-29 01:06:41 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
2017-09-29 01:06:41 +02:00
"start-fast=y"
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-09-29 01:06:41 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2021-06-07 12:51:08 +02:00
"value" : "/var/lib/postgresql/12/demo"
2017-09-29 01:06:41 +02:00
}
},
"global" : {
"log-level-file" : {
"value" : "detail"
},
"log-level-stderr" : {
"value" : "off"
},
"log-timestamp" : {
"value" : "n"
2018-02-24 05:38:45 +02:00
},
"repo1-host" : {
"value" : "repository"
2017-09-29 01:06:41 +02:00
}
}
},
"reset" : true
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2017-09-29 01:06:41 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"log-level-file=detail",
"repo1-host=repository"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo stanza-create"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo check"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo check"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo backup"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"P00 WARN: no prior backup exists, incr backup has been changed to full"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 12 demo stop"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 12 demo start"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres sleep 2"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup"
2017-09-29 01:06:41 +02:00
],
2018-05-07 01:53:42 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "repository",
2017-09-29 01:06:41 +02:00
"option" : {
"global" : {
"process-max" : {
2018-05-07 01:53:42 +02:00
"value" : "3"
2017-09-29 01:06:41 +02:00
}
}
}
2016-07-02 16:22:52 +02:00
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2018-05-07 01:53:42 +02:00
"pg1-host=pg-primary",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2016-07-02 16:22:52 +02:00
"",
"[global]",
2018-05-07 01:53:42 +02:00
"process-max=3",
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
"start-fast=y"
2016-07-02 16:22:52 +02:00
]
}
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
],
2018-05-07 01:53:42 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u pgbackrest pgbackrest info"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"timestamp start/stop"
]
},
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"stanza: demo",
" status: ok",
2018-10-16 15:56:51 +02:00
" cipher: none",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"",
2017-08-09 00:09:07 +02:00
" db (current)",
2022-01-03 15:43:55 +02:00
" wal archive min/max (12): 000000080000000000000020/000000080000000000000022",
2017-08-09 00:09:07 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-155221F",
" timestamp start/stop: 2022-03-06 15:52:21 / 2022-03-06 15:52:26",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000080000000000000020 / 000000080000000000000020",
2021-06-07 12:51:08 +02:00
" database size: 31MB, database backup size: 31MB",
" repo1: backup set size: 3.7MB, backup size: 3.7MB",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-155228F",
" timestamp start/stop: 2022-03-06 15:52:28 / 2022-03-06 15:52:31",
" wal start/stop: 000000080000000000000021 / 000000080000000000000022",
2021-06-07 12:51:08 +02:00
" database size: 31MB, database backup size: 31MB",
" repo1: backup set size: 3.7MB, backup size: 3.7MB"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
]
}
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest stop"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo backup"
2016-06-02 17:10:24 +02:00
],
2020-01-15 22:21:52 +02:00
"err-expect" : "56",
2016-06-02 17:10:24 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-10-24 23:36:21 +02:00
"\\: stop file exists for all stanzas"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 WARN: unable to check pg1: [StopError] raised from remote-0 ssh protocol on 'pg-primary': stop file exists for all stanzas",
2020-01-15 22:21:52 +02:00
"P00 ERROR: [056]: unable to find primary cluster - cannot proceed"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest stop"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2016-09-15 00:36:43 +02:00
"P00 WARN: stop file already exists for all stanzas"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest start"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo stop"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo backup"
2017-09-29 01:06:41 +02:00
],
2020-01-15 22:21:52 +02:00
"err-expect" : "56",
2017-09-29 01:06:41 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-10-24 23:36:21 +02:00
"\\: stop file exists for stanza demo"
2017-09-29 01:06:41 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 WARN: unable to check pg1: [StopError] raised from remote-0 ssh protocol on 'pg-primary': stop file exists for stanza demo",
2020-01-15 22:21:52 +02:00
"P00 ERROR: [056]: unable to find primary cluster - cannot proceed"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo start"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-02-24 05:38:45 +02:00
"id" : "pg2",
2021-06-07 12:51:08 +02:00
"image" : "pgbackrest/doc:debian",
2018-02-24 05:38:45 +02:00
"name" : "pg-standby",
2021-08-23 12:52:51 +02:00
"option" : "-m 512m -v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run",
2021-06-07 12:51:08 +02:00
"os" : "debian",
2018-07-06 02:16:41 +02:00
"update-hosts" : true
2017-09-29 01:06:41 +02:00
},
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.7"
2017-09-29 01:06:41 +02:00
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo apt-get install postgresql-client libxml2"
2018-07-06 02:16:41 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "-y 2>&1",
2021-08-23 12:52:51 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
2018-08-31 19:19:43 +02:00
"run-as-user" : null
2018-07-06 02:16:41 +02:00
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo scp build:/build/pgbackrest-release-2.38/src/pgbackrest /usr/bin"
2018-07-06 02:16:41 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "2>&1",
2018-07-06 02:16:41 +02:00
"host" : "pg-standby",
"load-env" : true,
"output" : false,
2018-08-31 19:19:43 +02:00
"run-as-user" : null
2018-07-06 02:16:41 +02:00
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo chmod 755 /usr/bin/pgbackrest"
2018-07-06 02:16:41 +02:00
],
"host" : "pg-standby",
"load-env" : true,
"output" : false,
2018-08-31 19:19:43 +02:00
"run-as-user" : null
2018-07-06 02:16:41 +02:00
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2018-08-31 19:19:43 +02:00
"sudo mkdir -p -m 770 /var/log/pgbackrest"
2018-07-06 02:16:41 +02:00
],
"host" : "pg-standby",
"load-env" : true,
"output" : false,
2018-08-31 19:19:43 +02:00
"run-as-user" : null
2018-07-06 02:16:41 +02:00
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-08-31 19:19:43 +02:00
"sudo chown postgres:postgres /var/log/pgbackrest"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
2018-08-31 19:19:43 +02:00
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest/conf.d"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo touch /etc/pgbackrest/pgbackrest.conf"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chmod 640 /etc/pgbackrest/pgbackrest.conf"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \\",
2018-02-24 05:38:45 +02:00
" -t rsa -b 4096 -N \"\""
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-10-16 15:56:51 +02:00
"(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \\",
" echo -n 'command=\"/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }\" ' && \\",
2021-06-07 12:51:08 +02:00
" sudo ssh root@pg-standby cat /var/lib/postgresql/.ssh/id_rsa.pub) | \\",
2018-02-24 05:38:45 +02:00
" sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
2018-10-16 15:56:51 +02:00
"run-as-user" : "root"
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-10-16 15:56:51 +02:00
"(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) | \\",
2021-06-07 12:51:08 +02:00
" sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
2018-10-16 15:56:51 +02:00
"run-as-user" : "root"
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest ssh postgres@pg-standby"
2016-06-02 17:10:24 +02:00
],
2018-10-16 15:56:51 +02:00
"cmd-extra" : "-o StrictHostKeyChecking=no",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u postgres ssh pgbackrest@repository"
2016-06-02 17:10:24 +02:00
],
2018-10-16 15:56:51 +02:00
"cmd-extra" : "-o StrictHostKeyChecking=no",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2016-06-02 17:10:24 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2021-06-07 12:51:08 +02:00
"value" : "/var/lib/postgresql/12/demo"
2016-06-02 17:10:24 +02:00
}
},
"global" : {
2018-05-07 01:53:42 +02:00
"log-level-file" : {
"value" : "detail"
},
2016-10-10 23:35:58 +02:00
"log-level-stderr" : {
"value" : "off"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"log-timestamp" : {
"value" : "n"
2018-02-24 05:38:45 +02:00
},
"repo1-host" : {
"value" : "repository"
2016-06-02 17:10:24 +02:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2016-06-02 17:10:24 +02:00
"",
"[global]",
2018-05-07 01:53:42 +02:00
"log-level-file=detail",
2018-02-24 05:38:45 +02:00
"repo1-host=repository"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_createcluster 12 demo"
2018-02-24 05:38:45 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-02-24 05:38:45 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-02-24 05:38:45 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres cat /var/lib/postgresql/12/demo/postgresql.auto.conf"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
"# Do not edit this file manually!",
"# It will be overwritten by the ALTER SYSTEM command.",
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:50:11",
2019-10-01 22:02:07 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
2021-06-07 12:51:08 +02:00
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:50:42",
2021-06-07 12:51:08 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:50:53",
2021-06-07 12:51:08 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
2022-03-06 18:30:59 +02:00
"# Removed by pgBackRest restore on 2022-03-06 15:51:22 # recovery_target = 'immediate'",
"# Removed by pgBackRest restore on 2022-03-06 15:51:22 # recovery_target_action = 'promote'",
2021-06-07 12:51:08 +02:00
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:51:22",
2021-06-07 12:51:08 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
2022-03-06 18:30:59 +02:00
"# Removed by pgBackRest restore on 2022-03-06 15:52:15 # recovery_target_time = '2022-03-06 15:51:04.010329+00'",
"# Removed by pgBackRest restore on 2022-03-06 15:52:15 # recovery_target_action = 'promote'",
2021-06-07 12:51:08 +02:00
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:52:15",
2021-06-07 12:51:08 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:52:48",
2021-06-07 12:51:08 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'"
2016-06-02 17:10:24 +02:00
]
}
},
2021-08-23 12:52:51 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"cat /root/postgresql.common.conf >> /etc/postgresql/12/demo/postgresql.conf"
2021-08-23 12:52:51 +02:00
],
"host" : "pg-standby",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2021-06-07 12:51:08 +02:00
"file" : "/etc/postgresql/12/demo/postgresql.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2016-06-02 17:10:24 +02:00
"option" : {
2019-01-02 22:04:47 +02:00
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
2016-06-02 17:10:24 +02:00
"hot_standby" : {
"value" : "on"
2018-02-24 05:38:45 +02:00
},
2019-01-02 22:04:47 +02:00
"max_wal_senders" : {
"value" : "3"
},
"wal_level" : {
2021-06-07 12:51:08 +02:00
"value" : "replica"
2016-06-02 17:10:24 +02:00
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
2019-01-02 22:04:47 +02:00
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
2018-02-24 05:38:45 +02:00
"hot_standby = on",
2019-01-02 22:04:47 +02:00
"max_wal_senders = 3",
2021-06-07 12:51:08 +02:00
"wal_level = replica"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo rm /var/log/postgresql/postgresql-12-demo.log"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 12 demo start"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres cat /var/log/postgresql/postgresql-12-demo.log"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"entering standby mode|database system is ready to accept read only connections"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
" [filtered 3 lines of output]",
2021-06-07 12:51:08 +02:00
"LOG: listening on Unix socket \"/var/run/postgresql/.s.PGSQL.5432\"",
2022-03-06 18:30:59 +02:00
"LOG: database system was interrupted; last known up at 2022-03-06 15:52:28 UTC",
2016-06-02 17:10:24 +02:00
"LOG: entering standby mode",
"LOG: restored log file \"00000008.history\" from archive",
2022-03-06 18:30:59 +02:00
"LOG: restored log file \"000000080000000000000021\" from archive",
"LOG: redo starts at 0/21000028",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000080000000000000022\" from archive",
2022-03-06 18:30:59 +02:00
"LOG: consistent recovery state reached at 0/22000050",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"LOG: database system is ready to accept read only connections"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"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"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres psql -c \"select * from replicated_table;\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"replicated_table\" does not exist",
"LINE 1: select * from replicated_table;",
" ^"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres psql -c \"select *, current_timestamp from pg_switch_wal()\";"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
" pg_switch_wal | current_timestamp ",
"---------------+-------------------------------",
2022-03-06 18:30:59 +02:00
" 0/23021810 | 2022-03-06 15:52:56.262844+00",
2016-06-02 17:10:24 +02:00
"(1 row)"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select *, current_timestamp from replicated_table\""
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
" message | current_timestamp ",
2020-03-26 23:14:53 +02:00
"----------------+-------------------------------",
2022-03-06 18:30:59 +02:00
" Important Data | 2022-03-06 15:52:56.899599+00",
2016-06-02 17:10:24 +02:00
"(1 row)"
]
}
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2019-11-12 22:51:28 +02:00
"because this is a standby"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: check command begin 2.38: --exec-id=1407-7558bec6 --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --repo1-host=repository --stanza=demo",
2021-02-08 16:08:16 +02:00
"P00 INFO: check repo1 (standby)",
2019-11-12 22:51:28 +02:00
"P00 INFO: switch wal not performed because this is a standby",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"P00 INFO: check command end: completed successfully"
]
}
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres psql -c \" \\",
" create user replicator password 'jw8s0F4' replication\";"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"CREATE ROLE"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres sh -c 'echo \\",
2020-07-20 14:57:22 +02:00
" \"host replication replicator 172.17.0.7/32 md5\" \\",
2021-06-07 12:51:08 +02:00
" >> /etc/postgresql/12/demo/pg_hba.conf'"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 12 demo reload"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2016-06-02 17:10:24 +02:00
"option" : {
"demo" : {
"recovery-option" : {
2020-07-20 14:57:22 +02:00
"value" : "primary_conninfo=host=172.17.0.5 port=5432 user=replicator"
2016-06-02 17:10:24 +02:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2020-07-20 14:57:22 +02:00
"recovery-option=primary_conninfo=host=172.17.0.5 port=5432 user=replicator",
2016-06-02 17:10:24 +02:00
"",
"[global]",
2018-05-07 01:53:42 +02:00
"log-level-file=detail",
2018-02-24 05:38:45 +02:00
"repo1-host=repository"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres sh -c 'echo \\",
2020-07-20 14:57:22 +02:00
" \"172.17.0.5:*:replication:replicator:jw8s0F4\" \\",
2021-06-07 12:51:08 +02:00
" >> /var/lib/postgresql/.pgpass'"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres chmod 600 /var/lib/postgresql/.pgpass"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 12 demo stop"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2019-10-01 22:02:07 +02:00
"sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres cat /var/lib/postgresql/12/demo/postgresql.auto.conf"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
"# Do not edit this file manually!",
"# It will be overwritten by the ALTER SYSTEM command.",
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:50:11",
2019-10-01 22:02:07 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
2021-06-07 12:51:08 +02:00
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:50:42",
2021-06-07 12:51:08 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:50:53",
2021-06-07 12:51:08 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
2022-03-06 18:30:59 +02:00
"# Removed by pgBackRest restore on 2022-03-06 15:51:22 # recovery_target = 'immediate'",
"# Removed by pgBackRest restore on 2022-03-06 15:51:22 # recovery_target_action = 'promote'",
2021-06-07 12:51:08 +02:00
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:51:22",
2021-06-07 12:51:08 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
2022-03-06 18:30:59 +02:00
"# Removed by pgBackRest restore on 2022-03-06 15:52:15 # recovery_target_time = '2022-03-06 15:51:04.010329+00'",
"# Removed by pgBackRest restore on 2022-03-06 15:52:15 # recovery_target_action = 'promote'",
2021-06-07 12:51:08 +02:00
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:52:15",
2021-06-07 12:51:08 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
"",
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:53:00",
2021-06-07 12:51:08 +02:00
"primary_conninfo = 'host=172.17.0.5 port=5432 user=replicator'",
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo rm /var/log/postgresql/postgresql-12-demo.log"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 12 demo start"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres cat /var/log/postgresql/postgresql-12-demo.log"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"started streaming WAL from primary"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
" [filtered 11 lines of output]",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"LOG: database system is ready to accept read only connections",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000080000000000000023\" from archive",
"LOG: started streaming WAL from primary at 0/24000000 on timeline 8"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"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"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2021-06-07 12:51:08 +02:00
" message | current_timestamp ",
2021-04-05 15:18:20 +02:00
"----------------+-------------------------------",
2022-03-06 18:30:59 +02:00
" Important Data | 2022-03-06 15:53:06.979124+00",
2016-06-02 17:10:24 +02:00
"(1 row)"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select *, current_timestamp from stream_table\""
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2016-11-17 16:57:59 +02:00
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" message | current_timestamp ",
"----------------+-------------------------------",
2022-03-06 18:30:59 +02:00
" Important Data | 2022-03-06 15:53:07.228004+00",
2016-11-17 16:57:59 +02:00
"(1 row)"
]
}
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 17:49:09 +02:00
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p -m 750 /var/spool/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chown postgres:postgres /var/spool/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2018-02-24 05:38:45 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p -m 750 /var/spool/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chown postgres:postgres /var/spool/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-05-07 01:53:42 +02:00
"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"
}
}
}
2016-07-02 16:22:52 +02:00
},
2018-05-07 01:53:42 +02:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2018-05-07 01:53:42 +02:00
"",
"[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]",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2020-07-20 14:57:22 +02:00
"recovery-option=primary_conninfo=host=172.17.0.5 port=5432 user=replicator",
2018-05-07 01:53:42 +02:00
"",
"[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" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres psql -c \"alter user replicator password 'bogus'\""
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"ALTER ROLE"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 12 demo restart"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres rm -f /var/log/pgbackrest/demo-archive-push-async.log"
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres psql -c \" \\",
2021-06-07 12:51:08 +02:00
" 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();\""
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"WAL segment"
]
},
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: check command begin 2.38: --exec-id=3630-cef43c21 --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --repo1-host=repository --stanza=demo",
2021-02-08 16:08:16 +02:00
"P00 INFO: check repo1 configuration (primary)",
"P00 INFO: check repo1 archive for WAL (primary)",
2022-03-06 18:30:59 +02:00
"P00 INFO: WAL segment 000000080000000000000029 successfully archived to '/var/lib/pgbackrest/archive/demo/12-1/0000000800000000/000000080000000000000029-906559069a8bed3a75267bc0b69ba1af5c608cf8.gz' on repo1",
2018-05-07 01:53:42 +02:00
"P00 INFO: check command end: completed successfully"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2019-04-11 15:14:22 +02:00
" WAL file\\(s\\) to archive|pushed WAL file \\'0000000"
2018-05-07 01:53:42 +02:00
]
},
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"-------------------PROCESS START-------------------",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-push:async command begin 2.38: [/var/lib/postgresql/12/demo/pg_wal] --archive-async --exec-id=3615-e3669d33 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo",
2022-01-03 15:43:55 +02:00
"P00 INFO: push 1 WAL file(s) to archive: 000000080000000000000024",
"P01 DETAIL: pushed WAL file '000000080000000000000024' to the archive",
2020-01-15 22:21:52 +02:00
"P00 INFO: archive-push:async command end: completed successfully",
2019-03-10 18:56:00 +02:00
"",
"-------------------PROCESS START-------------------",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-push:async command begin 2.38: [/var/lib/postgresql/12/demo/pg_wal] --archive-async --exec-id=3633-a32f5183 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo",
2022-01-03 15:43:55 +02:00
"P00 INFO: push 4 WAL file(s) to archive: 000000080000000000000025...000000080000000000000028",
"P02 DETAIL: pushed WAL file '000000080000000000000026' to the archive",
"P01 DETAIL: pushed WAL file '000000080000000000000025' to the archive",
"P02 DETAIL: pushed WAL file '000000080000000000000027' to the archive",
"P01 DETAIL: pushed WAL file '000000080000000000000028' to the archive",
2020-10-05 17:51:45 +02:00
"P00 INFO: archive-push:async command end: completed successfully",
"",
"-------------------PROCESS START-------------------",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-push:async command begin 2.38: [/var/lib/postgresql/12/demo/pg_wal] --archive-async --exec-id=3649-07aa6201 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo",
2022-01-03 15:43:55 +02:00
"P00 INFO: push 1 WAL file(s) to archive: 000000080000000000000029",
"P01 DETAIL: pushed WAL file '000000080000000000000029' to the archive",
v2.29: Auto S3 Credentials on AWS
Bug Fixes:
* Suppress errors when closing local/remote processes. Since the command has completed it is counterproductive to throw an error but still warn to indicate that something unusual happened. (Reviewed by Cynthia Shang. Reported by argdenis.)
* Fix issue with = character in file or database names. (Reviewed by Bastian Wegge, Cynthia Shang. Reported by Brad Nicholson, Bastian Wegge.)
Features:
* Automatically retrieve temporary S3 credentials on AWS instances. (Contributed by David Steele, Stephen Frost. Reviewed by Cynthia Shang, David Youatt, Aleš Zelený, Jeanette Bromage.)
* Add archive-mode option to disable archiving on restore. (Reviewed by Stephen Frost. Suggested by Stephen Frost.)
Improvements:
* PostgreSQL 13 beta3 support. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
* Asynchronous list/remove for S3/Azure storage. (Reviewed by Cynthia Shang, Stephen Frost.)
* Improve memory usage of unlogged relation detection in manifest build. (Reviewed by Cynthia Shang, Stephen Frost, Brad Nicholson, Oscar. Suggested by Oscar, Brad Nicholson.)
* Proactively close file descriptors after forking async process. (Reviewed by Stephen Frost, Cynthia Shang.)
* Delay backup remote connection close until after archive check. (Contributed by Floris van Nee. Reviewed by David Steele.)
* Improve detailed error output. (Reviewed by Cynthia Shang.)
* Improve TLS error reporting. (Reviewed by Cynthia Shang, Stephen Frost.)
Documentation Bug Fixes:
* Add none to compress-type option reference and fix example. (Reported by Ugo Bellavance, Don Seiler.)
* Add missing azure type in repo-type option reference. (Fixed by Don Seiler. Reviewed by David Steele.)
* Fix typo in repo-cipher-type option reference. (Fixed by Don Seiler. Reviewed by David Steele.)
Documentation Improvements:
* Clarify that expire must be run regularly when expire-auto is disabled. (Reviewed by Douglas J Hunley. Suggested by Douglas J Hunley.)
2020-08-31 13:28:22 +02:00
"P00 INFO: archive-push:async command end: completed successfully"
2018-05-07 01:53:42 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres sleep 5"
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2021-02-08 16:08:16 +02:00
"found [0-F]{24} in the .* archive"
2018-05-07 01:53:42 +02:00
]
},
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"-------------------PROCESS START-------------------",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-get:async command begin 2.38: [000000080000000000000021, 000000080000000000000022, 000000080000000000000023, 000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027, 000000080000000000000028] --archive-async --exec-id=1650-6d02b74d --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo",
"P00 INFO: get 8 WAL file(s) from archive: 000000080000000000000021...000000080000000000000028",
"P02 DETAIL: found 000000080000000000000022 in the repo1: 12-1 archive",
"P01 DETAIL: found 000000080000000000000021 in the repo1: 12-1 archive",
2022-01-03 15:43:55 +02:00
"P02 DETAIL: found 000000080000000000000023 in the repo1: 12-1 archive",
"P00 DETAIL: unable to find 000000080000000000000024 in the archive",
2021-02-08 16:08:16 +02:00
"P00 INFO: archive-get:async command end: completed successfully",
2021-06-07 12:51:08 +02:00
" [filtered 14 lines of output]",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-get:async command begin 2.38: [000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027, 000000080000000000000028, 000000080000000000000029, 00000008000000000000002A, 00000008000000000000002B] --archive-async --exec-id=1694-184298fa --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/12/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo",
2022-01-03 15:43:55 +02:00
"P00 INFO: get 8 WAL file(s) from archive: 000000080000000000000024...00000008000000000000002B",
"P01 DETAIL: found 000000080000000000000024 in the repo1: 12-1 archive",
2022-03-06 18:30:59 +02:00
"P02 DETAIL: found 000000080000000000000025 in the repo1: 12-1 archive",
"P01 DETAIL: found 000000080000000000000026 in the repo1: 12-1 archive",
"P02 DETAIL: found 000000080000000000000027 in the repo1: 12-1 archive",
"P01 DETAIL: found 000000080000000000000028 in the repo1: 12-1 archive",
2022-01-03 15:43:55 +02:00
"P02 DETAIL: found 000000080000000000000029 in the repo1: 12-1 archive",
"P00 DETAIL: unable to find 00000008000000000000002A in the archive",
"P00 INFO: archive-get:async command end: completed successfully",
2022-03-06 18:30:59 +02:00
" [filtered 11 lines of output]"
2018-05-07 01:53:42 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres psql -c \"alter user replicator password 'jw8s0F4'\""
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"ALTER ROLE"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "repository",
"option" : {
"demo" : {
"pg2-host" : {
"value" : "pg-standby"
},
"pg2-path" : {
2021-06-07 12:51:08 +02:00
"value" : "/var/lib/postgresql/12/demo"
2018-05-07 01:53:42 +02:00
}
},
"global" : {
"backup-standby" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"pg1-host=pg-primary",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/12/demo",
2018-05-07 01:53:42 +02:00
"pg2-host=pg-standby",
2021-06-07 12:51:08 +02:00
"pg2-path=/var/lib/postgresql/12/demo",
2018-05-07 01:53:42 +02:00
"",
"[global]",
"backup-standby=y",
"process-max=3",
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
"start-fast=y"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"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",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
" [filtered 2 lines of output]",
2021-06-07 12:51:08 +02:00
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes",
2022-01-03 15:43:55 +02:00
"P00 INFO: backup start archive = 00000008000000000000002B, lsn = 0/2B000028",
"P00 INFO: wait for replay on the standby to reach 0/2B000028",
"P00 INFO: replay on the standby reached 0/2B000028",
"P00 INFO: check archive for prior segment 00000008000000000000002A",
2022-03-06 18:30:59 +02:00
"P01 DETAIL: backup file pg-primary:/var/lib/postgresql/12/demo/global/pg_control (8KB, 0%) checksum 9023ede738ec31ef0abe1fa2a0d76bebab408db6",
2022-01-03 15:43:55 +02:00
"P01 DETAIL: backup file pg-primary:/var/lib/postgresql/12/demo/pg_logical/replorigin_checkpoint (8B, 0%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532",
2022-03-06 18:30:59 +02:00
"P02 DETAIL: backup file pg-standby:/var/lib/postgresql/12/demo/base/13398/2608 (456KB, 19%) checksum fc03d2c5d58b40e77f08c05d1cbba5a03b61809d",
"P03 DETAIL: backup file pg-standby:/var/lib/postgresql/12/demo/base/13398/1249 (440KB, 38%) checksum 2065b9cd5601fda0f28426e111e83eb23d5fc02b",
2022-01-03 15:43:55 +02:00
" [filtered 1293 lines of output]"
2018-05-07 01:53:42 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 12 demo stop"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
2018-05-07 01:53:42 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 12 demo stop"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
2018-05-07 01:53:42 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres /usr/lib/postgresql/13/bin/initdb \\",
" -D /var/lib/postgresql/13/demo -k -A peer"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
2016-07-02 16:22:52 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_createcluster 13 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/13/bin/pg_upgrade \\",
" --old-bindir=/usr/lib/postgresql/12/bin \\",
" --new-bindir=/usr/lib/postgresql/13/bin \\",
" --old-datadir=/var/lib/postgresql/12/demo \\",
" --new-datadir=/var/lib/postgresql/13/demo \\",
" --old-options=\" -c config_file=/etc/postgresql/12/demo/postgresql.conf\" \\",
" --new-options=\" -c config_file=/etc/postgresql/13/demo/postgresql.conf\"'"
2016-07-02 16:22:52 +02:00
],
2017-04-13 01:17:39 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Upgrade Complete"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-07-02 16:22:52 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe",
"value" : {
"output" : [
2021-11-01 14:59:14 +02:00
" [filtered 66 lines of output]",
"Checking for extension updates ok",
2017-04-13 01:17:39 +02:00
"",
"Upgrade Complete",
"----------------",
"Optimizer statistics are not transferred by pg_upgrade so,",
" [filtered 4 lines of output]"
]
}
2016-07-02 16:22:52 +02:00
},
2022-03-06 18:30:59 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
"cat /root/postgresql.common.conf >> /etc/postgresql/13/demo/postgresql.conf"
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
2016-07-02 16:22:52 +02:00
{
"key" : {
2021-06-07 12:51:08 +02:00
"file" : "/etc/postgresql/13/demo/postgresql.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-04-13 01:17:39 +02:00
"option" : {
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
"max_wal_senders" : {
"value" : "3"
},
"wal_level" : {
2021-06-07 12:51:08 +02:00
"value" : "replica"
2017-04-13 01:17:39 +02:00
}
}
2016-07-02 16:22:52 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "cfg-postgresql",
"value" : {
"config" : [
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
"max_wal_senders = 3",
2021-06-07 12:51:08 +02:00
"wal_level = replica"
2017-04-13 01:17:39 +02:00
]
}
2016-07-02 16:22:52 +02:00
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-04-13 01:17:39 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2021-06-07 12:51:08 +02:00
"value" : "/var/lib/postgresql/13/demo"
2017-04-13 01:17:39 +02:00
}
}
}
2016-07-02 16:22:52 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/13/demo",
2017-04-13 01:17:39 +02:00
"",
"[global]",
"archive-async=y",
"log-level-file=detail",
2018-02-24 05:38:45 +02:00
"repo1-host=repository",
2017-04-13 01:17:39 +02:00
"spool-path=/var/spool/pgbackrest",
"",
2018-05-07 01:53:42 +02:00
"[global:archive-get]",
"process-max=2",
"",
2017-04-13 01:17:39 +02:00
"[global:archive-push]",
"process-max=2"
]
}
2016-07-02 16:22:52 +02:00
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2017-04-13 01:17:39 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2021-06-07 12:51:08 +02:00
"value" : "/var/lib/postgresql/13/demo"
2017-04-13 01:17:39 +02:00
}
}
}
2016-07-02 16:22:52 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/13/demo",
2020-07-20 14:57:22 +02:00
"recovery-option=primary_conninfo=host=172.17.0.5 port=5432 user=replicator",
2017-04-13 01:17:39 +02:00
"",
"[global]",
2018-05-07 01:53:42 +02:00
"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"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2017-04-13 01:17:39 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2021-06-07 12:51:08 +02:00
"value" : "/var/lib/postgresql/13/demo"
2017-04-13 01:17:39 +02:00
},
2018-02-24 05:38:45 +02:00
"pg2-path" : {
2021-06-07 12:51:08 +02:00
"value" : "/var/lib/postgresql/13/demo"
2017-04-13 01:17:39 +02:00
}
},
"global" : {
"backup-standby" : {
"value" : "n"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2018-02-24 05:38:45 +02:00
"pg1-host=pg-primary",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/13/demo",
2018-02-24 05:38:45 +02:00
"pg2-host=pg-standby",
2021-06-07 12:51:08 +02:00
"pg2-path=/var/lib/postgresql/13/demo",
2017-04-13 01:17:39 +02:00
"",
"[global]",
"backup-standby=n",
"process-max=3",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
2017-04-13 01:17:39 +02:00
"start-fast=y"
]
}
2016-07-02 16:22:52 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo cp /etc/postgresql/12/demo/pg_hba.conf \\",
" /etc/postgresql/13/demo/pg_hba.conf"
2016-07-02 16:22:52 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-07-02 16:22:52 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --stanza=demo --no-online \\",
2017-04-13 01:17:39 +02:00
" --log-level-console=info stanza-upgrade"
2016-06-02 17:10:24 +02:00
],
2017-04-13 01:17:39 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"completed successfully"
]
},
2021-04-05 15:18:20 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: stanza-upgrade command begin 2.38: --exec-id=4054-c8933201 --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --no-online --pg1-path=/var/lib/postgresql/13/demo --repo1-host=repository --stanza=demo",
2021-02-08 16:08:16 +02:00
"P00 INFO: stanza-upgrade for stanza 'demo' on repo1",
2017-09-03 23:42:00 +02:00
"P00 INFO: stanza-upgrade command end: completed successfully"
2017-04-13 01:17:39 +02:00
]
}
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 13 demo start"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2020-12-07 16:55:00 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres pg_lsclusters"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
2021-11-01 14:59:14 +02:00
"output" : false,
2018-07-06 02:16:41 +02:00
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2021-11-01 14:59:14 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-04-13 01:17:39 +02:00
"sudo -u postgres pgbackrest --stanza=demo check"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-13 02:18:27 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-13 02:18:27 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_dropcluster 12 demo"
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-13 02:18:27 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-13 02:18:27 +02:00
},
"type" : "exe"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_dropcluster 12 demo"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_createcluster 13 demo"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo check"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2019-08-05 18:03:04 +02:00
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"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",
2021-11-01 14:59:14 +02:00
" \tIs the server running locally and accepting connections on that socket?"
2019-08-05 18:03:04 +02:00
]
}
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-02-24 05:38:45 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-02-24 05:38:45 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore"
2018-02-24 05:38:45 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2021-06-07 12:51:08 +02:00
"file" : "/etc/postgresql/13/demo/postgresql.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2016-06-02 17:10:24 +02:00
"option" : {
2017-04-13 01:17:39 +02:00
"hot_standby" : {
"value" : "on"
2016-06-02 17:10:24 +02:00
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
2017-04-13 01:17:39 +02:00
"hot_standby = on"
2016-06-02 17:10:24 +02:00
]
}
},
2017-04-13 01:17:39 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2021-06-07 12:51:08 +02:00
"sudo pg_ctlcluster 13 demo start"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
2018-02-24 05:38:45 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-02-24 05:38:45 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo check"
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-02-24 05:38:45 +02:00
},
"type" : "exe"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2016-06-02 17:10:24 +02:00
"option" : {
2016-10-10 23:35:58 +02:00
"global" : {
2018-08-31 19:19:43 +02:00
"backup-standby" : {
"value" : "y"
}
}
}
2018-07-06 02:16:41 +02:00
},
2018-08-31 19:19:43 +02:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"pg1-host=pg-primary",
2021-06-07 12:51:08 +02:00
"pg1-path=/var/lib/postgresql/13/demo",
2018-08-31 19:19:43 +02:00
"pg2-host=pg-standby",
2021-06-07 12:51:08 +02:00
"pg2-path=/var/lib/postgresql/13/demo",
2018-08-31 19:19:43 +02:00
"",
"[global]",
"backup-standby=y",
"process-max=3",
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
"start-fast=y"
]
}
}
]
}
},
2021-06-07 12:51:08 +02:00
"{\"os-type\":\"rhel\"}" : {
2018-08-31 19:19:43 +02:00
"all" : {
"user-guide" : [
2020-07-20 14:57:22 +02:00
{
"key" : {
"id" : "azure",
"image" : "mcr.microsoft.com/azure-storage/azurite",
"name" : "azure-server",
2021-08-23 12:52:51 +02:00
"option" : "-m 128m -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='",
2021-06-07 12:51:08 +02:00
"os" : "rhel",
2020-07-20 14:57:22 +02:00
"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"
}
},
2019-06-25 14:29:06 +02:00
{
"key" : {
"id" : "s3",
2022-03-06 18:30:59 +02:00
"image" : "minio/minio:RELEASE.2022-01-28T02-28-16Z",
2019-06-25 14:29:06 +02:00
"name" : "s3-server",
2021-08-23 12:52:51 +02:00
"option" : "-m 128m -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",
2021-06-07 12:51:08 +02:00
"os" : "rhel",
2019-11-12 22:51:28 +02:00
"param" : "server /data --address :443",
2019-06-25 14:29:06 +02:00
"update-hosts" : false
},
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.3"
2019-06-25 14:29:06 +02:00
}
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-08-31 19:19:43 +02:00
"id" : "build",
2021-06-07 12:51:08 +02:00
"image" : "pgbackrest/doc:rhel",
2018-08-31 19:19:43 +02:00
"name" : "build",
2021-08-23 12:52:51 +02:00
"option" : "-m 256m -v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run",
2021-06-07 12:51:08 +02:00
"os" : "rhel",
2018-08-31 19:19:43 +02:00
"update-hosts" : true
2016-06-02 17:10:24 +02:00
},
2018-08-31 19:19:43 +02:00
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.4"
2018-08-31 19:19:43 +02:00
}
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo mkdir -p /build/pgbackrest-release-2.38"
2016-11-08 12:47:47 +02:00
],
2018-08-31 19:19:43 +02:00
"host" : "build",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-11-08 12:47:47 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
2016-11-08 12:47:47 +02:00
},
2016-07-02 16:22:52 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo cp -r /pgbackrest/src /build/pgbackrest-release-2.38"
2019-09-03 22:39:32 +02:00
],
"host" : "build",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo chown -R vagrant /build/pgbackrest-release-2.38"
2016-07-02 16:22:52 +02:00
],
2018-08-31 19:19:43 +02:00
"host" : "build",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-07-02 16:22:52 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
2016-07-02 16:22:52 +02:00
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-12-07 16:55:00 +02:00
"sudo yum install make gcc postgresql10-devel \\",
2021-08-23 12:52:51 +02:00
" openssl-devel libxml2-devel lz4-devel libzstd-devel bzip2-devel libyaml-devel"
2016-06-02 17:10:24 +02:00
],
2018-07-06 02:16:41 +02:00
"cmd-extra" : "-y 2>&1",
2018-08-31 19:19:43 +02:00
"host" : "build",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2022-03-06 18:30:59 +02:00
"cd /build/pgbackrest-release-2.38/src && ./configure && make"
2018-05-07 01:53:42 +02:00
],
2021-08-23 12:52:51 +02:00
"cmd-extra" : "-j 4",
2018-08-31 19:19:43 +02:00
"host" : "build",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
2018-08-31 19:19:43 +02:00
{
"key" : {
"id" : "pg1",
2021-06-07 12:51:08 +02:00
"image" : "pgbackrest/doc:rhel",
2018-08-31 19:19:43 +02:00
"name" : "pg-primary",
2021-08-23 12:52:51 +02:00
"option" : "-m 512m -v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run",
2021-06-07 12:51:08 +02:00
"os" : "rhel",
2018-08-31 19:19:43 +02:00
"update-hosts" : true
},
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.5"
2018-08-31 19:19:43 +02:00
}
},
2018-05-07 01:53:42 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo yum install postgresql-libs"
2018-07-06 02:16:41 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "-y 2>&1",
2021-08-23 12:52:51 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo scp build:/build/pgbackrest-release-2.38/src/pgbackrest /usr/bin"
2018-05-07 01:53:42 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "2>&1",
2018-05-07 01:53:42 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo chmod 755 /usr/bin/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p -m 770 /var/log/pgbackrest"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
2017-08-09 00:09:07 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-08-09 00:09:07 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo chown postgres:postgres /var/log/pgbackrest"
2017-08-09 00:09:07 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-08-09 00:09:07 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-08-09 00:09:07 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest"
2017-08-09 00:09:07 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-08-09 00:09:07 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-08-09 00:09:07 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest/conf.d"
2017-08-09 00:09:07 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-08-09 00:09:07 +02:00
},
"type" : "exe"
},
2017-11-22 01:31:54 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-11-22 01:31:54 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo touch /etc/pgbackrest/pgbackrest.conf"
2017-11-22 01:31:54 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-11-22 01:31:54 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-11-22 01:31:54 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo chmod 640 /etc/pgbackrest/pgbackrest.conf"
2017-11-22 01:31:54 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-11-22 01:31:54 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-11-22 01:31:54 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf"
2017-11-22 01:31:54 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-11-22 01:31:54 +02:00
},
"type" : "exe"
},
2017-04-13 01:17:39 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
"sudo -u postgres pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"pgBackRest 2.38 - General help",
2016-06-02 17:10:24 +02:00
"",
2017-04-13 01:17:39 +02:00
"Usage:",
" pgbackrest [options] [command]",
2016-06-02 17:10:24 +02:00
"",
2017-04-13 01:17:39 +02:00
"Commands:",
" 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.",
2021-04-05 15:18:20 +02:00
" repo-get Get a file from a repository.",
2021-02-08 16:08:16 +02:00
" repo-ls List files in a repository.",
2017-04-13 01:17:39 +02:00
" restore Restore a database cluster.",
2022-01-03 15:43:55 +02:00
" server pgBackRest server.",
" server-ping Ping pgBackRest server.",
2017-04-13 01:17:39 +02:00
" stanza-create Create the required stanza data.",
2018-02-24 05:38:45 +02:00
" stanza-delete Delete a stanza.",
2017-04-13 01:17:39 +02:00
" stanza-upgrade Upgrade a stanza.",
" start Allow pgBackRest processes to run.",
" stop Stop pgBackRest processes from running.",
" version Get version.",
"",
"Use 'pgbackrest help [command]' for more information."
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres /usr/pgsql-10/bin/initdb \\",
" -D /var/lib/pgsql/10/data -k -A peer"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
2021-08-23 12:52:51 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"cat /root/postgresql.common.conf >> /var/lib/pgsql/10/data/postgresql.conf"
2021-08-23 12:52:51 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2020-07-20 14:57:22 +02:00
"file" : "/var/lib/pgsql/10/data/postgresql.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-04-13 01:17:39 +02:00
"option" : {
2019-01-02 22:04:47 +02:00
"log_filename" : {
"value" : "'postgresql.log'"
2017-04-13 01:17:39 +02:00
}
}
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "cfg-postgresql",
"value" : {
"config" : [
2022-03-06 18:30:59 +02:00
"log_filename = 'postgresql.log'"
2017-04-13 01:17:39 +02:00
]
}
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-04-13 01:17:39 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/var/lib/pgsql/10/data"
2017-04-13 01:17:39 +02:00
}
},
"global" : {
"log-level-stderr" : {
"value" : "off"
},
"log-timestamp" : {
"value" : "n"
}
}
}
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data"
2017-04-13 01:17:39 +02:00
]
}
2016-06-02 17:10:24 +02:00
},
2018-08-31 19:19:43 +02:00
{
"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" : [
2022-03-06 18:30:59 +02:00
"pgBackRest 2.38 - 'backup' command - 'log-path' option help",
2018-08-31 19:19:43 +02:00
"",
"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"
]
}
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo mkdir -p /var/lib/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-04-13 01:17:39 +02:00
"sudo chmod 750 /var/lib/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-04-13 01:17:39 +02:00
"sudo chown postgres:postgres /var/lib/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2016-06-02 17:10:24 +02:00
"option" : {
"global" : {
2018-02-24 05:38:45 +02:00
"repo1-path" : {
2017-04-13 01:17:39 +02:00
"value" : "/var/lib/pgbackrest"
2016-06-02 17:10:24 +02:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2016-06-02 17:10:24 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2020-07-20 14:57:22 +02:00
"file" : "/var/lib/pgsql/10/data/postgresql.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-04-13 01:17:39 +02:00
"option" : {
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
"max_wal_senders" : {
"value" : "3"
},
"wal_level" : {
2019-06-25 14:29:06 +02:00
"value" : "replica"
2017-04-13 01:17:39 +02:00
}
}
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "cfg-postgresql",
2016-06-02 17:10:24 +02:00
"value" : {
2017-04-13 01:17:39 +02:00
"config" : [
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
2019-01-02 22:04:47 +02:00
"log_filename = 'postgresql.log'",
2017-04-13 01:17:39 +02:00
"max_wal_senders = 3",
2019-06-25 14:29:06 +02:00
"wal_level = replica"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl restart postgresql-10.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
2022-03-06 18:30:59 +02:00
{
"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"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global:archive-push" : {
"compress-level" : {
"value" : "3"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2018-05-07 01:53:42 +02:00
"",
"[global]",
"repo1-path=/var/lib/pgbackrest",
"",
"[global:archive-push]",
"compress-level=3"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2016-06-02 17:10:24 +02:00
"option" : {
"global" : {
2018-02-24 05:38:45 +02:00
"repo1-retention-full" : {
2017-04-13 01:17:39 +02:00
"value" : "2"
2016-06-02 17:10:24 +02:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2016-06-02 17:10:24 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest",
2018-05-07 01:53:42 +02:00
"repo1-retention-full=2",
"",
"[global:archive-push]",
"compress-level=3"
2016-06-02 17:10:24 +02:00
]
}
},
2017-11-22 01:31:54 +02:00
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-11-22 01:31:54 +02:00
"option" : {
"global" : {
2018-02-24 05:38:45 +02:00
"repo1-cipher-pass" : {
2017-11-22 01:31:54 +02:00
"value" : "zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO"
},
2018-02-24 05:38:45 +02:00
"repo1-cipher-type" : {
2017-11-22 01:31:54 +02:00
"value" : "aes-256-cbc"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2017-11-22 01:31:54 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO",
"repo1-cipher-type=aes-256-cbc",
"repo1-path=/var/lib/pgbackrest",
2018-05-07 01:53:42 +02:00
"repo1-retention-full=2",
"",
"[global:archive-push]",
"compress-level=3"
2017-11-22 01:31:54 +02:00
]
}
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-04-13 01:17:39 +02:00
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-13 01:17:39 +02:00
"completed successfully"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: stanza-create command begin 2.38: --exec-id=1105-a5f9af42 --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/data --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo",
2021-02-08 16:08:16 +02:00
"P00 INFO: stanza-create for stanza 'demo' on repo1",
2017-04-13 01:17:39 +02:00
"P00 INFO: stanza-create command end: completed successfully"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2019-08-05 18:03:04 +02:00
" successfully archived to "
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe",
2016-06-02 17:10:24 +02:00
"value" : {
2017-04-13 01:17:39 +02:00
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: check command begin 2.38: --exec-id=1132-6eb7c46d --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/data --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo",
2021-02-08 16:08:16 +02:00
"P00 INFO: check repo1 configuration (primary)",
"P00 INFO: check repo1 archive for WAL (primary)",
2022-03-06 18:30:59 +02:00
"P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/10-1/0000000100000000/000000010000000000000001-c1880edf6b0208ff8529a5bbcf0c7a0f95727017.gz' on repo1",
2017-04-13 01:17:39 +02:00
"P00 INFO: check command end: completed successfully"
2016-06-02 17:10:24 +02:00
]
}
},
2021-08-23 12:52:51 +02:00
{
"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/10/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"
]
}
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-04-13 01:17:39 +02:00
"sudo -u postgres pgbackrest --stanza=demo \\",
" --log-level-console=info backup"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-13 01:17:39 +02:00
"no prior backup exists|full backup size"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: backup command begin 2.38: --exec-id=1203-108e58c4 --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/data --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast",
2017-04-13 01:17:39 +02:00
"P00 WARN: no prior backup exists, incr backup has been changed to full",
2021-08-23 12:52:51 +02:00
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes",
2017-04-13 01:17:39 +02:00
"P00 INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028",
2022-01-03 15:43:55 +02:00
" [filtered 3 lines of output]",
"P00 INFO: check archive for segment(s) 000000010000000000000002:000000010000000000000003",
2022-03-06 18:30:59 +02:00
"P00 INFO: new backup label = 20220306-154349F",
2021-08-23 12:52:51 +02:00
"P00 INFO: full backup size = 22.5MB, file total = 949",
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1203-108e58c4 --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-154349F"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-04-13 01:17:39 +02:00
"sudo -u postgres pgbackrest --stanza=demo --type=diff \\",
2016-06-02 17:10:24 +02:00
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-13 01:17:39 +02:00
"diff backup size"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" [filtered 7 lines of output]",
"P00 INFO: check archive for segment(s) 000000010000000000000004:000000010000000000000005",
2022-03-06 18:30:59 +02:00
"P00 INFO: new backup label = 20220306-154349F_20220306-154353D",
2022-01-03 15:43:55 +02:00
"P00 INFO: diff backup size = 8.8KB, file total = 949",
2021-08-23 12:52:51 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1263-4805fd6a --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
"sudo -u postgres pgbackrest info"
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"(full|incr|diff) backup"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe",
2016-06-02 17:10:24 +02:00
"value" : {
2017-04-13 01:17:39 +02:00
"output" : [
"stanza: demo",
" status: ok",
2018-10-16 15:56:51 +02:00
" cipher: aes-256-cbc",
2016-06-02 17:10:24 +02:00
"",
2017-08-09 00:09:07 +02:00
" db (current)",
2022-01-03 15:43:55 +02:00
" wal archive min/max (10): 000000010000000000000001/000000010000000000000005",
2017-08-09 00:09:07 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-154349F",
" timestamp start/stop: 2022-03-06 15:43:49 / 2022-03-06 15:43:52",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000010000000000000002 / 000000010000000000000003",
2021-02-08 16:08:16 +02:00
" database size: 22.5MB, database backup size: 22.5MB",
" repo1: backup set size: 2.7MB, backup size: 2.7MB",
2017-04-13 01:17:39 +02:00
"",
2022-03-06 18:30:59 +02:00
" diff backup: 20220306-154349F_20220306-154353D",
" timestamp start/stop: 2022-03-06 15:43:53 / 2022-03-06 15:43:55",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000010000000000000004 / 000000010000000000000005",
" database size: 22.5MB, database backup size: 8.8KB",
" repo1: backup set size: 2.7MB, backup size: 752B",
2022-03-06 18:30:59 +02:00
" backup reference list: 20220306-154349F"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres rm /var/lib/pgsql/10/data/global/pg_control"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2016-06-02 17:10:24 +02:00
],
2017-04-13 01:17:39 +02:00
"err-expect" : "1",
2019-01-02 22:04:47 +02:00
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl status postgresql-10.service"
2019-01-02 22:04:47 +02:00
],
"err-expect" : "3",
2017-04-13 01:17:39 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2019-05-20 17:51:58 +02:00
"Failed to start PostgreSQL"
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2020-12-07 16:55:00 +02:00
" [filtered 12 lines of output]",
2022-03-06 18:30:59 +02:00
"Mar 06 15:43:56 pg-primary systemd[1]: postgresql-10.service: Main process exited, code=exited, status=2/INVALIDARGUMENT",
"Mar 06 15:43:56 pg-primary systemd[1]: postgresql-10.service: Failed with result 'exit-code'.",
"Mar 06 15:43:56 pg-primary systemd[1]: Failed to start PostgreSQL 10 database server."
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres find /var/lib/pgsql/10/data -mindepth 1 -delete"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo restore"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
2018-05-07 01:53:42 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2019-01-02 22:04:47 +02:00
"sudo -u postgres mkdir -p /var/lib/pgsql/pgbackrest/doc/example"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2019-01-30 22:37:35 +02:00
"sudo -u postgres cp -r /pgbackrest/doc/example/* \\",
2019-01-02 22:04:47 +02:00
" /var/lib/pgsql/pgbackrest/doc/example"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres cat \\",
2019-01-02 22:04:47 +02:00
" /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2019-01-30 22:37:35 +02:00
"-- An example of monitoring pgBackRest from within PostgreSQL",
2018-05-07 01:53:42 +02:00
"--",
"-- Use copy to export data from the pgBackRest info command into the jsonb",
2019-01-30 22:37:35 +02:00
"-- type so it can be queried directly by PostgreSQL.",
2018-05-07 01:53:42 +02:00
"",
"-- 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 jsonb);",
"",
2019-11-12 22:51:28 +02:00
" -- Copy data into the table directly from the pgBackRest info command",
2018-05-07 01:53:42 +02:00
" copy temp_pgbackrest_data (data)",
" from program",
2019-11-12 22:51:28 +02:00
" 'pgbackrest --output=json info' (format text);",
2018-05-07 01:53:42 +02:00
"",
" select temp_pgbackrest_data.data",
" into data",
" from temp_pgbackrest_data;",
"",
" drop table temp_pgbackrest_data;",
"",
" return data;",
"end $$ language plpgsql;"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres psql -f \\",
2019-01-02 22:04:47 +02:00
" /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres cat \\",
2019-01-02 22:04:47 +02:00
" /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"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;"
]
}
2016-09-07 14:29:21 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-09-07 14:29:21 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u postgres psql -f \\",
2019-01-02 22:04:47 +02:00
" /var/lib/pgsql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql"
2016-09-07 14:29:21 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-09-07 14:29:21 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2018-05-07 01:53:42 +02:00
" name | last_successful_backup | last_archived_wal ",
"--------+------------------------+--------------------------",
2022-03-06 18:30:59 +02:00
" \"demo\" | 2022-03-06 15:43:55+00 | 000000010000000000000005",
2018-05-07 01:53:42 +02:00
"(1 row)"
2016-09-07 14:29:21 +02:00
]
}
},
2017-09-29 01:06:41 +02:00
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-09-29 01:06:41 +02:00
"option" : {
"global" : {
2018-02-24 05:38:45 +02:00
"repo1-retention-full" : {
2017-09-29 01:06:41 +02:00
"value" : "2"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2017-09-29 01:06:41 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO",
"repo1-cipher-type=aes-256-cbc",
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
2017-09-29 01:06:41 +02:00
"start-fast=y",
2018-05-07 01:53:42 +02:00
"",
"[global:archive-push]",
"compress-level=3"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=full \\",
" --log-level-console=detail backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2022-03-06 18:30:59 +02:00
"archive retention on backup 20220306-154349F|remove archive"
2017-09-29 01:06:41 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" [filtered 958 lines of output]",
2017-09-29 01:06:41 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1767-6fe05c25 --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo",
"P00 DETAIL: repo1: 10-1 archive retention on backup 20220306-154349F, start = 000000010000000000000002",
2021-06-07 12:51:08 +02:00
"P00 INFO: repo1: 10-1 remove archive, start = 000000010000000000000001, stop = 000000010000000000000001",
2017-09-29 01:06:41 +02:00
"P00 INFO: expire command end: completed successfully"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-154403F"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=full \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2022-03-06 18:30:59 +02:00
"expire full backup set 20220306-154349F|archive retention on backup 20220306-154403F|remove archive"
2017-09-29 01:06:41 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" [filtered 9 lines of output]",
2017-09-29 01:06:41 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1826-5340bdb7 --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo",
"P00 INFO: repo1: expire full backup set 20220306-154349F, 20220306-154349F_20220306-154353D",
"P00 INFO: repo1: remove expired backup 20220306-154349F_20220306-154353D",
"P00 INFO: repo1: remove expired backup 20220306-154349F",
2022-01-03 15:43:55 +02:00
"P00 INFO: repo1: 10-1 remove archive, start = 0000000100000000, stop = 000000020000000000000006",
2021-06-07 12:51:08 +02:00
"P00 INFO: expire command end: completed successfully"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-09-29 01:06:41 +02:00
"option" : {
"global" : {
2018-02-24 05:38:45 +02:00
"repo1-retention-diff" : {
2017-09-29 01:06:41 +02:00
"value" : "1"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2017-09-29 01:06:41 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO",
"repo1-cipher-type=aes-256-cbc",
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-diff=1",
"repo1-retention-full=2",
2017-09-29 01:06:41 +02:00
"start-fast=y",
2018-05-07 01:53:42 +02:00
"",
"[global:archive-push]",
"compress-level=3"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=diff backup"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-154407F_20220306-154412D"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr backup"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=diff \\",
2017-04-13 01:17:39 +02:00
" --log-level-console=info backup"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2022-03-06 18:30:59 +02:00
"expire diff backup set 20220306-154407F_20220306-154412D"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" [filtered 10 lines of output]",
2017-09-29 01:06:41 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=1991-f827a85f --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --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 20220306-154407F_20220306-154412D, 20220306-154407F_20220306-154414I",
"P00 INFO: repo1: remove expired backup 20220306-154407F_20220306-154414I",
"P00 INFO: repo1: remove expired backup 20220306-154407F_20220306-154412D",
2021-06-07 12:51:08 +02:00
"P00 INFO: expire command end: completed successfully"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-04-13 01:17:39 +02:00
"option" : {
"global" : {
2018-02-24 05:38:45 +02:00
"repo1-retention-diff" : {
2017-04-13 01:17:39 +02:00
"value" : "2"
}
}
}
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2017-04-13 01:17:39 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO",
"repo1-cipher-type=aes-256-cbc",
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-diff=2",
"repo1-retention-full=2",
2017-04-13 01:17:39 +02:00
"start-fast=y",
2018-05-07 01:53:42 +02:00
"",
"[global:archive-push]",
"compress-level=3"
2017-04-13 01:17:39 +02:00
]
}
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-154407F_20220306-154416D"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres psql -c \" \\",
2020-07-20 14:57:22 +02:00
" select pg_create_restore_point('generate WAL'); select pg_switch_wal(); \\",
" select pg_create_restore_point('generate WAL'); select pg_switch_wal();\""
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=diff \\",
" --log-level-console=info backup"
2016-06-02 17:10:24 +02:00
],
2017-04-13 01:17:39 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-09-29 01:06:41 +02:00
"new backup label"
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" [filtered 6 lines of output]",
"P00 INFO: backup stop archive = 000000020000000000000013, lsn = 0/13000050",
"P00 INFO: check archive for segment(s) 000000020000000000000012:000000020000000000000013",
2022-03-06 18:30:59 +02:00
"P00 INFO: new backup label = 20220306-154407F_20220306-154419D",
"P00 INFO: diff backup size = 10.4KB, file total = 949",
2017-04-13 01:17:39 +02:00
"P00 INFO: backup command end: completed successfully",
2021-08-23 12:52:51 +02:00
" [filtered 2 lines of output]"
2017-04-13 01:17:39 +02:00
]
}
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-154407F_20220306-154419D"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \\",
2018-02-24 05:38:45 +02:00
" --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire"
2016-06-02 17:10:24 +02:00
],
2017-04-13 01:17:39 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2022-03-06 18:30:59 +02:00
"archive retention on backup 20220306-154407F_20220306-154416D|remove archive"
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=2182-85d5811b --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=<redacted> --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: 10-1 archive retention on backup 20220306-154403F, start = 000000020000000000000007, stop = 000000020000000000000007",
"P00 DETAIL: repo1: 10-1 archive retention on backup 20220306-154407F, start = 000000020000000000000008, stop = 000000020000000000000009",
"P00 DETAIL: repo1: 10-1 archive retention on backup 20220306-154407F_20220306-154416D, start = 00000002000000000000000E, stop = 00000002000000000000000F",
"P00 DETAIL: repo1: 10-1 archive retention on backup 20220306-154407F_20220306-154419D, start = 000000020000000000000012",
2022-01-03 15:43:55 +02:00
"P00 INFO: repo1: 10-1 remove archive, start = 00000002000000000000000A, stop = 00000002000000000000000D",
"P00 INFO: repo1: 10-1 remove archive, start = 000000020000000000000010, stop = 000000020000000000000011",
2017-09-29 01:06:41 +02:00
"P00 INFO: expire command end: completed successfully"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
" --log-level-console=detail restore"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2019-10-01 22:02:07 +02:00
"demo\\/PG_VERSION - exists and matches backup|remove invalid files|rename global\\/pg_control"
2017-09-29 01:06:41 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
2017-04-13 01:17:39 +02:00
"value" : {
2017-09-29 01:06:41 +02:00
"output" : [
2019-10-01 22:02:07 +02:00
" [filtered 2 lines of output]",
2020-07-20 14:57:22 +02:00
"P00 DETAIL: check '/var/lib/pgsql/10/data' exists",
2019-10-01 22:02:07 +02:00
"P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete",
2020-07-20 14:57:22 +02:00
"P00 INFO: remove invalid files/links/paths from '/var/lib/pgsql/10/data'",
"P00 DETAIL: remove invalid file '/var/lib/pgsql/10/data/backup_label.old'",
2020-12-07 16:55:00 +02:00
"P00 DETAIL: remove invalid file '/var/lib/pgsql/10/data/base/13017/pg_internal.init'",
2022-01-03 15:43:55 +02:00
" [filtered 1000 lines of output]"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres psql -c \"create database test1;\""
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2017-09-29 01:06:41 +02:00
"CREATE DATABASE"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres psql -c \"create database test2;\""
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"CREATE DATABASE"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -c \"create table test1_table (id int); \\",
" insert into test1_table (id) values (1);\" test1"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2017-09-29 01:06:41 +02:00
"INSERT 0 1"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres psql -c \"create table test2_table (id int); \\",
" insert into test2_table (id) values (2);\" test2"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe",
2017-04-13 01:17:39 +02:00
"value" : {
2017-09-29 01:06:41 +02:00
"output" : [
"INSERT 0 1"
2017-04-13 01:17:39 +02:00
]
}
2016-06-02 17:10:24 +02:00
},
2021-04-05 15:18:20 +02:00
{
"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"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u postgres psql -Atc \"select oid from pg_database where datname = 'test1'\""
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"32768"
2018-05-07 01:53:42 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo -u postgres du -sh /var/lib/pgsql/10/data/base/32768"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"7.5M\t/var/lib/pgsql/10/data/base/32768"
2017-04-13 01:17:39 +02:00
]
}
2016-06-02 17:10:24 +02:00
},
2019-10-01 22:02:07 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2019-10-01 22:02:07 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : true,
"run-as-user" : null
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-154407F_20220306-154426I"
2019-10-01 22:02:07 +02:00
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo \\",
2022-03-06 18:30:59 +02:00
" --set=20220306-154407F_20220306-154426I info"
2019-10-01 22:02:07 +02:00
],
"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" : [
2022-03-06 18:30:59 +02:00
" [filtered 12 lines of output]",
" repo1: backup set size: 4.4MB, backup size: 1.8MB",
" backup reference list: 20220306-154407F, 20220306-154407F_20220306-154419D",
" database list: postgres (13017), test1 (32768), test2 (32769)"
2019-10-01 22:02:07 +02:00
]
}
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2021-04-05 15:18:20 +02:00
" --db-include=test2 --type=immediate --target-action=promote restore"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres sleep 2"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -c \"select * from test2_table;\" test2"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
" id ",
"----",
" 2",
"(1 row)"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"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"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"psql: FATAL: relation mapping file \"base/32768/pg_filenode.map\" contains invalid data"
2017-09-29 01:06:41 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo -u postgres du -sh /var/lib/pgsql/10/data/base/32768"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"16K\t/var/lib/pgsql/10/data/base/32768"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -c \"drop database test1;\""
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2017-09-29 01:06:41 +02:00
"DROP DATABASE"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -c \"select oid, datname from pg_database order by oid;\""
2017-04-13 01:17:39 +02:00
],
"highlight" : {
2017-09-29 01:06:41 +02:00
"filter" : false,
2017-04-13 01:17:39 +02:00
"filter-context" : 2,
"list" : [
2017-09-29 01:06:41 +02:00
"test2"
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2017-09-29 01:06:41 +02:00
" oid | datname ",
"-------+-----------",
" 1 | template1",
2020-12-07 16:55:00 +02:00
" 13016 | template0",
" 13017 | postgres",
2022-03-06 18:30:59 +02:00
" 32769 | test2",
2017-09-29 01:06:41 +02:00
"(4 rows)"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres pgbackrest --stanza=demo --type=diff backup"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -c \"begin; \\",
" create table important_table (message text); \\",
" insert into important_table values ('Important Data'); \\",
" commit; \\",
" select * from important_table;\""
2017-04-13 01:17:39 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-09-29 01:06:41 +02:00
"Important Data"
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2017-09-29 01:06:41 +02:00
" message ",
"----------------",
" Important Data",
"(1 row)"
2017-04-13 01:17:39 +02:00
]
}
},
2020-03-26 23:14:53 +02: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"
},
2017-04-13 01:17:39 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -Atc \"select current_timestamp\""
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"2022-03-06 15:44:39.614274+00"
2017-04-13 01:17:39 +02:00
]
}
},
2020-03-26 23:14:53 +02: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"
},
2017-04-13 01:17:39 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -c \"begin; \\",
" drop table important_table; \\",
" commit; \\",
" select * from important_table;\""
2017-04-13 01:17:39 +02:00
],
2017-09-29 01:06:41 +02:00
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2017-09-29 01:06:41 +02:00
"ERROR: relation \"important_table\" does not exist",
"LINE 1: ...le important_table; commit; select * from important_...",
" ^"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2022-03-06 18:30:59 +02:00
" --type=time \"--target=2022-03-06 15:44:39.614274+00\" \\",
2019-03-10 18:56:00 +02:00
" --target-action=promote restore"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe"
2017-04-13 01:17:39 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm /var/lib/pgsql/10/data/log/postgresql.log"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe"
2017-04-13 01:17:39 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/lib/pgsql/10/data/recovery.conf"
2017-04-13 01:17:39 +02:00
],
2017-09-29 01:06:41 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"recovery_target_time"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:44:41",
2018-02-24 05:38:45 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
2022-03-06 18:30:59 +02:00
"recovery_target_time = '2022-03-06 15:44:39.614274+00'",
2019-03-10 18:56:00 +02:00
"recovery_target_action = 'promote'"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
2016-06-02 17:10:24 +02:00
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -c \"select * from important_table\""
2016-06-02 17:10:24 +02:00
],
2017-09-29 01:06:41 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2017-09-29 01:06:41 +02:00
" message ",
"----------------",
" Important Data",
2016-06-02 17:10:24 +02:00
"(1 row)"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/lib/pgsql/10/data/log/postgresql.log"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
2017-09-29 01:06:41 +02:00
"filter" : true,
2016-06-02 17:10:24 +02:00
"filter-context" : 2,
"list" : [
2017-09-29 01:06:41 +02:00
"recovery stopping before|last completed transaction|starting point-in-time recovery"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"LOG: database system was interrupted; last known up at 2022-03-06 15:44:35 UTC",
"LOG: starting point-in-time recovery to 2022-03-06 15:44:39.614274+00",
2017-09-29 01:06:41 +02:00
"LOG: restored log file \"00000004.history\" from archive",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000040000000000000016\" from archive",
2020-07-20 14:57:22 +02:00
" [filtered 2 lines of output]",
"LOG: database system is ready to accept read only connections",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000040000000000000017\" from archive",
2022-03-06 18:30:59 +02:00
"LOG: recovery stopping before commit of transaction 565, time 2022-03-06 15:44:41.00658+00",
"LOG: redo done at 0/17020B28",
"LOG: last completed transaction was at log time 2022-03-06 15:44:38.189828+00",
2017-09-29 01:06:41 +02:00
"LOG: selected new timeline ID: 5",
2019-01-02 22:04:47 +02:00
"LOG: archive recovery complete",
2021-06-07 12:51:08 +02:00
"LOG: database system is ready to accept connections"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -c \"begin; \\",
" drop table important_table; \\",
" commit; \\",
" select * from important_table;\""
2016-06-02 17:10:24 +02:00
],
2017-09-29 01:06:41 +02:00
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2017-09-29 01:06:41 +02:00
"ERROR: relation \"important_table\" does not exist",
"LINE 1: ...le important_table; commit; select * from important_...",
" ^"
2016-06-02 17:10:24 +02:00
]
}
},
2020-02-26 00:05:45 +02:00
{
"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"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-03-26 23:14:53 +02:00
"sudo -u postgres pgbackrest repo-ls backup/demo --filter=\"(F|D|I)$\" --sort=desc | head -1"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"20220306-154407F_20220306-154446I"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-02-26 00:05:45 +02:00
"sudo -u postgres pgbackrest info"
2016-06-02 17:10:24 +02:00
],
2020-02-26 00:05:45 +02:00
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
2022-03-06 18:30:59 +02:00
"20220306-154407F_20220306-154446I"
2020-02-26 00:05:45 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
2020-02-26 00:05:45 +02:00
"output" : true,
2018-07-06 02:16:41 +02:00
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2020-02-26 00:05:45 +02:00
"type" : "exe",
"value" : {
"output" : [
"stanza: demo",
" status: ok",
" cipher: aes-256-cbc",
"",
" db (current)",
2022-01-03 15:43:55 +02:00
" wal archive min/max (10): 000000020000000000000007/000000050000000000000018",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-154403F",
" timestamp start/stop: 2022-03-06 15:44:03 / 2022-03-06 15:44:06",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000020000000000000007 / 000000020000000000000007",
2021-02-08 16:08:16 +02:00
" database size: 22.5MB, database backup size: 22.5MB",
" repo1: backup set size: 2.7MB, backup size: 2.7MB",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-154407F",
" timestamp start/stop: 2022-03-06 15:44:07 / 2022-03-06 15:44:10",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000020000000000000008 / 000000020000000000000009",
2021-02-08 16:08:16 +02:00
" database size: 22.5MB, database backup size: 22.5MB",
" repo1: backup set size: 2.7MB, backup size: 2.7MB",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" diff backup: 20220306-154407F_20220306-154419D",
" timestamp start/stop: 2022-03-06 15:44:19 / 2022-03-06 15:44:20",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000020000000000000012 / 000000020000000000000013",
2022-03-06 18:30:59 +02:00
" database size: 22.5MB, database backup size: 10.4KB",
" repo1: backup set size: 2.7MB, backup size: 976B",
" backup reference list: 20220306-154407F",
2020-05-26 14:11:50 +02:00
"",
2022-03-06 18:30:59 +02:00
" incr backup: 20220306-154407F_20220306-154426I",
" timestamp start/stop: 2022-03-06 15:44:26 / 2022-03-06 15:44:29",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000030000000000000015 / 000000030000000000000015",
2022-03-06 18:30:59 +02:00
" database size: 37.1MB, database backup size: 15.1MB",
" repo1: backup set size: 4.4MB, backup size: 1.8MB",
" backup reference list: 20220306-154407F, 20220306-154407F_20220306-154419D",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" diff backup: 20220306-154407F_20220306-154435D",
" timestamp start/stop: 2022-03-06 15:44:35 / 2022-03-06 15:44:37",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000040000000000000016 / 000000040000000000000016",
2022-03-06 18:30:59 +02:00
" database size: 29.8MB, database backup size: 7.8MB",
" repo1: backup set size: 3.6MB, backup size: 952KB",
" backup reference list: 20220306-154407F",
2020-02-26 00:05:45 +02:00
"",
2022-03-06 18:30:59 +02:00
" incr backup: 20220306-154407F_20220306-154446I",
" timestamp start/stop: 2022-03-06 15:44:46 / 2022-03-06 15:44:48",
2022-01-03 15:43:55 +02:00
" wal start/stop: 000000050000000000000018 / 000000050000000000000018",
2022-03-06 18:30:59 +02:00
" database size: 29.8MB, database backup size: 2MB",
" repo1: backup set size: 3.6MB, backup size: 218.4KB",
" backup reference list: 20220306-154407F, 20220306-154407F_20220306-154435D"
2020-02-26 00:05:45 +02:00
]
}
2017-09-29 01:06:41 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2022-03-06 18:30:59 +02:00
" --set=20220306-154407F_20220306-154446I \\",
" --type=time \"--target=2022-03-06 15:44:39.614274+00\" --target-action=promote restore"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm /var/lib/pgsql/10/data/log/postgresql.log"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres psql -c \"select * from important_table\""
2016-06-02 17:10:24 +02:00
],
2017-09-29 01:06:41 +02:00
"err-expect" : "1",
2016-06-02 17:10:24 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-09-29 01:06:41 +02:00
"does not exist"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2017-09-29 01:06:41 +02:00
"ERROR: relation \"important_table\" does not exist",
"LINE 1: select * from important_table",
" ^"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/lib/pgsql/10/data/log/postgresql.log"
2016-06-02 17:10:24 +02:00
],
2017-09-29 01:06:41 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"starting point-in-time recovery|consistent recovery state reached"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"LOG: database system was interrupted; last known up at 2022-03-06 15:44:46 UTC",
"LOG: starting point-in-time recovery to 2022-03-06 15:44:39.614274+00",
2017-09-29 01:06:41 +02:00
"LOG: restored log file \"00000005.history\" from archive",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000050000000000000018\" from archive",
"LOG: redo starts at 0/18000028",
"LOG: consistent recovery state reached at 0/180000F8",
2020-07-20 14:57:22 +02:00
"LOG: database system is ready to accept read only connections",
2022-01-03 15:43:55 +02:00
"LOG: redo done at 0/180000F8",
2021-04-05 15:18:20 +02:00
" [filtered 6 lines of output]"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2022-03-06 18:30:59 +02:00
" --type=time \"--target=2022-03-06 15:44:39.614274+00\" \\",
2020-02-26 00:05:45 +02:00
" --target-action=promote restore"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm /var/lib/pgsql/10/data/log/postgresql.log"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres psql -c \"select * from important_table\""
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/lib/pgsql/10/data/log/postgresql.log"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"recovery stopping before|last completed transaction|starting point-in-time recovery"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"LOG: database system was interrupted; last known up at 2022-03-06 15:44:35 UTC",
"LOG: starting point-in-time recovery to 2022-03-06 15:44:39.614274+00",
2016-06-02 17:10:24 +02:00
"LOG: restored log file \"00000004.history\" from archive",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000040000000000000016\" from archive",
2020-07-20 14:57:22 +02:00
" [filtered 2 lines of output]",
"LOG: database system is ready to accept read only connections",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000040000000000000017\" from archive",
2022-03-06 18:30:59 +02:00
"LOG: recovery stopping before commit of transaction 565, time 2022-03-06 15:44:41.00658+00",
"LOG: redo done at 0/17020B28",
"LOG: last completed transaction was at log time 2022-03-06 15:44:38.189828+00",
2017-09-29 01:06:41 +02:00
"LOG: restored log file \"00000005.history\" from archive",
2018-11-16 16:50:50 +02:00
"LOG: restored log file \"00000006.history\" from archive",
2021-06-07 12:51:08 +02:00
" [filtered 3 lines of output]"
2020-07-20 14:57:22 +02:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global" : {
"process-max" : {
"value" : "4"
},
2021-04-05 15:18:20 +02:00
"repo2-azure-account" : {
2020-07-20 14:57:22 +02:00
"value" : "pgbackrest"
},
2021-04-05 15:18:20 +02:00
"repo2-azure-container" : {
2020-07-20 14:57:22 +02:00
"value" : "demo-container"
},
2021-04-05 15:18:20 +02:00
"repo2-azure-key" : {
2020-07-20 14:57:22 +02:00
"value" : "YXpLZXk="
},
2021-04-05 15:18:20 +02:00
"repo2-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/demo-repo"
},
2021-04-05 15:18:20 +02:00
"repo2-retention-full" : {
"value" : "4"
},
"repo2-type" : {
2020-07-20 14:57:22 +02:00
"value" : "azure"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"pg1-path=/var/lib/pgsql/10/data",
"",
"[global]",
"process-max=4",
"repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO",
"repo1-cipher-type=aes-256-cbc",
2021-04-05 15:18:20 +02:00
"repo1-path=/var/lib/pgbackrest",
2020-07-20 14:57:22 +02:00
"repo1-retention-diff=2",
"repo1-retention-full=2",
2021-04-05 15:18:20 +02:00
"repo2-azure-account=pgbackrest",
"repo2-azure-container=demo-container",
"repo2-azure-key=YXpLZXk=",
"repo2-path=/demo-repo",
"repo2-retention-full=4",
"repo2-type=azure",
2020-07-20 14:57:22 +02:00
"start-fast=y",
"",
"[global:archive-push]",
"compress-level=3"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-11-01 14:59:14 +02:00
"echo \"172.17.0.2 pgbackrest.blob.core.windows.net\" | tee -a /etc/hosts"
2020-07-20 14:57:22 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --repo=2 repo-create"
2020-07-20 14:57:22 +02:00
],
"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" : [
2021-04-05 15:18:20 +02:00
" [filtered 2 lines of output]",
"P00 INFO: stanza 'demo' already exists on repo1 and is valid",
"P00 INFO: stanza-create for stanza 'demo' on repo2",
2020-07-20 14:57:22 +02:00
"P00 INFO: stanza-create command end: completed successfully"
]
}
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --stanza=demo --repo=2 \\",
2020-07-20 14:57:22 +02:00
" --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" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: backup command begin 2.38: --exec-id=3878-cb8964ab --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/data --process-max=4 --repo=2 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --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",
2020-07-20 14:57:22 +02:00
"P00 WARN: no prior backup exists, incr backup has been changed to full",
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes",
2022-01-03 15:43:55 +02:00
"P00 INFO: backup start archive = 000000070000000000000018, lsn = 0/18000028",
" [filtered 3 lines of output]",
"P00 INFO: check archive for segment(s) 000000070000000000000018:000000070000000000000018",
2022-03-06 18:30:59 +02:00
"P00 INFO: new backup label = 20220306-154500F",
"P00 INFO: full backup size = 29.8MB, file total = 1246",
2021-08-23 12:52:51 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=3878-cb8964ab --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo=2 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --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"
2017-11-22 01:31:54 +02:00
]
}
},
2017-09-29 01:06:41 +02:00
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-09-29 01:06:41 +02:00
"option" : {
"global" : {
"process-max" : {
"value" : "4"
},
2021-04-05 15:18:20 +02:00
"repo3-path" : {
2018-07-06 02:16:41 +02:00
"value" : "/demo-repo"
2017-09-29 01:06:41 +02:00
},
2021-04-05 15:18:20 +02:00
"repo3-retention-full" : {
"value" : "4"
},
"repo3-s3-bucket" : {
2017-09-29 01:06:41 +02:00
"value" : "demo-bucket"
},
2021-04-05 15:18:20 +02:00
"repo3-s3-endpoint" : {
2019-06-25 14:29:06 +02:00
"value" : "s3.us-east-1.amazonaws.com"
2017-09-29 01:06:41 +02:00
},
2021-04-05 15:18:20 +02:00
"repo3-s3-key" : {
2017-09-29 01:06:41 +02:00
"value" : "accessKey1"
},
2021-04-05 15:18:20 +02:00
"repo3-s3-key-secret" : {
2017-09-29 01:06:41 +02:00
"value" : "verySecretKey1"
},
2021-04-05 15:18:20 +02:00
"repo3-s3-region" : {
2017-09-29 01:06:41 +02:00
"value" : "us-east-1"
},
2021-04-05 15:18:20 +02:00
"repo3-type" : {
2017-09-29 01:06:41 +02:00
"value" : "s3"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2017-09-29 01:06:41 +02:00
"",
"[global]",
"process-max=4",
2019-06-25 14:29:06 +02:00
"repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO",
"repo1-cipher-type=aes-256-cbc",
2021-04-05 15:18:20 +02:00
"repo1-path=/var/lib/pgbackrest",
2018-02-24 05:38:45 +02:00
"repo1-retention-diff=2",
"repo1-retention-full=2",
2021-04-05 15:18:20 +02:00
"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",
2017-09-29 01:06:41 +02:00
"start-fast=y",
2018-05-07 01:53:42 +02:00
"",
"[global:archive-push]",
"compress-level=3"
2016-06-02 17:10:24 +02:00
]
}
},
2020-03-26 23:14:53 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-07-20 14:57:22 +02:00
"echo \"172.17.0.3 demo-bucket.s3.us-east-1.amazonaws.com s3.us-east-1.amazonaws.com\" | tee -a /etc/hosts"
2020-03-26 23:14:53 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --repo=3 repo-create"
2020-03-26 23:14:53 +02:00
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
2017-09-29 01:06:41 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-09-29 01:06:41 +02:00
"completed successfully"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2021-04-05 15:18:20 +02:00
" [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",
2017-09-29 01:06:41 +02:00
"P00 INFO: stanza-create command end: completed successfully"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --stanza=demo --repo=3 \\",
2017-09-29 01:06:41 +02:00
" --log-level-console=info backup"
2016-06-02 17:10:24 +02:00
],
2017-09-29 01:06:41 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"no prior backup exists|full backup size"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: backup command begin 2.38: --exec-id=4032-8a6a7fa7 --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/data --process-max=4 --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --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=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo --start-fast",
2017-09-29 01:06:41 +02:00
"P00 WARN: no prior backup exists, incr backup has been changed to full",
2020-01-15 22:21:52 +02:00
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes",
2022-03-06 18:30:59 +02:00
"P00 INFO: backup start archive = 00000007000000000000001A, lsn = 0/1A000028",
2022-01-03 15:43:55 +02:00
" [filtered 3 lines of output]",
2022-03-06 18:30:59 +02:00
"P00 INFO: check archive for segment(s) 00000007000000000000001A:00000007000000000000001A",
"P00 INFO: new backup label = 20220306-154510F",
"P00 INFO: full backup size = 29.8MB, file total = 1246",
2021-08-23 12:52:51 +02:00
"P00 INFO: backup command end: completed successfully",
2022-03-06 18:30:59 +02:00
"P00 INFO: expire command begin 2.38: --exec-id=4032-8a6a7fa7 --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo=3 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --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=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --stanza=demo"
2016-06-02 17:10:24 +02:00
]
}
},
2021-04-05 15:18:20 +02:00
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-primary",
"option" : {
"global" : {
"process-max" : {
"value" : "4"
},
"repo4-gcs-bucket" : {
"value" : "demo-bucket"
},
"repo4-gcs-key" : {
"value" : "/etc/pgbackrest/gcs-key.json"
},
"repo4-path" : {
"value" : "/demo-repo"
},
"repo4-type" : {
"value" : "gcs"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"pg1-path=/var/lib/pgsql/10/data",
"",
"[global]",
"process-max=4",
"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-gcs-bucket=demo-bucket",
"repo4-gcs-key=/etc/pgbackrest/gcs-key.json",
"repo4-path=/demo-repo",
"repo4-type=gcs",
"start-fast=y",
"",
"[global:archive-push]",
"compress-level=3"
]
}
},
2017-09-29 01:06:41 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-02-24 05:38:45 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2018-02-24 05:38:45 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
2018-02-24 05:38:45 +02:00
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-02-24 05:38:45 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stop"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"completed successfully"
]
},
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-02-24 05:38:45 +02:00
},
"type" : "exe",
2017-09-29 01:06:41 +02:00
"value" : {
2018-02-24 05:38:45 +02:00
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: stop command begin 2.38: --exec-id=4143-079a89cb --log-level-console=info --log-level-stderr=off --no-log-timestamp --stanza=demo",
2018-02-24 05:38:45 +02:00
"P00 INFO: stop command end: completed successfully"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-02-24 05:38:45 +02:00
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --stanza=demo --repo=1 \\",
" --log-level-console=info stanza-delete"
2018-02-24 05:38:45 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"completed successfully"
]
},
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-02-24 05:38:45 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: stanza-delete command begin 2.38: --exec-id=4170-abce9319 --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/data --repo=1 --repo2-azure-account=<redacted> --repo2-azure-container=demo-container --repo2-azure-key=<redacted> --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo4-gcs-bucket=demo-bucket --repo4-gcs-key=<redacted> --repo1-path=/var/lib/pgbackrest --repo2-path=/demo-repo --repo3-path=/demo-repo --repo4-path=/demo-repo --repo3-s3-bucket=demo-bucket --repo3-s3-endpoint=s3.us-east-1.amazonaws.com --repo3-s3-key=<redacted> --repo3-s3-key-secret=<redacted> --repo3-s3-region=us-east-1 --repo2-type=azure --repo3-type=s3 --repo4-type=gcs --stanza=demo",
2018-02-24 05:38:45 +02:00
"P00 INFO: stanza-delete command end: completed successfully"
]
2018-08-31 19:19:43 +02:00
}
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2018-07-06 02:16:41 +02:00
],
2018-08-31 19:19:43 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
2018-08-31 19:19:43 +02:00
"run-as-user" : null
2018-07-06 02:16:41 +02:00
},
"type" : "exe"
},
2018-08-31 19:19:43 +02:00
{
"key" : {
"id" : "repo1",
2021-06-07 12:51:08 +02:00
"image" : "pgbackrest/doc:rhel",
2018-08-31 19:19:43 +02:00
"name" : "repository",
2021-08-23 12:52:51 +02:00
"option" : "-m 512m -v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run",
2021-06-07 12:51:08 +02:00
"os" : "rhel",
2018-08-31 19:19:43 +02:00
"update-hosts" : true
},
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.6"
2018-08-31 19:19:43 +02:00
}
},
2018-07-06 02:16:41 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2019-01-02 22:04:47 +02:00
"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"
2018-07-06 02:16:41 +02:00
],
"host" : "repository",
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo yum install postgresql-libs"
2018-07-06 02:16:41 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "-y 2>&1",
2021-08-23 12:52:51 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo scp build:/build/pgbackrest-release-2.38/src/pgbackrest /usr/bin"
2016-06-02 17:10:24 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "2>&1",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo chmod 755 /usr/bin/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p -m 770 /var/log/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo chown pgbackrest:pgbackrest /var/log/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest"
2018-05-07 01:53:42 +02:00
],
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest/conf.d"
2018-05-07 01:53:42 +02:00
],
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo touch /etc/pgbackrest/pgbackrest.conf"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chmod 640 /etc/pgbackrest/pgbackrest.conf"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo mkdir -p /var/lib/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo chmod 750 /var/lib/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-09-29 01:06:41 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2016-06-02 17:10:24 +02:00
"option" : {
"global" : {
2018-02-24 05:38:45 +02:00
"repo1-path" : {
2016-06-02 17:10:24 +02:00
"value" : "/var/lib/pgbackrest"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2016-06-02 17:10:24 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-host" : {
"value" : "pg-primary"
2016-06-02 17:10:24 +02:00
},
2022-01-03 15:43:55 +02:00
"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"
},
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/var/lib/pgsql/10/data"
2016-06-02 17:10:24 +02:00
}
},
"global" : {
2016-10-10 23:35:58 +02:00
"log-level-stderr" : {
"value" : "off"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"log-timestamp" : {
"value" : "n"
},
2018-02-24 05:38:45 +02:00
"repo1-retention-full" : {
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-13 02:18:27 +02:00
"value" : "2"
},
2016-06-02 17:10:24 +02:00
"start-fast" : {
"value" : "y"
2022-01-03 15:43:55 +02:00
},
"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"
2016-06-02 17:10:24 +02:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2018-02-24 05:38:45 +02:00
"pg1-host=pg-primary",
2022-01-03 15:43:55 +02:00
"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",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2016-06-02 17:10:24 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
2022-01-03 15:43:55 +02:00
"start-fast=y",
"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"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2016-06-02 17:10:24 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/var/lib/pgsql/10/data"
2016-06-02 17:10:24 +02:00
}
},
"global" : {
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"log-level-file" : {
"value" : "detail"
},
2016-10-10 23:35:58 +02:00
"log-level-stderr" : {
"value" : "off"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"log-timestamp" : {
"value" : "n"
2018-02-24 05:38:45 +02:00
},
"repo1-host" : {
"value" : "repository"
2022-01-03 15:43:55 +02:00
},
2022-03-06 18:30:59 +02:00
"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"
},
2022-01-03 15:43:55 +02:00
"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"
2016-06-02 17:10:24 +02:00
}
}
},
"reset" : true
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2016-06-02 17:10:24 +02:00
"",
"[global]",
2018-02-24 05:38:45 +02:00
"log-level-file=detail",
2022-01-03 15:43:55 +02:00
"repo1-host=repository",
2022-03-06 18:30:59 +02:00
"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",
2022-01-03 15:43:55 +02:00
"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 && \\",
2022-03-06 18:30:59 +02:00
" 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 && \\",
2022-01-03 15:43:55 +02:00
" echo 'ExecReload=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",
2022-03-06 18:30:59 +02:00
"ExecStartPost=/bin/sleep 3",
"ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"",
2022-01-03 15:43:55 +02:00
"ExecReload=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 && \\",
2022-03-06 18:30:59 +02:00
" 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 && \\",
2022-01-03 15:43:55 +02:00
" echo 'ExecReload=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",
2022-03-06 18:30:59 +02:00
"ExecStartPost=/bin/sleep 3",
"ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"",
2022-01-03 15:43:55 +02:00
"ExecReload=kill -HUP $MAINPID",
"",
"[Install]",
"WantedBy=multi-user.target"
2016-06-02 17:10:24 +02:00
]
}
},
2022-01-03 15:43:55 +02:00
{
"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"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo stanza-create"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
"type" : "exe"
},
2016-07-02 16:22:52 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo check"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-07-02 16:22:52 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-07-02 16:22:52 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo check"
2016-07-02 16:22:52 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-07-02 16:22:52 +02:00
},
2016-10-10 23:35:58 +02:00
"type" : "exe"
2016-07-02 16:22:52 +02:00
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo backup"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2016-09-15 00:36:43 +02:00
"P00 WARN: no prior backup exists, incr backup has been changed to full"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2018-05-07 01:53:42 +02:00
"type" : "exe"
2016-07-02 16:22:52 +02:00
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"option" : {
"global" : {
"process-max" : {
"value" : "3"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2018-02-24 05:38:45 +02:00
"pg1-host=pg-primary",
2022-01-03 15:43:55 +02:00
"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",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"",
"[global]",
"process-max=3",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
2022-01-03 15:43:55 +02:00
"start-fast=y",
"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"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest info"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"timestamp start/stop"
]
},
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"stanza: demo",
" status: ok",
2018-10-16 15:56:51 +02:00
" cipher: none",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"",
2017-08-09 00:09:07 +02:00
" db (current)",
2022-03-06 18:30:59 +02:00
" wal archive min/max (10): 000000080000000000000020/000000080000000000000022",
2019-01-02 22:04:47 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-154611F",
" timestamp start/stop: 2022-03-06 15:46:11 / 2022-03-06 15:46:16",
" wal start/stop: 000000080000000000000020 / 000000080000000000000020",
" database size: 29.8MB, database backup size: 29.8MB",
2021-02-08 16:08:16 +02:00
" repo1: backup set size: 3.5MB, backup size: 3.5MB",
2020-07-20 14:57:22 +02:00
"",
2022-03-06 18:30:59 +02:00
" full backup: 20220306-154617F",
" timestamp start/stop: 2022-03-06 15:46:17 / 2022-03-06 15:46:20",
" wal start/stop: 000000080000000000000021 / 000000080000000000000022",
" database size: 29.8MB, database backup size: 29.8MB",
2021-02-08 16:08:16 +02:00
" repo1: backup set size: 3.5MB, backup size: 3.5MB"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
]
}
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest stop"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo backup"
2016-06-02 17:10:24 +02:00
],
2020-01-15 22:21:52 +02:00
"err-expect" : "56",
2016-06-02 17:10:24 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-10-24 23:36:21 +02:00
"\\: stop file exists for all stanzas"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 WARN: unable to check pg1: [StopError] raised from remote-0 tls protocol on 'pg-primary': stop file exists for all stanzas",
2020-01-15 22:21:52 +02:00
"P00 ERROR: [056]: unable to find primary cluster - cannot proceed"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest stop"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2016-09-15 00:36:43 +02:00
"P00 WARN: stop file already exists for all stanzas"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest start"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo stop"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo backup"
2016-06-02 17:10:24 +02:00
],
2020-01-15 22:21:52 +02:00
"err-expect" : "56",
2016-06-02 17:10:24 +02:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-10-24 23:36:21 +02:00
"\\: stop file exists for stanza demo"
2016-06-02 17:10:24 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 WARN: unable to check pg1: [StopError] raised from remote-0 tls protocol on 'pg-primary': stop file exists for stanza demo",
2020-01-15 22:21:52 +02:00
"P00 ERROR: [056]: unable to find primary cluster - cannot proceed"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo start"
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-02-24 05:38:45 +02:00
"id" : "pg2",
2021-06-07 12:51:08 +02:00
"image" : "pgbackrest/doc:rhel",
2018-02-24 05:38:45 +02:00
"name" : "pg-standby",
2021-08-23 12:52:51 +02:00
"option" : "-m 512m -v /sys/fs/cgroup:/sys/fs/cgroup:rw -v /tmp/$(mktemp -d):/run",
2021-06-07 12:51:08 +02:00
"os" : "rhel",
2018-07-06 02:16:41 +02:00
"update-hosts" : true
2016-06-02 17:10:24 +02:00
},
"type" : "host",
"value" : {
2020-07-20 14:57:22 +02:00
"ip" : "172.17.0.7"
2016-06-02 17:10:24 +02:00
}
},
2018-05-07 01:53:42 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo yum install postgresql-libs"
2018-07-06 02:16:41 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "-y 2>&1",
2021-08-23 12:52:51 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
},
"type" : "exe"
},
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"sudo scp build:/build/pgbackrest-release-2.38/src/pgbackrest /usr/bin"
2018-07-06 02:16:41 +02:00
],
2020-01-15 22:21:52 +02:00
"cmd-extra" : "2>&1",
2018-07-06 02:16:41 +02:00
"host" : "pg-standby",
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2020-01-15 22:21:52 +02:00
"sudo chmod 755 /usr/bin/pgbackrest"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p -m 770 /var/log/pgbackrest"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo chown postgres:postgres /var/log/pgbackrest"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p /etc/pgbackrest/conf.d"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo touch /etc/pgbackrest/pgbackrest.conf"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chmod 640 /etc/pgbackrest/pgbackrest.conf"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2022-01-03 15:43:55 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2022-01-03 15:43:55 +02:00
"option" : {
"demo" : {
"pg1-path" : {
"value" : "/var/lib/pgsql/10/data"
}
},
"global" : {
"log-level-file" : {
"value" : "detail"
},
"log-level-stderr" : {
"value" : "off"
},
"log-timestamp" : {
"value" : "n"
},
"repo1-host" : {
"value" : "repository"
},
2022-03-06 18:30:59 +02:00
"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"
},
2022-01-03 15:43:55 +02:00
"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"
}
}
}
2017-09-29 01:06:41 +02:00
},
2022-01-03 15:43:55 +02:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"pg1-path=/var/lib/pgsql/10/data",
"",
"[global]",
"log-level-file=detail",
"repo1-host=repository",
2022-03-06 18:30:59 +02:00
"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",
2022-01-03 15:43:55 +02:00
"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"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
2022-01-03 15:43:55 +02:00
"run-as-user" : "root"
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2022-01-03 15:43:55 +02:00
"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 && \\",
2022-03-06 18:30:59 +02:00
" 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 && \\",
2022-01-03 15:43:55 +02:00
" echo 'ExecReload=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"
2017-09-29 01:06:41 +02:00
],
2022-01-03 15:43:55 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
2018-10-16 15:56:51 +02:00
"run-as-user" : "root"
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2022-01-03 15:43:55 +02:00
"sudo cat /etc/systemd/system/pgbackrest.service"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
2022-01-03 15:43:55 +02:00
"output" : true,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
2022-01-03 15:43:55 +02:00
"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",
2022-03-06 18:30:59 +02:00
"ExecStartPost=/bin/sleep 3",
"ExecStartPost=/bin/bash -c \"[ ! -z $MAINPID ]\"",
2022-01-03 15:43:55 +02:00
"ExecReload=kill -HUP $MAINPID",
"",
"[Install]",
"WantedBy=multi-user.target"
]
}
2017-09-29 01:06:41 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2022-01-03 15:43:55 +02:00
"sudo systemctl enable pgbackrest"
2017-09-29 01:06:41 +02:00
],
2022-01-03 15:43:55 +02:00
"cmd-extra" : "2>&1",
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-09-29 01:06:41 +02:00
"cmd" : [
2022-01-03 15:43:55 +02:00
"sudo systemctl start pgbackrest"
2017-09-29 01:06:41 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-09-29 01:06:41 +02:00
},
"type" : "exe"
},
2018-02-24 05:38:45 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-02-24 05:38:45 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres mkdir -p -m 700 /var/lib/pgsql/10/data"
2018-02-24 05:38:45 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-02-24 05:38:45 +02:00
},
"type" : "exe"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2019-10-01 22:02:07 +02:00
"sudo -u postgres pgbackrest --stanza=demo --type=standby restore"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/lib/pgsql/10/data/recovery.conf"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:47:01",
2019-10-01 22:02:07 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
"standby_mode = 'on'"
2016-06-02 17:10:24 +02:00
]
}
},
2021-08-23 12:52:51 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
2022-03-06 18:30:59 +02:00
"cat /root/postgresql.common.conf >> /var/lib/pgsql/10/data/postgresql.conf"
2021-08-23 12:52:51 +02:00
],
"host" : "pg-standby",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2020-07-20 14:57:22 +02:00
"file" : "/var/lib/pgsql/10/data/postgresql.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2016-06-02 17:10:24 +02:00
"option" : {
2019-01-02 22:04:47 +02:00
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
2016-06-02 17:10:24 +02:00
"hot_standby" : {
"value" : "on"
2018-02-24 05:38:45 +02:00
},
"log_filename" : {
"value" : "'postgresql.log'"
},
2019-01-02 22:04:47 +02:00
"max_wal_senders" : {
"value" : "3"
},
"wal_level" : {
2019-06-25 14:29:06 +02:00
"value" : "replica"
2016-06-02 17:10:24 +02:00
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
2019-01-02 22:04:47 +02:00
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
2016-06-02 17:10:24 +02:00
"hot_standby = on",
"log_filename = 'postgresql.log'",
2019-01-02 22:04:47 +02:00
"max_wal_senders = 3",
2019-06-25 14:29:06 +02:00
"wal_level = replica"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm /var/lib/pgsql/10/data/log/postgresql.log"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/lib/pgsql/10/data/log/postgresql.log"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"entering standby mode|database system is ready to accept read only connections"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"LOG: database system was interrupted; last known up at 2022-03-06 15:46:18 UTC",
2016-06-02 17:10:24 +02:00
"LOG: entering standby mode",
2018-10-16 15:56:51 +02:00
"LOG: restored log file \"00000008.history\" from archive",
2022-03-06 18:30:59 +02:00
"LOG: restored log file \"000000080000000000000021\" from archive",
"LOG: redo starts at 0/21000028",
2022-01-03 15:43:55 +02:00
"LOG: restored log file \"000000080000000000000022\" from archive",
2022-03-06 18:30:59 +02:00
"LOG: consistent recovery state reached at 0/22000050",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"LOG: database system is ready to accept read only connections"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"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"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
"sudo -u postgres psql -c \"select * from replicated_table;\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"replicated_table\" does not exist",
"LINE 1: select * from replicated_table;",
" ^"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres psql -c \"select *, current_timestamp from pg_switch_wal()\";"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2020-07-20 14:57:22 +02:00
" pg_switch_wal | current_timestamp ",
"---------------+-------------------------------",
2022-03-06 18:30:59 +02:00
" 0/2302ACF0 | 2022-03-06 15:47:06.267771+00",
2017-04-13 01:17:39 +02:00
"(1 row)"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select *, current_timestamp from replicated_table\""
],
"highlight" : {
2018-05-07 01:53:42 +02:00
"filter" : false,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
" message | current_timestamp ",
"----------------+------------------------------",
" Important Data | 2022-03-06 15:47:08.30542+00",
2018-05-07 01:53:42 +02:00
"(1 row)"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2019-11-12 22:51:28 +02:00
"because this is a standby"
2018-05-07 01:53:42 +02:00
]
},
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: check command begin 2.38: --exec-id=1250-dbce0fe1 --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/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",
2021-02-08 16:08:16 +02:00
"P00 INFO: check repo1 (standby)",
2019-11-12 22:51:28 +02:00
"P00 INFO: switch wal not performed because this is a standby",
2018-05-07 01:53:42 +02:00
"P00 INFO: check command end: completed successfully"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres psql -c \" \\",
" create user replicator password 'jw8s0F4' replication\";"
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"CREATE ROLE"
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres sh -c 'echo \\",
2020-07-20 14:57:22 +02:00
" \"host replication replicator 172.17.0.7/32 md5\" \\",
" >> /var/lib/pgsql/10/data/pg_hba.conf'"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl reload postgresql-10.service"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
"file" : "/etc/pgbackrest/pgbackrest.conf",
"host" : "pg-standby",
"option" : {
"demo" : {
"recovery-option" : {
2020-07-20 14:57:22 +02:00
"value" : "primary_conninfo=host=172.17.0.5 port=5432 user=replicator"
2018-05-07 01:53:42 +02:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
"recovery-option=primary_conninfo=host=172.17.0.5 port=5432 user=replicator",
2018-05-07 01:53:42 +02:00
"",
"[global]",
"log-level-file=detail",
2022-01-03 15:43:55 +02:00
"repo1-host=repository",
2022-03-06 18:30:59 +02:00
"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",
2022-01-03 15:43:55 +02:00
"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"
2018-05-07 01:53:42 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres sh -c 'echo \\",
2020-07-20 14:57:22 +02:00
" \"172.17.0.5:*:replication:replicator:jw8s0F4\" \\",
2019-01-02 22:04:47 +02:00
" >> /var/lib/pgsql/.pgpass'"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2019-01-02 22:04:47 +02:00
"sudo -u postgres chmod 600 /var/lib/pgsql/.pgpass"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2019-10-01 22:02:07 +02:00
"sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/lib/pgsql/10/data/recovery.conf"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"# Recovery settings generated by pgBackRest restore on 2022-03-06 15:47:11",
2020-07-20 14:57:22 +02:00
"primary_conninfo = 'host=172.17.0.5 port=5432 user=replicator'",
2019-10-01 22:02:07 +02:00
"restore_command = 'pgbackrest --stanza=demo archive-get %f \"%p\"'",
"standby_mode = 'on'"
2018-05-07 01:53:42 +02:00
]
}
},
2019-01-02 22:04:47 +02:00
{
"key" : {
2020-07-20 14:57:22 +02:00
"file" : "/var/lib/pgsql/10/data/postgresql.conf",
2019-01-02 22:04:47 +02:00
"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",
2019-06-25 14:29:06 +02:00
"wal_level = replica"
2019-01-02 22:04:47 +02:00
]
}
},
2018-05-07 01:53:42 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm /var/lib/pgsql/10/data/log/postgresql.log"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-10.service"
2018-05-07 01:53:42 +02:00
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres sleep 2"
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres cat /var/lib/pgsql/10/data/log/postgresql.log"
2018-05-07 01:53:42 +02:00
],
"highlight" : {
"filter" : true,
2017-04-13 01:17:39 +02:00
"filter-context" : 2,
"list" : [
2018-05-07 01:53:42 +02:00
"started streaming WAL from primary"
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-01-03 15:43:55 +02:00
" [filtered 7 lines of output]",
2018-05-07 01:53:42 +02:00
"LOG: database system is ready to accept read only connections",
2022-03-06 18:30:59 +02:00
"LOG: restored log file \"000000080000000000000023\" from archive",
"LOG: started streaming WAL from primary at 0/24000000 on timeline 8"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"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\";"
2017-04-13 01:17:39 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2018-05-07 01:53:42 +02:00
"Important Data"
2017-04-13 01:17:39 +02:00
]
},
2018-05-07 01:53:42 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2021-04-05 15:18:20 +02:00
" message | current_timestamp ",
"----------------+-------------------------------",
2022-03-06 18:30:59 +02:00
" Important Data | 2022-03-06 15:47:15.878472+00",
2018-05-07 01:53:42 +02:00
"(1 row)"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
"sudo -u postgres psql -c \" \\",
2018-05-07 01:53:42 +02:00
" select *, current_timestamp from stream_table\""
2017-04-13 01:17:39 +02:00
],
2018-05-07 01:53:42 +02:00
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
v2.29: Auto S3 Credentials on AWS
Bug Fixes:
* Suppress errors when closing local/remote processes. Since the command has completed it is counterproductive to throw an error but still warn to indicate that something unusual happened. (Reviewed by Cynthia Shang. Reported by argdenis.)
* Fix issue with = character in file or database names. (Reviewed by Bastian Wegge, Cynthia Shang. Reported by Brad Nicholson, Bastian Wegge.)
Features:
* Automatically retrieve temporary S3 credentials on AWS instances. (Contributed by David Steele, Stephen Frost. Reviewed by Cynthia Shang, David Youatt, Aleš Zelený, Jeanette Bromage.)
* Add archive-mode option to disable archiving on restore. (Reviewed by Stephen Frost. Suggested by Stephen Frost.)
Improvements:
* PostgreSQL 13 beta3 support. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
* Asynchronous list/remove for S3/Azure storage. (Reviewed by Cynthia Shang, Stephen Frost.)
* Improve memory usage of unlogged relation detection in manifest build. (Reviewed by Cynthia Shang, Stephen Frost, Brad Nicholson, Oscar. Suggested by Oscar, Brad Nicholson.)
* Proactively close file descriptors after forking async process. (Reviewed by Stephen Frost, Cynthia Shang.)
* Delay backup remote connection close until after archive check. (Contributed by Floris van Nee. Reviewed by David Steele.)
* Improve detailed error output. (Reviewed by Cynthia Shang.)
* Improve TLS error reporting. (Reviewed by Cynthia Shang, Stephen Frost.)
Documentation Bug Fixes:
* Add none to compress-type option reference and fix example. (Reported by Ugo Bellavance, Don Seiler.)
* Add missing azure type in repo-type option reference. (Fixed by Don Seiler. Reviewed by David Steele.)
* Fix typo in repo-cipher-type option reference. (Fixed by Don Seiler. Reviewed by David Steele.)
Documentation Improvements:
* Clarify that expire must be run regularly when expire-auto is disabled. (Reviewed by Douglas J Hunley. Suggested by Douglas J Hunley.)
2020-08-31 13:28:22 +02:00
" message | current_timestamp ",
"----------------+-------------------------------",
2022-03-06 18:30:59 +02:00
" Important Data | 2022-03-06 15:47:16.187884+00",
2018-05-07 01:53:42 +02:00
"(1 row)"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p -m 750 /var/spool/pgbackrest"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chown postgres:postgres /var/spool/pgbackrest"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-23 01:53:25 +02:00
"sudo mkdir -p -m 750 /var/spool/pgbackrest"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo chown postgres:postgres /var/spool/pgbackrest"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"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"
}
}
}
2017-04-13 01:17:39 +02:00
},
2018-05-07 01:53:42 +02:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2018-05-07 01:53:42 +02:00
"",
"[global]",
"archive-async=y",
"log-level-file=detail",
"repo1-host=repository",
2022-03-06 18:30:59 +02:00
"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",
2018-05-07 01:53:42 +02:00
"spool-path=/var/spool/pgbackrest",
2022-01-03 15:43:55 +02:00
"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",
2018-05-07 01:53:42 +02:00
"",
"[global:archive-get]",
"process-max=2",
"",
"[global:archive-push]",
"process-max=2"
]
}
2017-04-13 01:17:39 +02:00
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-05-07 01:53:42 +02:00
"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"
}
}
}
2017-04-13 01:17:39 +02:00
},
2018-05-07 01:53:42 +02:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
"recovery-option=primary_conninfo=host=172.17.0.5 port=5432 user=replicator",
2018-05-07 01:53:42 +02:00
"",
"[global]",
"archive-async=y",
"log-level-file=detail",
"repo1-host=repository",
2022-03-06 18:30:59 +02:00
"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",
2018-05-07 01:53:42 +02:00
"spool-path=/var/spool/pgbackrest",
2022-01-03 15:43:55 +02:00
"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",
2018-05-07 01:53:42 +02:00
"",
"[global:archive-get]",
"process-max=2",
"",
"[global:archive-push]",
"process-max=2"
]
}
2017-04-13 01:17:39 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u postgres psql -c \"alter user replicator password 'bogus'\""
2017-04-13 01:17:39 +02:00
],
2018-05-07 01:53:42 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2018-05-07 01:53:42 +02:00
"ALTER ROLE"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl restart postgresql-10.service"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u postgres rm -f /var/log/pgbackrest/demo-archive-push-async.log"
2017-04-13 01:17:39 +02:00
],
2018-05-07 01:53:42 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u postgres psql -c \" \\",
2020-07-20 14:57:22 +02:00
" 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();\""
2017-04-13 01:17:39 +02:00
],
2018-05-07 01:53:42 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
2017-04-13 01:17:39 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2018-05-07 01:53:42 +02:00
"WAL segment"
2017-04-13 01:17:39 +02:00
]
},
2018-05-07 01:53:42 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: check command begin 2.38: --exec-id=5166-085cdcf5 --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/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",
2021-02-08 16:08:16 +02:00
"P00 INFO: check repo1 configuration (primary)",
"P00 INFO: check repo1 archive for WAL (primary)",
2022-03-06 18:30:59 +02:00
"P00 INFO: WAL segment 000000080000000000000029 successfully archived to '/var/lib/pgbackrest/archive/demo/10-1/0000000800000000/000000080000000000000029-6e44e8cd8a0e548e812774cf44623d1c519167c1.gz' on repo1",
2018-05-07 01:53:42 +02:00
"P00 INFO: check command end: completed successfully"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log"
2017-04-13 01:17:39 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2019-04-11 15:14:22 +02:00
" WAL file\\(s\\) to archive|pushed WAL file \\'0000000"
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2018-05-07 01:53:42 +02:00
"-------------------PROCESS START-------------------",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-push:async command begin 2.38: [/var/lib/pgsql/10/data/pg_wal] --archive-async --exec-id=5130-03c34363 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/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: 000000080000000000000024",
"P01 DETAIL: pushed WAL file '000000080000000000000024' to the archive",
2022-01-03 15:43:55 +02:00
"P00 DETAIL: statistics: {\"socket.client\":{\"total\":1},\"socket.session\":{\"total\":1},\"tls.client\":{\"total\":1},\"tls.session\":{\"total\":1}}",
2020-01-15 22:21:52 +02:00
"P00 INFO: archive-push:async command end: completed successfully",
2018-05-07 01:53:42 +02:00
"",
"-------------------PROCESS START-------------------",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-push:async command begin 2.38: [/var/lib/pgsql/10/data/pg_wal] --archive-async --exec-id=5137-c77bf390 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/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 4 WAL file(s) to archive: 000000080000000000000025...000000080000000000000028",
"P02 DETAIL: pushed WAL file '000000080000000000000026' to the archive",
"P01 DETAIL: pushed WAL file '000000080000000000000025' to the archive",
2022-01-03 15:43:55 +02:00
"P01 DETAIL: pushed WAL file '000000080000000000000028' to the archive",
2022-03-06 18:30:59 +02:00
"P02 DETAIL: pushed WAL file '000000080000000000000027' to the archive",
2022-01-03 15:43:55 +02:00
"P00 DETAIL: statistics: {\"socket.client\":{\"total\":1},\"socket.session\":{\"total\":1},\"tls.client\":{\"total\":1},\"tls.session\":{\"total\":1}}",
2020-01-15 22:21:52 +02:00
"P00 INFO: archive-push:async command end: completed successfully",
2019-03-10 18:56:00 +02:00
"",
"-------------------PROCESS START-------------------",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-push:async command begin 2.38: [/var/lib/pgsql/10/data/pg_wal] --archive-async --exec-id=5171-6e9f52cd --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/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: 000000080000000000000029",
"P01 DETAIL: pushed WAL file '000000080000000000000029' to the archive",
2022-01-03 15:43:55 +02:00
"P00 DETAIL: statistics: {\"socket.client\":{\"total\":1},\"socket.session\":{\"total\":1},\"tls.client\":{\"total\":1},\"tls.session\":{\"total\":1}}",
2020-01-15 22:21:52 +02:00
"P00 INFO: archive-push:async command end: completed successfully"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-05-07 01:53:42 +02:00
"sudo -u postgres sleep 5"
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log"
2017-04-13 01:17:39 +02:00
],
"highlight" : {
2018-05-07 01:53:42 +02:00
"filter" : true,
2017-04-13 01:17:39 +02:00
"filter-context" : 2,
"list" : [
2021-02-08 16:08:16 +02:00
"found [0-F]{24} in the .* archive"
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2018-05-07 01:53:42 +02:00
"-------------------PROCESS START-------------------",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-get:async command begin 2.38: [000000080000000000000021, 000000080000000000000022, 000000080000000000000023, 000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027, 000000080000000000000028] --archive-async --exec-id=1768-d6c0dd76 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/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: 000000080000000000000021...000000080000000000000028",
"P01 DETAIL: found 000000080000000000000021 in the repo1: 10-1 archive",
"P02 DETAIL: found 000000080000000000000022 in the repo1: 10-1 archive",
"P01 DETAIL: found 000000080000000000000023 in the repo1: 10-1 archive",
"P00 DETAIL: unable to find 000000080000000000000024 in the archive",
2022-01-03 15:43:55 +02:00
"P00 DETAIL: statistics: {\"socket.client\":{\"total\":1},\"socket.session\":{\"total\":1},\"tls.client\":{\"total\":1},\"tls.session\":{\"total\":1}}",
" [filtered 24 lines of output]",
2022-03-06 18:30:59 +02:00
"P00 INFO: archive-get:async command begin 2.38: [000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027, 000000080000000000000028, 000000080000000000000029, 00000008000000000000002A, 00000008000000000000002B] --archive-async --exec-id=1814-5445fd95 --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/pgsql/10/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: 000000080000000000000024...00000008000000000000002B",
"P01 DETAIL: found 000000080000000000000024 in the repo1: 10-1 archive",
"P02 DETAIL: found 000000080000000000000025 in the repo1: 10-1 archive",
"P01 DETAIL: found 000000080000000000000026 in the repo1: 10-1 archive",
"P02 DETAIL: found 000000080000000000000027 in the repo1: 10-1 archive",
"P01 DETAIL: found 000000080000000000000028 in the repo1: 10-1 archive",
"P02 DETAIL: found 000000080000000000000029 in the repo1: 10-1 archive",
"P00 DETAIL: unable to find 00000008000000000000002A in the archive",
2022-01-03 15:43:55 +02:00
"P00 DETAIL: statistics: {\"socket.client\":{\"total\":1},\"socket.session\":{\"total\":1},\"tls.client\":{\"total\":1},\"tls.session\":{\"total\":1}}",
" [filtered 14 lines of output]"
2018-05-07 01:53:42 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-05-07 01:53:42 +02:00
"cmd" : [
"sudo -u postgres psql -c \"alter user replicator password 'jw8s0F4'\""
],
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-05-07 01:53:42 +02:00
},
"type" : "exe",
"value" : {
"output" : [
"ALTER ROLE"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2017-04-13 01:17:39 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg2-host" : {
"value" : "pg-standby"
2017-04-13 01:17:39 +02:00
},
2022-01-03 15:43:55 +02:00
"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"
},
2018-02-24 05:38:45 +02:00
"pg2-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/var/lib/pgsql/10/data"
2017-04-13 01:17:39 +02:00
}
},
"global" : {
"backup-standby" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2018-02-24 05:38:45 +02:00
"pg1-host=pg-primary",
2022-01-03 15:43:55 +02:00
"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",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/10/data",
2018-02-24 05:38:45 +02:00
"pg2-host=pg-standby",
2022-01-03 15:43:55 +02:00
"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",
2020-07-20 14:57:22 +02:00
"pg2-path=/var/lib/pgsql/10/data",
2017-04-13 01:17:39 +02:00
"",
"[global]",
"backup-standby=y",
"process-max=3",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
2022-01-03 15:43:55 +02:00
"start-fast=y",
"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"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo --log-level-console=detail backup"
2017-04-13 01:17:39 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2018-02-24 05:38:45 +02:00
"backup file pg-primary|replay on the standby"
2017-04-13 01:17:39 +02:00
]
},
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
" [filtered 2 lines of output]",
2020-01-15 22:21:52 +02:00
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes",
2022-03-06 18:30:59 +02:00
"P00 INFO: backup start archive = 00000008000000000000002B, lsn = 0/2B000028",
"P00 INFO: wait for replay on the standby to reach 0/2B000028",
"P00 INFO: replay on the standby reached 0/2B000028",
"P00 INFO: check archive for prior segment 00000008000000000000002A",
"P01 DETAIL: backup file pg-primary:/var/lib/pgsql/10/data/global/pg_control (8KB, 0%) checksum 9793727878cb0c433513c518639aeca0976b0c40",
"P02 DETAIL: backup file pg-standby:/var/lib/pgsql/10/data/base/13017/2608 (440KB, 19%) checksum 639d26af55ab065b62807a9b335717590ef042a6",
"P03 DETAIL: backup file pg-standby:/var/lib/pgsql/10/data/base/13017/1249 (392KB, 36%) checksum 4fabe6d362ad39cae875205efc2869d9e2336074",
"P04 DETAIL: backup file pg-standby:/var/lib/pgsql/10/data/base/13017/2674 (376KB, 52%) checksum 46241fd9e3dfa65b61fc776c1f93be310c4be741",
"P01 DETAIL: backup file pg-primary:/var/lib/pgsql/10/data/log/postgresql.log (5.6KB, 52%) checksum 5994cab7c43790f977957aeee2524099724e8176",
"P01 DETAIL: backup file pg-primary:/var/lib/pgsql/10/data/pg_hba.conf (4.2KB, 53%) checksum 12abee43e7eabfb3ff6239f3fc9bc3598293557d",
"P02 DETAIL: backup file pg-standby:/var/lib/pgsql/10/data/base/13017/2673 (312KB, 66%) checksum 1ccf3cbf84ad99b9ac0fdade3cc577b43de34bc9",
"P01 DETAIL: backup file pg-primary:/var/lib/pgsql/10/data/current_logfiles (26B, 66%) checksum 78a9f5c10960f0d91fcd313937469824861795a2",
"P01 DETAIL: backup file pg-primary:/var/lib/pgsql/10/data/pg_logical/replorigin_checkpoint (8B, 66%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532",
"P03 DETAIL: backup file pg-standby:/var/lib/pgsql/10/data/base/13017/2658 (112KB, 71%) checksum 5bccf9bafd1279ed457dc47f1bdf8264f1ea8cfc",
"P04 DETAIL: backup file pg-standby:/var/lib/pgsql/10/data/base/13017/1259 (88KB, 75%) checksum a53f44b610eece971e2fb39ca2058f1ad4f73964",
" [filtered 1252 lines of output]"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl stop postgresql-10.service"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
2018-02-24 05:38:45 +02:00
"type" : "exe"
2017-04-13 01:17:39 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres /usr/pgsql-11/bin/initdb \\",
" -D /var/lib/pgsql/11/data -k -A peer"
2017-04-13 01:17:39 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2017-04-13 01:17:39 +02:00
"cmd" : [
2019-01-02 22:04:47 +02:00
"sudo -u postgres sh -c 'cd /var/lib/pgsql && \\",
2020-07-20 14:57:22 +02:00
" /usr/pgsql-11/bin/pg_upgrade \\",
" --old-bindir=/usr/pgsql-10/bin \\",
" --new-bindir=/usr/pgsql-11/bin \\",
" --old-datadir=/var/lib/pgsql/10/data \\",
" --new-datadir=/var/lib/pgsql/11/data \\",
" --old-options=\" -c config_file=/var/lib/pgsql/10/data/postgresql.conf\" \\",
" --new-options=\" -c config_file=/var/lib/pgsql/11/data/postgresql.conf\"'"
2017-04-13 01:17:39 +02:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Upgrade Complete"
]
},
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2017-04-13 01:17:39 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2021-11-01 14:59:14 +02:00
" [filtered 72 lines of output]",
"Checking for extension updates ok",
2017-04-13 01:17:39 +02:00
"",
"Upgrade Complete",
"----------------",
"Optimizer statistics are not transferred by pg_upgrade so,",
" [filtered 4 lines of output]"
]
}
},
2022-03-06 18:30:59 +02:00
{
"key" : {
"bash-wrap" : true,
"cmd" : [
"cat /root/postgresql.common.conf >> /var/lib/pgsql/11/data/postgresql.conf"
],
"host" : "pg-primary",
"load-env" : true,
"output" : false,
"run-as-user" : "root"
},
"type" : "exe"
},
2017-04-13 01:17:39 +02:00
{
"key" : {
2020-07-20 14:57:22 +02:00
"file" : "/var/lib/pgsql/11/data/postgresql.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-04-13 01:17:39 +02:00
"option" : {
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
2022-03-06 18:30:59 +02:00
"log_filename" : {
"value" : "'postgresql.log'"
2017-04-13 01:17:39 +02:00
},
"max_wal_senders" : {
"value" : "3"
},
"wal_level" : {
2019-06-25 14:29:06 +02:00
"value" : "replica"
2017-04-13 01:17:39 +02:00
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
2022-03-06 18:30:59 +02:00
"log_filename = 'postgresql.log'",
2017-04-13 01:17:39 +02:00
"max_wal_senders = 3",
2019-06-25 14:29:06 +02:00
"wal_level = replica"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2017-04-13 01:17:39 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/var/lib/pgsql/11/data"
2017-04-13 01:17:39 +02:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/11/data",
2017-04-13 01:17:39 +02:00
"",
"[global]",
"archive-async=y",
"log-level-file=detail",
2018-02-24 05:38:45 +02:00
"repo1-host=repository",
2022-03-06 18:30:59 +02:00
"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",
2017-04-13 01:17:39 +02:00
"spool-path=/var/spool/pgbackrest",
2022-01-03 15:43:55 +02:00
"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",
2017-04-13 01:17:39 +02:00
"",
2018-05-07 01:53:42 +02:00
"[global:archive-get]",
"process-max=2",
"",
2017-04-13 01:17:39 +02:00
"[global:archive-push]",
"process-max=2"
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2017-04-13 01:17:39 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/var/lib/pgsql/11/data"
2017-04-13 01:17:39 +02:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/11/data",
"recovery-option=primary_conninfo=host=172.17.0.5 port=5432 user=replicator",
2017-04-13 01:17:39 +02:00
"",
"[global]",
2018-05-07 01:53:42 +02:00
"archive-async=y",
"log-level-file=detail",
"repo1-host=repository",
2022-03-06 18:30:59 +02:00
"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",
2018-05-07 01:53:42 +02:00
"spool-path=/var/spool/pgbackrest",
2022-01-03 15:43:55 +02:00
"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",
2018-05-07 01:53:42 +02:00
"",
"[global:archive-get]",
"process-max=2",
"",
"[global:archive-push]",
"process-max=2"
2017-04-13 01:17:39 +02:00
]
}
},
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
2017-04-13 01:17:39 +02:00
"option" : {
"demo" : {
2018-02-24 05:38:45 +02:00
"pg1-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/var/lib/pgsql/11/data"
2017-04-13 01:17:39 +02:00
},
2018-02-24 05:38:45 +02:00
"pg2-path" : {
2020-07-20 14:57:22 +02:00
"value" : "/var/lib/pgsql/11/data"
2017-04-13 01:17:39 +02:00
}
},
"global" : {
"backup-standby" : {
"value" : "n"
}
}
}
},
"type" : "cfg-pgbackrest",
2016-06-02 17:10:24 +02:00
"value" : {
2017-04-13 01:17:39 +02:00
"config" : [
"[demo]",
2018-02-24 05:38:45 +02:00
"pg1-host=pg-primary",
2022-01-03 15:43:55 +02:00
"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",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/11/data",
2018-02-24 05:38:45 +02:00
"pg2-host=pg-standby",
2022-01-03 15:43:55 +02:00
"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",
2020-07-20 14:57:22 +02:00
"pg2-path=/var/lib/pgsql/11/data",
2017-04-13 01:17:39 +02:00
"",
"[global]",
"backup-standby=n",
"process-max=3",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
2022-01-03 15:43:55 +02:00
"start-fast=y",
"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"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo cp /var/lib/pgsql/10/data/pg_hba.conf \\",
" /var/lib/pgsql/11/data/pg_hba.conf"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2021-04-05 15:18:20 +02:00
"sudo -u postgres pgbackrest --stanza=demo --no-online \\",
2017-04-13 01:17:39 +02:00
" --log-level-console=info stanza-upgrade"
2016-06-02 17:10:24 +02:00
],
"highlight" : {
2017-04-13 01:17:39 +02:00
"filter" : true,
2016-06-02 17:10:24 +02:00
"filter-context" : 2,
"list" : [
2017-04-13 01:17:39 +02:00
"completed successfully"
2016-06-02 17:10:24 +02:00
]
},
2021-04-05 15:18:20 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"P00 INFO: stanza-upgrade command begin 2.38: --exec-id=5667-4dda77c0 --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --no-online --pg1-path=/var/lib/pgsql/11/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",
2021-02-08 16:08:16 +02:00
"P00 INFO: stanza-upgrade for stanza 'demo' on repo1",
2017-09-03 23:42:00 +02:00
"P00 INFO: stanza-upgrade command end: completed successfully"
2016-06-02 17:10:24 +02:00
]
}
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-11.service"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres systemctl status postgresql-11.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
2021-11-01 14:59:14 +02:00
"output" : false,
2018-07-06 02:16:41 +02:00
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2021-11-01 14:59:14 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-04-13 01:17:39 +02:00
"sudo -u postgres pgbackrest --stanza=demo check"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm -rf /var/lib/pgsql/10/data"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-primary",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo rm -rf /var/lib/pgsql/10/data"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo -u postgres mkdir -p -m 700 /usr/pgsql-11/bin"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2018-02-24 05:38:45 +02:00
"sudo -u pgbackrest pgbackrest --stanza=demo check"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2019-08-05 18:03:04 +02:00
"type" : "exe",
"value" : {
"output" : [
2022-03-06 18:30:59 +02:00
"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",
2019-08-05 18:03:04 +02:00
" \tIs the server running locally and accepting",
" \tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5432\"?"
]
}
2016-06-02 17:10:24 +02:00
},
2018-02-24 05:38:45 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-02-24 05:38:45 +02:00
"cmd" : [
"sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup"
],
"host" : "repository",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2018-02-24 05:38:45 +02:00
},
"type" : "exe"
},
2016-06-02 17:10:24 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2019-10-01 22:02:07 +02:00
"sudo -u postgres pgbackrest --stanza=demo --type=standby restore"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
"type" : "exe"
},
{
"key" : {
2020-07-20 14:57:22 +02:00
"file" : "/var/lib/pgsql/11/data/postgresql.conf",
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2017-04-13 01:17:39 +02:00
"option" : {
"hot_standby" : {
"value" : "on"
}
}
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "cfg-postgresql",
2016-06-02 17:10:24 +02:00
"value" : {
2017-04-13 01:17:39 +02:00
"config" : [
"hot_standby = on"
2016-06-02 17:10:24 +02:00
]
}
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2020-07-20 14:57:22 +02:00
"sudo systemctl start postgresql-11.service"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
2016-06-02 17:10:24 +02:00
},
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2016-06-02 17:10:24 +02:00
"cmd" : [
2017-09-29 01:06:41 +02:00
"sudo -u postgres sleep 2"
2016-06-02 17:10:24 +02:00
],
2018-02-24 05:38:45 +02:00
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : false,
"run-as-user" : null
2016-06-02 17:10:24 +02:00
},
2017-04-13 01:17:39 +02:00
"type" : "exe"
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 17:49:09 +02:00
},
2018-02-24 05:38:45 +02:00
{
"key" : {
2018-07-06 02:16:41 +02:00
"bash-wrap" : true,
2018-02-24 05:38:45 +02:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo check"
],
"host" : "pg-standby",
2018-07-06 02:16:41 +02:00
"load-env" : true,
"output" : true,
"run-as-user" : null
2018-02-24 05:38:45 +02:00
},
"type" : "exe"
},
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 17:49:09 +02:00
{
"key" : {
2018-05-07 01:53:42 +02:00
"file" : "/etc/pgbackrest/pgbackrest.conf",
2018-02-24 05:38:45 +02:00
"host" : "repository",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 17:49:09 +02:00
"option" : {
"global" : {
"backup-standby" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2018-02-24 05:38:45 +02:00
"pg1-host=pg-primary",
2022-01-03 15:43:55 +02:00
"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",
2020-07-20 14:57:22 +02:00
"pg1-path=/var/lib/pgsql/11/data",
2018-02-24 05:38:45 +02:00
"pg2-host=pg-standby",
2022-01-03 15:43:55 +02:00
"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",
2020-07-20 14:57:22 +02:00
"pg2-path=/var/lib/pgsql/11/data",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 17:49:09 +02:00
"",
"[global]",
"backup-standby=y",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-06 03:23:03 +02:00
"process-max=3",
2018-02-24 05:38:45 +02:00
"repo1-path=/var/lib/pgbackrest",
"repo1-retention-full=2",
2022-01-03 15:43:55 +02:00
"start-fast=y",
"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"
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 17:49:09 +02:00
]
}
2016-06-02 17:10:24 +02:00
}
]
}
}
}