[1] https://postgrespro.com/docs/enterprise/13/app-pgprobackup
- PITR依赖continuous WAL archiving:
Making backups in PAGE backup mode, performing PITR and making backups with ARCHIVE WAL delivery mode require continuous WAL archiving to be enabled.
You can use both STREAM and ARCHIVE backups for point in time recovery as long as the WAL archive is available at least starting from the time the backup was taken.
- PTRACK增量备份模式,及incremental restore,要求initdb时
--data-checksums
. - todo stream,archive有什么区别
初始化
pg_probackup init -B $HOME/probackup
pg_probackup add-instance -B $HOME/probackup -D $HOME/pgdata2 --instance pg5433
archive_mode = on
archive_command = '"$HOME/.local/pgsql/bin/pg_probackup" archive-push -B "$HOME/probackup" --instance pg5433 --wal-file-name=%f'
# pg_ctl start
全量,及PAGE增量备份
pg_probackup backup -B $HOME/probackup --instance pg5433 -b FULL -p 5433 -d postgres
pg_probackup backup -B $HOME/probackup --instance pg5433 -b PAGE -p 5433 -d postgres
pg_probackup backup -B $HOME/probackup --instance pg5433 -b PAGE -p 5433 -d postgres --log-level-file=info
# --log-level-file默认off,打开后默认记录在-B/log
pg_probackup show -B $HOME/probackup
BACKUP INSTANCE 'pg5433'
=================================================================================================================================
Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
=================================================================================================================================
pg5433 13 R2RP9H 2021-11-18 20:27:17+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/8000028 0/90000B8 OK
pg5433 13 R2RP38 2021-11-18 20:23:32+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/5000028 0/60000F0 OK
pg5433 13 R2RP1U 2021-11-18 20:22:44+08 FULL ARCHIVE 1/0 6s 23MB 16MB 1.00 0/2000028 0/30000F0 OK
pg_probackup show -B $HOME/probackup --instance pg5433
pg_probackup show -B $HOME/probackup --archive
删除不需要的备份数据
pg_probackup delete -B $HOME/probackup --instance pg5433 --delete-expired
pg_probackup delete -B $HOME/probackup --instance pg5433 --delete-wal
pg_probackup delete -B $HOME/probackup --instance pg5433 --status=ERROR
恢复
pg_probackup validate -B $HOME/probackup --instance pg5433
pg_probackup restore -B $HOME/probackup --instance pg5433 -D $HOME/pgdata2-restored
pg_probackup validate -B $HOME/probackup --instance pg5433 --recovery-target-time="2021-11-18 20:15:32+08"
# => ERROR: Backup satisfying target options is not found.
pg_probackup validate -B $HOME/probackup --instance pg5433 --recovery-target-time="2021-11-18 20:23:32+08"
pg_probackup validate -B $HOME/probackup --instance pg5433 --recovery-target-time="2021-11-18 20:25:32+08"
# => INFO: Backup validation completed successfully on time 2021-11-18 20:23:32+08, xid 485 and LSN 0/60000F0
pg_probackup validate -B $HOME/probackup --instance pg5433 --recovery-target-time="2021-11-18 20:35:32+08"
# => WARNING: Thread [1]: Could not read WAL record at 0/A000000
# ERROR: Thread [1]: WAL segment "/home/fang/probackup/wal/pg5433/00000001000000000000000A" is absent
# WARNING: Recovery can be done up to time 2021-11-18 20:27:17+08, xid 485 and LSN 0/90000B8
# ERROR: Not enough WAL records to time 2021-11-18 20:35:32+08
pg_probackup restore -B $HOME/probackup --instance pg5433 -D $HOME/pgdata2-restored2 --recovery-target-time="2021-11-18 20:23:32+08"
DELTA增量备份
pg_probackup backup -B $HOME/probackup --instance pg5433 -b DELTA -p 5433 -d postgres --log-level-file=info
PTRACK增量备份,要求--data-checksums
pg_probackup backup -B $HOME/probackup --instance pg5433 -b PTRACK -p 5433 -d postgres --log-level-file=info
# WARNING: This PostgreSQL instance was initialized without data block checksums. pg_probackup have no way to detect data block corruption without them. Reinitialize PGDATA with option '--data-checksums'.
# WARNING: Current PostgreSQL role is superuser. It is not recommended to run pg_probackup under superuser.
# ERROR: This PostgreSQL instance does not support ptrack
# WARNING: Backup R2TMDU is running, setting its status to ERROR
pg_probackup show -B $HOME/probackup
BACKUP INSTANCE 'pg5433'
=====================================================================================================================================
Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
=====================================================================================================================================
pg5433 13 R2TMDU ---- PTRACK ARCHIVE 0/0 0 0 0 1.00 0/0 0/0 ERROR
pg5433 13 R2TMDK 2021-11-19 21:20:08+08 DELTA ARCHIVE 1/1 1s 106kB 16MB 1.00 0/11000028 0/120000B8 OK
pg5433 13 R2SQBU 2021-11-19 09:47:54+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/E000028 0/F0000B8 OK
pg5433 13 R2SQAS 2021-11-19 09:47:16+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/B000028 0/C0000B8 OK
pg5433 13 R2RP9H 2021-11-18 20:27:17+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/8000028 0/90000B8 OK
pg5433 13 R2RP38 2021-11-18 20:23:32+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/5000028 0/60000F0 OK
pg5433 13 R2RP1U 2021-11-18 20:22:44+08 FULL ARCHIVE 1/0 6s 23MB 16MB 1.00 0/2000028 0/30000F0 OK
在有交易时增量备份
pgbench -i -s 10 postgres
pgbench -c 2 -T 100 -R 100 postgres
pg_probackup backup -B $HOME/probackup --instance pg5433 -b PAGE -p 5433 -d postgres --log-level-file=info
pg_probackup backup -B $HOME/probackup --instance pg5433 -b DELTA -p 5433 -d postgres --log-level-file=info
pg_probackup show -B $HOME/probackup
BACKUP INSTANCE 'pg5433'
====================================================================================================================================
Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
====================================================================================================================================
pg5433 13 R2TMOZ 2021-11-19 21:26:59+08 DELTA ARCHIVE 1/1 1s 106kB 16MB 1.00 0/29000028 0/2A0000B8 OK
pg5433 13 R2TMOI 2021-11-19 21:26:42+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/27000028 0/280000B8 OK
pg5433 13 R2TMO9 2021-11-19 21:26:34+08 DELTA ARCHIVE 1/1 2s 106kB 16MB 1.00 0/24000028 0/250000B8 OK
pg5433 13 R2TMO0 2021-11-19 21:26:24+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/22000028 0/230000B8 OK
pg5433 13 R2TMNR 2021-11-19 21:26:16+08 DELTA ARCHIVE 1/1 2s 106kB 16MB 1.00 0/1F000028 0/200000B8 OK
pg5433 13 R2TMNH 2021-11-19 21:26:05+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/1D000028 0/1E0000B8 OK
pg5433 13 R2TMNA 2021-11-19 21:25:58+08 DELTA ARCHIVE 1/1 1s 106kB 16MB 1.00 0/1B000028 0/1C0000F0 OK
pg5433 13 R2TMN1 2021-11-19 21:25:50+08 PAGE ARCHIVE 1/1 2s 106kB 16MB 1.00 0/19000028 0/1A0000B8 OK
pg5433 13 R2TMMR 2021-11-19 21:25:39+08 DELTA ARCHIVE 1/1 1s 106kB 16MB 1.00 0/17000028 0/180000B8 OK
pg5433 13 R2TMM7 2021-11-19 21:25:20+08 PAGE ARCHIVE 1/1 2s 106kB 16MB 1.00 0/14000028 0/150000B8 OK
pg5433 13 R2TMDK 2021-11-19 21:20:08+08 DELTA ARCHIVE 1/1 1s 106kB 16MB 1.00 0/11000028 0/120000B8 OK
pg5433 13 R2SQBU 2021-11-19 09:47:54+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/E000028 0/F0000B8 OK
pg5433 13 R2SQAS 2021-11-19 09:47:16+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/B000028 0/C0000B8 OK
pg5433 13 R2RP9H 2021-11-18 20:27:17+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/8000028 0/90000B8 OK
pg5433 13 R2RP38 2021-11-18 20:23:32+08 PAGE ARCHIVE 1/1 1s 106kB 16MB 1.00 0/5000028 0/60000F0 OK
pg5433 13 R2RP1U 2021-11-18 20:22:44+08 FULL ARCHIVE 1/0 6s 23MB 16MB 1.00 0/2000028 0/30000F0 OK
pg_probackup validate -B $HOME/probackup --instance pg5433 --recovery-target-time="2021-11-19 21:26:32+08"
pg_probackup validate -B $HOME/probackup --instance pg5433 --recovery-target-time="2021-11-19 21:26:52+08"
增量恢复,两种模式(checksum,lsn)都需要--data-checksums
pg_probackup restore -B $HOME/probackup --instance pg5433 -D $HOME/pgdata2 -I lsn
pg_probackup restore -B $HOME/probackup --instance pg5433 -D $HOME/pgdata2 -I lsn
# INFO: Running incremental restore into nonempty directory: "/home/fang/pgdata2"
# WARNING: Postmaster with pid 1405 is running in destination directory "/home/fang/pgdata2"
# INFO: Trying to read pg_control file in destination directory
# ERROR: Incremental restore is not allowed
pg_ctl -D ~/pgdata2 -l ~/repos/postgres/logfile2 stop
# waiting for server to shut down.... done
# server stopped
pg_probackup restore -B $HOME/probackup --instance pg5433 -D $HOME/pgdata2 -I lsn
# INFO: Running incremental restore into nonempty directory: "/home/fang/pgdata2"
# INFO: Trying to read pg_control file in destination directory
# ERROR: Incremental restore in 'lsn' mode require data_checksums to be enabled in destination data directory