heap). En cas de crash, le WAL est rejoué pour rendre la base de données cohérente.
wget -q -O - \ https://github.com/pgbackrest/pgbackrest/archive/release/2.27.tar.gz | \ tar zx -C /build
sudo apt-get install make gcc libpq-dev libssl-dev libxml2-dev pkg-config \ liblz4-dev libzstd-dev libbz2-dev libz-dev
cd /build/pgbackrest-release-2.27/src && ./configure && make
sudo apt-get install postgresql-client libxml2
sudo scp build:/build/pgbackrest-release-2.27/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest
sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
sudo -u postgres pgbackrest
pgBackRest 2.27 - General help 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. restore Restore a database cluster. 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.
sudo -u postgres /usr/lib/postgresql/10/bin/initdb \ -D /var/lib/postgresql/10/demo -k -A peer
sudo pg_createcluster 10 demo
Configuring already existing cluster (configuration: /etc/postgresql/10/demo, data: /var/lib/postgresql/10/demo, owner: 106:110) Ver Cluster Port Status Owner Data directory Log file 10 demo 5432 down postgres /var/lib/postgresql/10/demo /var/log/postgresql/postgresql-10-demo.log
sudo -u postgres bash -c ' \ export PGBACKREST_LOG_PATH=/path/set/by/env && \ pgbackrest --log-level-console=error help backup log-path'
pgBackRest 2.27 - 'backup' command - 'log-path' option help Path where log files are stored. The log path provides a location for pgBackRest to store log files. Note that if log-level-file=off then no log path is required.
current: /path/set/by/env
default: /var/log/pgbackrest
sudo mkdir -p /var/lib/pgbackrest
sudo chmod 750 /var/lib/pgbackrest
sudo chown postgres:postgres /var/lib/pgbackrest
sudo pg_ctlcluster 10 demo restart
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
P00 INFO: stanza-create command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo
P00 INFO: stanza-create command end: completed successfully
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
P00 INFO: check command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --stanza=demo
P00 INFO: WAL segment 000000010000000000000001 successfully archived to '/var/lib/pgbackrest/archive/demo/10-1/0000000100000000/000000010000000000000001-5317f0861897ba330ae8292d6d07e120f6d3263f.gz'
P00 INFO: check command end: completed successfully
sudo -u postgres pgbackrest --stanza=demo \ --log-level-console=info backup
P00 INFO: backup command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo
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 next regular checkpoint completes P00 INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028 [filtered 941 lines of output] P01 INFO: backup file /var/lib/postgresql/10/demo/base/1/12822 (0B, 100%) P01 INFO: backup file /var/lib/postgresql/10/demo/base/1/12817 (0B, 100%)
P00 INFO: full backup size = 22.5MB
P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive P00 INFO: backup stop archive = 000000010000000000000002, lsn = 0/2000130 [filtered 4 lines of output]
sudo -u postgres pgbackrest --stanza=demo --type=diff \ --log-level-console=info backup
[filtered 4 lines of output] P01 INFO: backup file /var/lib/postgresql/10/demo/global/pg_control (8KB, 99%) checksum ee410d8bc3dc0316381300064b4a6e05868fa3bd P01 INFO: backup file /var/lib/postgresql/10/demo/pg_logical/replorigin_checkpoint (8B, 100%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532
P00 INFO: diff backup size = 8KB
P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive P00 INFO: backup stop archive = 000000010000000000000003, lsn = 0/30000F8 [filtered 4 lines of output]
#m h dom mon dow command 30 06 * * 0 pgbackrest --type=full --stanza=demo backup 30 06 * * 1-6 pgbackrest --type=diff --stanza=demo backup
sudo -u postgres pgbackrest info
stanza: demo status: ok cipher: aes-256-cbc db (current) wal archive min/max (10-1): 000000010000000000000001/000000010000000000000003
full backup: 20200526-001729F
timestamp start/stop: 2020-05-26 00:17:29 / 2020-05-26 00:17:42 wal start/stop: 000000010000000000000002 / 000000010000000000000002 database size: 22.5MB, backup size: 22.5MB repository size: 2.7MB, repository backup size: 2.7MB
diff backup: 20200526-001729F_20200526-001744D
timestamp start/stop: 2020-05-26 00:17:44 / 2020-05-26 00:17:45 wal start/stop: 000000010000000000000003 / 000000010000000000000003 database size: 22.5MB, backup size: 8.2KB repository size: 2.7MB, repository backup size: 496B backup reference list: 20200526-001729F
sudo pg_ctlcluster 10 demo stop
sudo -u postgres rm /var/lib/postgresql/10/demo/global/pg_control
sudo pg_ctlcluster 10 demo start
Error: /usr/lib/postgresql/10/bin/pg_ctl /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/demo -l /var/log/postgresql/postgresql-10-demo.log -s -o -c config_file="/etc/postgresql/10/demo/postgresql.conf" exited with status 1:
postgres: could not find the database system
Expected to find it in the directory "/var/lib/postgresql/10/demo", but could not open file "/var/lib/postgresql/10/demo/global/pg_control": No such file or directory Examine the log output.
sudo -u postgres find /var/lib/postgresql/10/demo -mindepth 1 -delete
sudo -u postgres pgbackrest --stanza=demo restore
sudo pg_ctlcluster 10 demo start
sudo -u postgres pgbackrest --stanza=demo --type=incr \ --log-level-console=info backup
P00 INFO: backup command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --type=incr P00 INFO: last backup label = 20200526-001729F_20200526-001744D, version = 2.27
P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes
P00 INFO: backup start archive = 000000020000000000000005, lsn = 0/5000028 P00 WARN: a timeline switch has occurred since the 20200526-001729F_20200526-001744D backup, enabling delta checksum [filtered 8 lines of output]
sudo -u postgres pgbackrest --stanza=demo --type=incr \ --log-level-console=info backup
P00 INFO: backup command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo --start-fast --type=incr P00 INFO: last backup label = 20200526-001729F_20200526-001802I, version = 2.27
P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes
P00 INFO: backup start archive = 000000020000000000000006, lsn = 0/6000028 P01 INFO: backup file /var/lib/postgresql/10/demo/global/pg_control (8KB, 99%) checksum d2086dddf6d84d1ed93e32900eec3ac7b988a40c [filtered 8 lines of output]
sudo -u postgres cat \ /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql
-- An example of monitoring pgBackRest from within PostgreSQL -- -- Use copy to export data from the pgBackRest info command into the jsonb -- type so it can be queried directly by PostgreSQL. -- Create monitor schema create schema monitor; -- Get pgBackRest info in JSON format create function monitor.pgbackrest_info() returns jsonb AS $$ declare data jsonb; begin -- Create a temp table to hold the JSON data create temp table temp_pgbackrest_data (data jsonb); -- Copy data into the table directly from the pgBackRest info command copy temp_pgbackrest_data (data) from program 'pgbackrest --output=json info' (format text); select temp_pgbackrest_data.data into data from temp_pgbackrest_data; drop table temp_pgbackrest_data; return data; end $$ language plpgsql;
sudo -u postgres psql -f \ /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-info.sql
sudo -u postgres cat \ /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql
-- 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;
sudo -u postgres psql -f \ /var/lib/postgresql/pgbackrest/doc/example/pgsql-pgbackrest-query.sql
name | last_successful_backup | last_archived_wal --------+------------------------+-------------------------- "demo" | 2020-05-26 00:18:07+00 | 000000020000000000000006 (1 row)
sudo apt-get install jq
sudo -u postgres pgbackrest --output=json --stanza=demo info | \ jq '.[0] | .backup[-1] | .timestamp.stop'
1590452287
sudo -u postgres pgbackrest --output=json --stanza=demo info | \ jq '.[0] | .archive[-1] | .max'
"000000020000000000000006"
sudo -u postgres pgbackrest --stanza=demo --type=full \ --log-level-console=detail backup
[filtered 952 lines of output] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin 2.27: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo
P00 DETAIL: archive retention on backup 20200526-001729F, archiveId = 10-1, start = 000000010000000000000002 P00 DETAIL: remove archive: archiveId = 10-1, start = 000000010000000000000001, stop = 000000010000000000000001
P00 INFO: expire command end: completed successfully
sudo -u postgres pgbackrest --stanza=demo --type=full \ --log-level-console=info backup
[filtered 951 lines of output] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-full=2 --stanza=demo
P00 INFO: expire full backup set: 20200526-001729F, 20200526-001729F_20200526-001744D, 20200526-001729F_20200526-001802I, 20200526-001729F_20200526-001805I
P00 INFO: remove expired backup 20200526-001729F_20200526-001805I P00 INFO: remove expired backup 20200526-001729F_20200526-001802I [filtered 2 lines of output]
sudo -u postgres pgbackrest --stanza=demo --type=diff backup
sudo -u postgres pgbackrest --stanza=demo --type=incr backup
sudo -u postgres pgbackrest --stanza=demo --type=diff \ --log-level-console=info backup
[filtered 11 lines of output] P00 INFO: backup command end: completed successfully P00 INFO: expire command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=1 --repo1-retention-full=2 --stanza=demo
P00 INFO: expire diff backup set: 20200526-001828F_20200526-001843D, 20200526-001828F_20200526-001846I
P00 INFO: remove expired backup 20200526-001828F_20200526-001846I P00 INFO: remove expired backup 20200526-001828F_20200526-001843D
sudo -u postgres pgbackrest --stanza=demo --type=diff \ --log-level-console=info backup
[filtered 8 lines of output] P00 INFO: backup stop archive = 000000020000000000000011, lsn = 0/110000F8 P00 INFO: check archive for segment(s) 000000020000000000000011:000000020000000000000011
P00 INFO: new backup label = 20200526-001828F_20200526-001854D
P00 INFO: backup command end: completed successfully P00 INFO: expire command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo
sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \ --repo1-retention-archive-type=diff --repo1-retention-archive=1 expire
P00 INFO: expire command begin 2.27: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/var/lib/pgbackrest --repo1-retention-archive=1 --repo1-retention-archive-type=diff --repo1-retention-diff=2 --repo1-retention-full=2 --stanza=demo P00 DETAIL: archive retention on backup 20200526-001813F, archiveId = 10-1, start = 000000020000000000000008, stop = 000000020000000000000008 P00 DETAIL: archive retention on backup 20200526-001828F, archiveId = 10-1, start = 00000002000000000000000A, stop = 00000002000000000000000A
P00 DETAIL: archive retention on backup 20200526-001828F_20200526-001849D, archiveId = 10-1, start = 00000002000000000000000E, stop = 00000002000000000000000E
P00 DETAIL: archive retention on backup 20200526-001828F_20200526-001854D, archiveId = 10-1, start = 000000020000000000000011
P00 DETAIL: remove archive: archiveId = 10-1, start = 000000020000000000000009, stop = 000000020000000000000009 P00 DETAIL: remove archive: archiveId = 10-1, start = 00000002000000000000000B, stop = 00000002000000000000000D P00 DETAIL: remove archive: archiveId = 10-1, start = 00000002000000000000000F, stop = 000000020000000000000010
P00 INFO: expire command end: completed successfully
sudo pg_ctlcluster 10 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta \ --log-level-console=detail restore
[filtered 2 lines of output] P00 DETAIL: check '/var/lib/postgresql/10/demo' exists P00 DETAIL: remove 'global/pg_control' so cluster will not start if restore does not complete
P00 INFO: remove invalid files/links/paths from '/var/lib/postgresql/10/demo'
P00 DETAIL: remove invalid file '/var/lib/postgresql/10/demo/backup_label.old' P00 DETAIL: remove invalid file '/var/lib/postgresql/10/demo/base/1/pg_internal.init' [filtered 755 lines of output] P01 DETAIL: restore file /var/lib/postgresql/10/demo/base/12979/PG_VERSION - exists and matches backup (3B, 99%) checksum 4143d3a341877154d6e95211464e1df1015b74bd P01 DETAIL: restore file /var/lib/postgresql/10/demo/base/1/PG_VERSION - exists and matches backup (3B, 99%) checksum 4143d3a341877154d6e95211464e1df1015b74bd
P01 DETAIL: restore file /var/lib/postgresql/10/demo/PG_VERSION - exists and matches backup (3B, 100%) checksum 4143d3a341877154d6e95211464e1df1015b74bd
P01 DETAIL: restore file /var/lib/postgresql/10/demo/global/6100_vm - exists and is zero size (0B, 100%) P01 DETAIL: restore file /var/lib/postgresql/10/demo/global/6100 - exists and is zero size (0B, 100%) [filtered 232 lines of output]
sudo pg_ctlcluster 10 demo start
sudo -u postgres psql -c "create database test1;"
CREATE DATABASE
sudo -u postgres psql -c "create database test2;"
CREATE DATABASE
sudo -u postgres pgbackrest --stanza=demo --type=incr backup
sudo -u postgres psql -c "create table test1_table (id int); \ insert into test1_table (id) values (1);" test1
INSERT 0 1
sudo -u postgres psql -c "create table test2_table (id int); \ insert into test2_table (id) values (2);" test2
INSERT 0 1
sudo -u postgres du -sh /var/lib/postgresql/10/demo/base/24576
7.5M /var/lib/postgresql/10/demo/base/24576
sudo -u postgres pgbackrest --stanza=demo \ --set=20200526-001828F_20200526-001904I info
[filtered 11 lines of output] repository size: 4.4MB, repository backup size: 1.8MB backup reference list: 20200526-001828F, 20200526-001828F_20200526-001854D
database list: postgres (12980), test1 (24576), test2 (24577)
sudo pg_ctlcluster 10 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta \ --db-include=test2 restore
sudo pg_ctlcluster 10 demo start
sudo -u postgres psql -c "select * from test2_table;" test2
id ---- 2 (1 row)
test1, malgré une récupération réussie, n'est pas accessible. Cela est dû au fait que la base de données entière a été restaurée sous forme de fichiers épars et mis à zéro. PostgreSQL peut appliquer des WALs avec succès sur les fichiers mis à zéro mais la base de données dans son ensemble ne sera pas valide car les fichiers clés ne contiennent pas de données. Ceci est destiné à éviter que la base de données soit accidentellement utilisée alors qu'elle pourrait contenir des données partielles qui ont été appliquées lors de la relecture de WAL.
sudo -u postgres psql -c "select * from test1_table;" test1
psql: FATAL: relation mapping file "base/24576/pg_filenode.map" contains invalid data
sudo -u postgres du -sh /var/lib/postgresql/10/demo/base/24576
176K /var/lib/postgresql/10/demo/base/24576
sudo -u postgres psql -c "drop database test1;"
DROP DATABASE
sudo -u postgres psql -c "select oid, datname from pg_database order by oid;"
oid | datname -------+----------- 1 | template1 12979 | template0 12980 | postgres
24577 | test2
(4 rows)
sudo -u postgres pgbackrest --stanza=demo --type=diff backup
sudo -u postgres psql -c "begin; \ create table important_table (message text); \ insert into important_table values ('Important Data'); \ commit; \ select * from important_table;"
message ----------------
Important Data
(1 row)
sudo -u postgres psql -Atc "select current_timestamp"
2020-05-26 00:19:31.244816+00
sudo -u postgres psql -c "begin; \ drop table important_table; \ commit; \ select * from important_table;"
ERROR: relation "important_table" does not exist
LINE 1: ...le important_table; commit; select * from important_... ^
sudo pg_ctlcluster 10 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta \ --type=time "--target=2020-05-26 00:19:31.244816+00" \ --target-action=promote restore
sudo -u postgres cat /var/lib/postgresql/10/demo/recovery.conf
# Recovery settings generated by pgBackRest restore on 2020-05-26 00:19:34 restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"'
recovery_target_time = '2020-05-26 00:19:31.244816+00'
recovery_target_action = 'promote'
sudo pg_ctlcluster 10 demo start
sudo -u postgres psql -c "select * from important_table"
message ----------------
Important Data
(1 row)
sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log
[filtered 2 lines of output] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" LOG: database system was interrupted; last known up at 2020-05-26 00:19:24 UTC
LOG: starting point-in-time recovery to 2020-05-26 00:19:31.244816+00
LOG: restored log file "00000004.history" from archive LOG: restored log file "000000040000000000000016" from archive [filtered 2 lines of output] LOG: database system is ready to accept read only connections LOG: restored log file "000000040000000000000017" from archive
LOG: recovery stopping before commit of transaction 564, time 2020-05-26 00:19:32.883449+00
LOG: redo done at 0/17020A80
LOG: last completed transaction was at log time 2020-05-26 00:19:29.664696+00
LOG: selected new timeline ID: 5 LOG: archive recovery complete [filtered 3 lines of output]
sudo -u postgres psql -c "begin; \ drop table important_table; \ commit; \ select * from important_table;"
ERROR: relation "important_table" does not exist
LINE 1: ...le important_table; commit; select * from important_... ^
sudo -u postgres pgbackrest --stanza=demo --type=incr backup
sudo -u postgres pgbackrest info
stanza: demo status: ok cipher: aes-256-cbc db (current) wal archive min/max (10-1): 000000020000000000000008/000000050000000000000018 full backup: 20200526-001813F timestamp start/stop: 2020-05-26 00:18:13 / 2020-05-26 00:18:26 wal start/stop: 000000020000000000000008 / 000000020000000000000008 database size: 22.5MB, backup size: 22.5MB repository size: 2.7MB, repository backup size: 2.7MB full backup: 20200526-001828F timestamp start/stop: 2020-05-26 00:18:28 / 2020-05-26 00:18:41 wal start/stop: 00000002000000000000000A / 00000002000000000000000A database size: 22.5MB, backup size: 22.5MB repository size: 2.7MB, repository backup size: 2.7MB diff backup: 20200526-001828F_20200526-001854D timestamp start/stop: 2020-05-26 00:18:54 / 2020-05-26 00:18:55 wal start/stop: 000000020000000000000011 / 000000020000000000000011 database size: 22.5MB, backup size: 8.2KB repository size: 2.7MB, repository backup size: 496B backup reference list: 20200526-001828F incr backup: 20200526-001828F_20200526-001904I timestamp start/stop: 2020-05-26 00:19:04 / 2020-05-26 00:19:12 wal start/stop: 000000030000000000000013 / 000000030000000000000013 database size: 37MB, backup size: 15.1MB repository size: 4.4MB, repository backup size: 1.8MB backup reference list: 20200526-001828F, 20200526-001828F_20200526-001854D diff backup: 20200526-001828F_20200526-001923D timestamp start/stop: 2020-05-26 00:19:23 / 2020-05-26 00:19:29 wal start/stop: 000000040000000000000016 / 000000040000000000000016 database size: 29.8MB, backup size: 7.8MB repository size: 3.5MB, repository backup size: 948.7KB backup reference list: 20200526-001828F
incr backup: 20200526-001828F_20200526-001941I
timestamp start/stop: 2020-05-26 00:19:41 / 2020-05-26 00:19:43 wal start/stop: 000000050000000000000018 / 000000050000000000000018 database size: 29.8MB, backup size: 2.1MB repository size: 3.5MB, repository backup size: 218.1KB backup reference list: 20200526-001828F, 20200526-001828F_20200526-001923D
sudo pg_ctlcluster 10 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta \ --set=20200526-001828F_20200526-001941I \ --type=time "--target=2020-05-26 00:19:31.244816+00" --target-action=promote restore
sudo pg_ctlcluster 10 demo start
sudo -u postgres psql -c "select * from important_table"
ERROR: relation "important_table" does not exist
LINE 1: select * from important_table ^
recovery stopping before...(arrêt de la récupération avant...) et
last completed transaction..(dernière transaction effectuée...). S'ils ne sont pas présents, alors la récupération au point spécifié dans le temps n'a pas réussi.
sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log
[filtered 2 lines of output] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" LOG: database system was interrupted; last known up at 2020-05-26 00:19:41 UTC
LOG: starting point-in-time recovery to 2020-05-26 00:19:31.244816+00
LOG: restored log file "00000005.history" from archive LOG: restored log file "000000050000000000000018" from archive LOG: redo starts at 0/18000028
LOG: consistent recovery state reached at 0/180000F8
LOG: database system is ready to accept read only connections LOG: redo done at 0/180000F8 [filtered 8 lines of output]
sudo pg_ctlcluster 10 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta \ --type=time "--target=2020-05-26 00:19:31.244816+00" \ --target-action=promote restore
sudo pg_ctlcluster 10 demo start
sudo -u postgres psql -c "select * from important_table"
message ----------------
Important Data
(1 row)
recovery stopping before...(arrêt de la récupération avant...) et
last completed transaction...(dernière transaction terminée...) indiquant que la récupération a réussi.
sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log
[filtered 2 lines of output] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" LOG: database system was interrupted; last known up at 2020-05-26 00:19:24 UTC
LOG: starting point-in-time recovery to 2020-05-26 00:19:31.244816+00
LOG: restored log file "00000004.history" from archive LOG: restored log file "000000040000000000000016" from archive [filtered 2 lines of output] LOG: database system is ready to accept read only connections LOG: restored log file "000000040000000000000017" from archive
LOG: recovery stopping before commit of transaction 564, time 2020-05-26 00:19:32.883449+00
LOG: redo done at 0/17020A80
LOG: last completed transaction was at log time 2020-05-26 00:19:29.664696+00
LOG: restored log file "00000005.history" from archive LOG: restored log file "00000006.history" from archive [filtered 5 lines of output]
endpointdevront être configurés en fonction de l'endroit où se trouve le conteneur. Les valeurs données ici sont pour la région us-east-1.
bucketdoivent être définies de manière aussi restrictive que possible. Cet exemple de politique Amazon S3 restreindra toutes les lectures et écritures dans la zone de stockage et le chemin du dépôt.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::demo-bucket" ], "Condition": { "StringEquals": { "s3:prefix": [ "", "demo-repo" ], "s3:delimiter": [ "/" ] } } }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "demo-repo/*" ] } } }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::demo-bucket/demo-repo/*" ] } ] }
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
P00 INFO: stanza-create command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo P00 INFO: http statistics: objects 2, sessions 2, requests 12, retries 0, closes 0
P00 INFO: stanza-create command end: completed successfully
sudo -u postgres pgbackrest --stanza=demo \ --log-level-console=info backup
P00 INFO: backup command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=4 --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-retention-diff=2 --repo1-retention-full=2 --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo --start-fast
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 P00 INFO: backup start archive = 000000070000000000000018, lsn = 0/18000028 [filtered 1238 lines of output] P03 INFO: backup file /var/lib/postgresql/10/demo/base/1/12827 (0B, 100%) P04 INFO: backup file /var/lib/postgresql/10/demo/base/1/12817 (0B, 100%)
P00 INFO: full backup size = 29.8MB
P00 INFO: execute non-exclusive pg_stop_backup() and wait for all WAL segments to archive P00 INFO: backup stop archive = 000000070000000000000018, lsn = 0/180000F8 [filtered 6 lines of output]
sudo pg_ctlcluster 10 demo stop
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stop
P00 INFO: stop command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo
P00 INFO: stop command end: completed successfully
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-delete
P00 INFO: stanza-delete command begin 2.27: --log-level-console=info --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-cipher-pass=--repo1-cipher-type=aes-256-cbc --repo1-path=/demo-repo --repo1-s3-bucket=demo-bucket --repo1-s3-endpoint=s3.us-east-1.amazonaws.com --repo1-s3-key= --repo1-s3-key-secret= --repo1-s3-region=us-east-1 --repo1-type=s3 --stanza=demo P00 INFO: http statistics: objects 2, sessions 2, requests 14, retries 0, closes 0
P00 INFO: stanza-delete command end: completed successfully
sudo adduser --disabled-password --gecos "" pgbackrest
sudo apt-get install postgresql-client libxml2
sudo scp build:/build/pgbackrest-release-2.27/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest
sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf
sudo mkdir -p /var/lib/pgbackrest
sudo chmod 750 /var/lib/pgbackrest
sudo chown pgbackrest:pgbackrest /var/lib/pgbackrest
sudo -u pgbackrest mkdir -m 750 /home/pgbackrest/.ssh
sudo -u pgbackrest ssh-keygen -f /home/pgbackrest/.ssh/id_rsa \ -t rsa -b 4096 -N ""
sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \ -t rsa -b 4096 -N ""
(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \ echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \ sudo ssh root@pg-primary cat /var/lib/postgresql/.ssh/id_rsa.pub) | \ sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys
(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \ echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \ sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \ sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys
sudo -u pgbackrest ssh postgres@pg-primary
sudo -u postgres ssh pgbackrest@repository
sudo -u pgbackrest pgbackrest --stanza=demo stanza-create
sudo -u postgres pgbackrest --stanza=demo check
sudo -u pgbackrest pgbackrest --stanza=demo check
sudo -u pgbackrest pgbackrest --stanza=demo backup
P00 WARN: no prior backup exists, incr backup has been changed to full
sudo pg_ctlcluster 10 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta restore
sudo pg_ctlcluster 10 demo start
sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup
sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup
sudo -u pgbackrest pgbackrest info
stanza: demo status: ok cipher: none db (current) wal archive min/max (10-1): 00000008000000000000001D/00000008000000000000001E full backup: 20200526-002056F
timestamp start/stop: 2020-05-26 00:20:56 / 2020-05-26 00:21:13
wal start/stop: 00000008000000000000001D / 00000008000000000000001D database size: 29.8MB, backup size: 29.8MB repository size: 3.5MB, repository backup size: 3.5MB full backup: 20200526-002115F
timestamp start/stop: 2020-05-26 00:21:15 / 2020-05-26 00:21:22
wal start/stop: 00000008000000000000001E / 00000008000000000000001E database size: 29.8MB, backup size: 29.8MB repository size: 3.5MB, repository backup size: 3.5MB
sudo -u postgres pgbackrest stop
sudo -u pgbackrest pgbackrest --stanza=demo backup
P00 WARN: unable to check pg-1: [StopError] raised from remote-0 protocol on 'pg-primary': stop file exists for all stanzas
P00 ERROR: [056]: unable to find primary cluster - cannot proceed
sudo -u postgres pgbackrest stop
P00 WARN: stop file already exists for all stanzas
sudo -u postgres pgbackrest start
sudo -u postgres pgbackrest --stanza=demo stop
sudo -u pgbackrest pgbackrest --stanza=demo backup
P00 WARN: unable to check pg-1: [StopError] raised from remote-0 protocol on 'pg-primary': stop file exists for stanza demo
P00 ERROR: [056]: unable to find primary cluster - cannot proceed
sudo -u postgres pgbackrest --stanza=demo start
sudo apt-get install postgresql-client libxml2
sudo scp build:/build/pgbackrest-release-2.27/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest
sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa \ -t rsa -b 4096 -N ""
(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \ echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \ sudo ssh root@pg-standby cat /var/lib/postgresql/.ssh/id_rsa.pub) | \ sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys
(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' && \ echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' && \ sudo ssh root@repository cat /home/pgbackrest/.ssh/id_rsa.pub) | \ sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys
sudo -u pgbackrest ssh postgres@pg-standby
sudo -u postgres ssh pgbackrest@repository
hot standbyeffectue la réplication en utilisant l'archive WAL et permet des requêtes en lecture seule.
sudo pg_createcluster 10 demo
sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore
sudo -u postgres cat /var/lib/postgresql/10/demo/recovery.conf
# Recovery settings generated by pgBackRest restore on 2020-05-26 00:21:50 restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"' standby_mode = 'on'
sudo pg_ctlcluster 10 demo start
sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log
[filtered 3 lines of output] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" LOG: database system was interrupted; last known up at 2020-05-26 00:21:15 UTC
LOG: entering standby mode
LOG: restored log file "00000008.history" from archive LOG: restored log file "00000008000000000000001E" from archive LOG: redo starts at 0/1E000028 LOG: consistent recovery state reached at 0/1E000130
LOG: database system is ready to accept read only connections
LOG: incomplete startup packet
sudo -u postgres psql -c " \ begin; \ create table replicated_table (message text); \ insert into replicated_table values ('Important Data'); \ commit; \ select * from replicated_table";
message ----------------
Important Data
(1 row)
sudo -u postgres psql -c "select * from replicated_table;"
ERROR: relation "replicated_table" does not exist
LINE 1: select * from replicated_table; ^
sudo -u postgres psql -c "select *, current_timestamp from pg_switch_wal()";
pg_switch_wal | current_timestamp ---------------+------------------------------- 0/1F02ABF8 | 2020-05-26 00:21:58.568809+00 (1 row)
sudo -u postgres psql -c " \ select *, current_timestamp from replicated_table"
message | current_timestamp ----------------+-------------------------------
Important Data | 2020-05-26 00:22:03.551304+00
(1 row)
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
P00 INFO: check command begin 2.27: --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-host=repository --stanza=demo
P00 INFO: switch wal not performed because this is a standby
P00 INFO: check command end: completed successfully
sudo -u postgres psql -c " \ create user replicator password 'jw8s0F4' replication";
CREATE ROLE
sudo -u postgres sh -c 'echo \ "host replication replicator 172.17.0.6/32 md5" \ >> /etc/postgresql/10/demo/pg_hba.conf'
sudo pg_ctlcluster 10 demo reload
sudo -u postgres sh -c 'echo \ "172.17.0.4:*:replication:replicator:jw8s0F4" \ >> /var/lib/postgresql/.pgpass'
sudo -u postgres chmod 600 /var/lib/postgresql/.pgpass
sudo pg_ctlcluster 10 demo stop
sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore
sudo -u postgres cat /var/lib/postgresql/10/demo/recovery.conf
# Recovery settings generated by pgBackRest restore on 2020-05-26 00:22:08 primary_conninfo = 'host=172.17.0.4 port=5432 user=replicator' restore_command = 'pgbackrest --stanza=demo archive-get %f "%p"' standby_mode = 'on'
sudo pg_ctlcluster 10 demo start
sudo -u postgres cat /var/log/postgresql/postgresql-10-demo.log
[filtered 11 lines of output] LOG: restored log file "00000008000000000000001F" from archive LOG: incomplete startup packet
LOG: started streaming WAL from primary at 0/20000000 on timeline 8
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";
message | current_timestamp ----------------+-------------------------------
Important Data | 2020-05-26 00:22:15.468818+00
(1 row)
sudo -u postgres psql -c " \ select *, current_timestamp from stream_table"
message | current_timestamp ----------------+-------------------------------
Important Data | 2020-05-26 00:22:16.016248+00
(1 row)
sudo mkdir -p -m 750 /var/spool/pgbackrest
sudo chown postgres:postgres /var/spool/pgbackrest
sudo mkdir -p -m 750 /var/spool/pgbackrest
sudo chown postgres:postgres /var/spool/pgbackrest
sudo -u postgres psql -c "alter user replicator password 'bogus'"
ALTER ROLE
sudo pg_ctlcluster 10 demo restart
en regardant vers l'avenirpour voir quels segments WAL sont prêts à être archivés au-delà de la demande que PostgreSQL fait actuellement via la commande archive_command. Les segments WAL sont transférés vers archivage directement depuis le répertoire pg_xlog/pg_wal et le retour de succès n'est renvoyé par l' archive_command que lorsque le segment WAL est réelement stocké en toute sécurité dans l'archivage.
sudo -u postgres psql -c " \ select pg_create_restore_point('test async push'); select pg_switch_wal(); \ select pg_create_restore_point('test async push'); select pg_switch_wal(); \ select pg_create_restore_point('test async push'); select pg_switch_wal(); \ select pg_create_restore_point('test async push'); select pg_switch_wal(); \ select pg_create_restore_point('test async push'); select pg_switch_wal();"
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
P00 INFO: check command begin 2.27: --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --repo1-host=repository --stanza=demo
P00 INFO: WAL segment 000000080000000000000025 successfully archived to '/var/lib/pgbackrest/archive/demo/10-1/0000000800000000/000000080000000000000025-ee8159736996d216d36a736baa9a79804845e750.gz'
P00 INFO: check command end: completed successfully
sudo -u postgres cat /var/log/pgbackrest/demo-archive-push-async.log
-------------------PROCESS START------------------- P00 INFO: archive-push:async command begin 2.27: [/var/lib/postgresql/10/demo/pg_wal] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo
P00 INFO: push 1 WAL file(s) to archive: 000000080000000000000020 P01 DETAIL: pushed WAL file '000000080000000000000020' to the archive
P00 INFO: archive-push:async command end: completed successfully -------------------PROCESS START------------------- P00 INFO: archive-push:async command begin 2.27: [/var/lib/postgresql/10/demo/pg_wal] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo
P00 INFO: push 4 WAL file(s) to archive: 000000080000000000000021...000000080000000000000024 P01 DETAIL: pushed WAL file '000000080000000000000021' to the archive P02 DETAIL: pushed WAL file '000000080000000000000022' to the archive P01 DETAIL: pushed WAL file '000000080000000000000023' to the archive P02 DETAIL: pushed WAL file '000000080000000000000024' to the archive
P00 INFO: archive-push:async command end: completed successfully -------------------PROCESS START------------------- P00 INFO: archive-push:async command begin 2.27: [/var/lib/postgresql/10/demo/pg_wal] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo
P00 INFO: push 1 WAL file(s) to archive: 000000080000000000000025 P01 DETAIL: pushed WAL file '000000080000000000000025' to the archive
P00 INFO: archive-push:async command end: completed successfully
sudo -u postgres cat /var/log/pgbackrest/demo-archive-get-async.log
-------------------PROCESS START------------------- P00 INFO: archive-get:async command begin 2.27: [00000008000000000000001E, 00000008000000000000001F, 000000080000000000000020, 000000080000000000000021, 000000080000000000000022, 000000080000000000000023, 000000080000000000000024, 000000080000000000000025] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo P00 INFO: get 8 WAL file(s) from archive: 00000008000000000000001E...000000080000000000000025
P01 DETAIL: found 00000008000000000000001E in the archive P02 DETAIL: found 00000008000000000000001F in the archive
P01 DETAIL: unable to find 000000080000000000000020 in the archive P02 DETAIL: unable to find 000000080000000000000021 in the archive [filtered 20 lines of output] P00 INFO: archive-get:async command begin 2.27: [000000080000000000000020, 000000080000000000000021, 000000080000000000000022, 000000080000000000000023, 000000080000000000000024, 000000080000000000000025, 000000080000000000000026, 000000080000000000000027] --archive-async --log-level-console=off --log-level-file=detail --log-level-stderr=off --no-log-timestamp --pg1-path=/var/lib/postgresql/10/demo --process-max=2 --repo1-host=repository --spool-path=/var/spool/pgbackrest --stanza=demo P00 INFO: get 8 WAL file(s) from archive: 000000080000000000000020...000000080000000000000027
P01 DETAIL: found 000000080000000000000020 in the archive P02 DETAIL: found 000000080000000000000021 in the archive P01 DETAIL: found 000000080000000000000022 in the archive P02 DETAIL: found 000000080000000000000023 in the archive
P02 DETAIL: unable to find 000000080000000000000025 in the archive P02 DETAIL: unable to find 000000080000000000000026 in the archive P02 DETAIL: unable to find 000000080000000000000027 in the archive
P01 DETAIL: found 000000080000000000000024 in the archive
P00 INFO: archive-get:async command end: completed successfully [filtered 8 lines of output] P02 DETAIL: unable to find 00000008000000000000002B in the archive P02 DETAIL: unable to find 00000008000000000000002C in the archive
P01 DETAIL: found 000000080000000000000025 in the archive
P00 INFO: archive-get:async command end: completed successfully
sudo -u postgres psql -c "alter user replicator password 'jw8s0F4'"
ALTER ROLE
sudo -u pgbackrest pgbackrest --stanza=demo --log-level-console=detail backup
[filtered 2 lines of output] P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the requested immediate checkpoint completes P00 INFO: backup start archive = 000000080000000000000027, lsn = 0/27000028
P00 INFO: wait for replay on the standby to reach 0/27000028 P00 INFO: replay on the standby reached 0/27000028
P03 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/1249 (392KB, 17%) checksum fc14d2d8c4f576b165b1a5efc3b8e04baa461960 P02 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2608 (440KB, 36%) checksum 23f25ba1c0443cb54da86aa8d32d4649c2bdbb30 [filtered 10 lines of output] P04 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2610 (32KB, 89%) checksum 85827e08f2e389b58c351bf439a5cd7a7f66af4c P03 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2610_fsm (24KB, 90%) checksum 3cd92093fa77b32dc52a3006591bbf1956744830
P01 INFO: backup file pg-primary:/var/lib/postgresql/10/demo/global/pg_control (8KB, 91%) checksum 888db6cbaf077f9dc8d86e786df7192e14cc61af
P02 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2608_fsm (24KB, 92%) checksum f65c3ce590879dc6e62ab2be8a95bc3f2687eaf7 P04 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/1249_fsm (24KB, 93%) checksum d57bfa9b0fc456b1c0c99cfb0f2e3f35da083a88 P03 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/global/2677 (16KB, 94%) checksum 8dcb6419b0168ead5ee45af5c10b4bf7052a8327
P01 INFO: backup file pg-primary:/var/lib/postgresql/10/demo/pg_logical/replorigin_checkpoint (8B, 94%) checksum 347fc8f2df71bd4436e38bd1516ccd7ea0d46532
P02 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/global/2676 (16KB, 94%) checksum 8c43b660f01c2f48cdf53176989f3c2376ee5e7a P04 INFO: backup file pg-standby:/var/lib/postgresql/10/demo/base/12980/2703 (16KB, 95%) checksum 71663782627811bd502e8a4b17200f3d2c6fac0d [filtered 1235 lines of output]
sudo pg_ctlcluster 10 demo stop
sudo pg_ctlcluster 10 demo stop
sudo -u postgres /usr/lib/postgresql/11/bin/initdb \ -D /var/lib/postgresql/11/demo -k -A peer
sudo pg_createcluster 11 demo
sudo -u postgres sh -c 'cd /var/lib/postgresql && \ /usr/lib/postgresql/11/bin/pg_upgrade \ --old-bindir=/usr/lib/postgresql/10/bin \ --new-bindir=/usr/lib/postgresql/11/bin \ --old-datadir=/var/lib/postgresql/10/demo \ --new-datadir=/var/lib/postgresql/11/demo \ --old-options=" -c config_file=/etc/postgresql/10/demo/postgresql.conf" \ --new-options=" -c config_file=/etc/postgresql/11/demo/postgresql.conf"'
[filtered 68 lines of output] Creating script to delete old cluster ok
Upgrade Complete
---------------- Optimizer statistics are not transferred by pg_upgrade so, [filtered 4 lines of output]
sudo cp /etc/postgresql/10/demo/pg_hba.conf \ /etc/postgresql/11/demo/pg_hba.conf
sudo -u pgbackrest pgbackrest --stanza=demo --no-online \ --log-level-console=info stanza-upgrade
P00 INFO: stanza-upgrade command begin 2.27: --no-backup-standby --log-level-console=info --log-level-stderr=off --no-log-timestamp --no-online --pg1-host=pg-primary --pg2-host=pg-standby --pg1-path=/var/lib/postgresql/11/demo --pg2-path=/var/lib/postgresql/11/demo --repo1-path=/var/lib/pgbackrest --stanza=demo
P00 INFO: stanza-upgrade command end: completed successfully
sudo pg_ctlcluster 11 demo start
sudo -u postgres pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file 10 demo 5432 down postgres /var/lib/postgresql/10/demo /var/log/postgresql/postgresql-10-demo.log 11 demo 5432 online postgres /var/lib/postgresql/11/demo /var/log/postgresql/postgresql-11-demo.log
sudo -u postgres pgbackrest --stanza=demo check
sudo pg_dropcluster 10 demo
sudo pg_dropcluster 10 demo
sudo pg_createcluster 11 demo
sudo -u pgbackrest pgbackrest --stanza=demo check
P00 WARN: unable to check pg-2: [DbConnectError] raised from remote-0 protocol on 'pg-standby': unable to connect to 'dbname='postgres' port=5432': could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
sudo -u pgbackrest pgbackrest --stanza=demo --type=full backup
sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore
sudo pg_ctlcluster 11 demo start
sudo -u postgres pgbackrest --stanza=demo check