-- utilisateur postgres, une activite existe dans une table temoin avec une ligne inseree par seconde
\set AUTOCOMMIT on
create schema postgres;
CREATE SCHEMA
create table temoin(col timestamp primary key);
CREATE TABLE
insert into temoin values(clock_timestamp());
INSERT 0 1
\watch 1
-- utilisateur root, creation d'un cluster dont nous aller garder la structure generale mais pas les donnees
pg_createcluster -p 5433 --start-conf auto 11 apptra002 -- --data-checksums
rm -fr /var/lib/postgresql/11/apptra002/*
-- utilisateur postgres, le cluster d'origine a-t-il des tablespaces ?
psql -p 5432
\db
Liste des tablespaces
Nom | Propriétaire | Emplacement
------------+--------------+----------------------------------
pg_default | postgres |
pg_global | postgres |
temp | postgres | /var/tmp/postgresql/11/apptra001 -- presence d'un tablespace "temp"...
-- utilisateur postgres, restauration du cluster par PITR en indiquant la destination generale via db_path et l'emplacement du tablespace temp via tablespace_map
select max(col) from temoin;
max
----------------------------
2019-07-29 15:01:42.491732
select pg_switch_wal();
pg_switch_wal
---------------
0/C00F0C8
mkdir -p /var/tmp/postgresql/11/apptra002
chmod 700 /var/tmp/postgresql/11/apptra002
pgbackrest --type=time "--target=2019-07-29 15:00:00" --log-level-console=info --stanza=apptra001 --db-path=/var/lib/postgresql/11/apptra002 --tablespace-map=temp=/var/tmp/postgresql/11/apptra002 restore
-- utilisateur postgres, on regarde le contenu de recovery.conf
cat /var/lib/postgresql/11/apptra002/recovery.conf
restore_command = 'pgbackrest --log-level-console=info --pg1-path=/var/lib/postgresql/11/apptra002 --stanza=apptra001 archive-get %f "%p"'
recovery_target_time = '2019-07-29 15:00:00'
-- utilisateur postgres, suppression ou mise en commentaire de l'archivage des WAL depuis le cluster clone vers la stanza apptra001 (important !)
vi /var/lib/postgresql/11/apptra002/postgresql.auto.conf
#archive_mode='on'
#archive_command = 'pgbackrest --stanza=apptra001 archive-push %p'
#archive_timeout = 600
-- utilisateur root, demarrage du cluster
pg_ctlcluster 11 apptra002 start
-- utilisateur postgres, on regarde le fichier de log du cluster et on interroge la table temoin
tail -50 /var/log/postgresql/postgresql-11-apptra002.log
...
2019-07-29 15:20:21.407 P00 INFO: found 00000001000000000000000A in the archive
2019-07-29 15:20:21.407 P00 INFO: archive-get command end: completed successfully (87ms)
2019-07-29 15:20:21.409 CEST [1875] LOG: restauration du journal de transactions « 00000001000000000000000A » à partir de l'archive
2019-07-29 15:20:21.745 P00 INFO: archive-get command begin 2.10: [00000001000000000000000B, pg_wal/RECOVERYXLOG] --log-level-console=info --pg1-path=/var/lib/postgresql/11/apptra002 --repo1-path=/var/lib/pgbackrest --stanza=apptra001
2019-07-29 15:20:21.831 P00 INFO: found 00000001000000000000000B in the archive
2019-07-29 15:20:21.832 P00 INFO: archive-get command end: completed successfully (87ms)
2019-07-29 15:20:21.833 CEST [1875] LOG: restauration du journal de transactions « 00000001000000000000000B » à partir de l'archive
2019-07-29 15:20:21.913 CEST [1875] LOG: arrêt de la restauration avant validation de la transaction 2140, 2019-07-29 15:00:00.244646+02
2019-07-29 15:20:21.913 CEST [1875] LOG: restauration en pause
2019-07-29 15:20:21.913 CEST [1875] ASTUCE : Exécuter pg_wal_replay_resume() pour continuer.
-- utilisateur postgres, on interroge le cluster clone (parametres, tablespaces, table temoin) et on arrete la session de recover
psql -p 5433
show all;
...
archive_command | (disabled) | Sets the shell command that will be called to archive a WAL file.
archive_mode | off | Allows archiving of WAL files using archive_command.
archive_timeout | 0 | Forces a switch to the next WAL file if a new file has not been started within N seconds.
...
\db
Liste des tablespaces
Nom | Propriétaire | Emplacement
------------+--------------+----------------------------------
pg_default | postgres |
pg_global | postgres |
temp | postgres | /var/tmp/postgresql/11/apptra002
select max(col) from temoin;
max
----------------------------
2019-07-29 14:59:59.242361
select pg_wal_replay_resume();
pg_wal_replay_resume
----------------------
(1 ligne)
-- utilisateur root
pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
11 apptra001 5432 online postgres /var/lib/postgresql/11/apptra001 /var/log/postgresql/postgresql-11-apptra001.log
11 apptra002 5433 online postgres /var/lib/postgresql/11/apptra002 /var/log/postgresql/postgresql-11-apptra002.log