os: centos 7.4
db: postgresql 9.6
pg_probackup: 2.1.5
pg_probackup 是 postgres pro 一款优秀的备份还原工具,目前兼容 PostgreSQL 9.5, 9.6, 10, 11;
# su - postgres
$ pg_probackup show-config -B /var/lib/pgsql/pgbackup --instance test1
$ pg_probackup backup -B /var/lib/pgsql/pgbackup --instance test1 -b FULL
Where backup_mode(-b) can take one of the following values:
FULL — creates a full backup that contains all the data files of the cluster to be restored.
DELTA — reads all data files in the data directory and creates an incremental backup for pages that have changed since the previous backup.
PAGE — creates an incremental PAGE backup based on the WAL files that have generated since the previous full or incremental backup was taken. Only changed blocks are readed from data files.
PTRACK — creates an incremental PTRACK backup tracking page changes on the fly.
Install extension amcheck or amcheck_next in every database of the cluster:
amcheck
amcheck_next
extension amcheck 参考 https://github.com/petergeoghegan/amcheck
# su - postgres
$ psql
postgres=# CREATE EXTENSION amcheck;
To perform logical verification the following permissions are required in every database of the cluster:
# su - postgres
$ psql
postgres=# GRANT SELECT ON TABLE pg_catalog.pg_am TO backup;
GRANT SELECT ON TABLE pg_catalog.pg_class TO backup;
GRANT SELECT ON TABLE pg_catalog.pg_database TO backup;
GRANT SELECT ON TABLE pg_catalog.pg_namespace TO backup;
GRANT SELECT ON TABLE pg_catalog.pg_extension TO backup;
GRANT EXECUTE ON FUNCTION bt_index_check(oid) TO backup;
GRANT EXECUTE ON FUNCTION bt_index_check(oid, bool) TO backup;
$ pg_probackup checkdb -B /var/lib/pgsql/pgbackup --instance test1 -D /var/lib/pgsql/9.6/data
$ pg_probackup checkdb -D /var/lib/pgsql/9.6/data --amcheck
# su - postgres
$ pg_probackup backup -B /var/lib/pgsql/pgbackup --instance test1 -b FULL
$ pg_probackup backup -B /var/lib/pgsql/pgbackup --instance test1 -b PAGE
$ pg_probackup show -B /var/lib/pgsql/pgbackup
BACKUP INSTANCE 'test1'
=================================================================================================================================
Instance Version ID Recovery Time Mode WAL Current/Parent TLI Time Data Start LSN Stop LSN Status
=================================================================================================================================
test1 9.6 PYZWER 2019-10-07 16:18:31+08 PAGE ARCHIVE 1 / 0 6s 299kB 0/D000028 0/E0000B8 OK
test1 9.6 PYZVTI 2019-10-07 16:05:46+08 FULL ARCHIVE 1 / 0 6s 22MB 0/A000060 0/A001F30 OK
PAGE 比 FULL 要小很多很多
# su - postgres
$ pg_probackup validate -B /var/lib/pgsql/pgbackup
$ pg_probackup validate -B /var/lib/pgsql/pgbackup --instance test1 --recovery-target-time='2019-10-07 16:09:11+08'
参考:
https://github.com/postgrespro/pg_probackup
https://postgrespro.com/products/extensions/pg_probackup
https://github.com/postgrespro/pg_probackup/blob/master/Documentation.md
https://postgrespro.github.io/pg_probackup/
https://postgrespro.com/docs/postgrespro/9.6/app-pgprobackup