
增量备份。页级别的增量备份,节省磁盘空间,加速备份和转储。有3种不同增量模式,根据数据流部署不同备份策略。
增量转储。页级别的转储,在目标目录中重用有效未更改的页面来加速转储。
合并。帮助部署”incrementally updated backups”策略,无须进行完备备份。
验证。自动数据一致性校验和按需备份校验,无须实际数据恢复。
校验。使用checkdb命令按需验证PG实例。
保留。根据保留策略管理存档和备份。可以根据恢复实际或要保留的备份数配置保留策略。还可以为特定备份制定生存时间,过期的备份可以合并或者删除。
并行化。在多个并行线程上进行备份、恢复、合并、删除、验证和检验。
压缩。以压缩状态存储备份数据以节省磁盘空间。
消除重复数据。通过不复制未更改的非数据文件如_vm或者_fsm来节省磁盘空间。
远程操作。备份位于远程系统上的PG实例或远程恢复备份。
从备机上进行备份。通过从备机上进行备份来避免主机上的额外负载。
外部目录。备份位于数据目录PGDATA之外的文件和目录,如脚本、配置文件、日志或SQL转储文件。
备份Catalog。以纯文本或JSON格式获取备份列表和相应的元信息。
归档catalog。以纯文本或JSON格式获取所有WAL时间线和相应元信息的列表。
部分还原。仅还原制定的数据库或从转储中排出指定数据库。
全量备份,包含从头恢复数据库集群需要的所有数据文件。
增量备份。只存储自上次以来更改的数据。允许减小备份大小并加快备份操作。支持以下增量备份模式:
PAGE备份。扫描自上次备份以来归档的所有WAL文件。新创建的备份仅包含WAL记录到的页面。如果这些文件大小与数据库集群文件总大小相当,则加速比较小,但备份占用空间仍然较小。
DELTA备份。读取PGDATA目录下所有数据文件,仅拷贝自上次备份以来的脏页。无须持续归档。此外,该模式还可以施加与全量备份相同的只读IO压力。
PTRACK备份。会动态追踪页面改动。无须持续归档。每次更新数据页时,都会在PTRACK位图标记。由于一个页面只需要PTRACK位图中的一个bit,这个位图非常小。跟踪意味着会有开销,但会显著加速增量备份。
自主备份,通过复制协议传输将集群恢复到备份时的一致性状态需要的所有WAL文件。即使没有设置连续归档,需要的WAL段也会包含在备份中。
归档备份,依赖于连续归档。
wget https://github.com/postgrespro/pg_probackup/archive/2.4.15.tar.gztar -zxvf 2.4.15.tar.gz cd pg_probackup-2.2.7/make USE_PGXS=1 PG_CONFIG=/data/postgresql/bin/pg_config top_srcdir=/home/postgres/postgresql-13.3make USE_PGXS=1 PG_CONFIG=/data/postgresql/bin/pg_config top_srcdir=/home/postgres/postgresql-13.3 install
pg_probackup init -B backup_dir-- 示例pg_probackup init -B /data/postgres/probackup
pg_probackup add-instance -B backup_dir -D data_dir --instance instance_name [remote_options]-- 本地添加备份instance 示例pg_probackup add-instance -B /data/postgres/probackup -D /data/postgres/data --instance local_6000
For PostgreSQL 10 or higher:$ psql -p 5432 -U postgresBEGIN;CREATE ROLE backup WITH LOGIN REPLICATION;GRANT USAGE ON SCHEMA pg_catalog TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean, boolean) TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup(boolean, boolean) TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.pg_create_restore_point(text) TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;GRANT EXECUTE ON FUNCTION pg_catalog.pg_control_checkpoint() TO backup;COMMIT;
archive_command = 'install_dir/pg_probackup archive-push -B backup_dir --instance instance_name --wal-file-name=%f [remote_options]'-- 示例/opt/pg13/bin/pg_probackup archive-push -B /data/postgres/probackup --instance local_6000 --wal-file-path=%p-- wal-file-name=%f
pg_probackup backup -B backup_dir --instance instance_name -b backup_mode
pg_probackup backup -B /data/postgres/probackup --instance local_6000 -b full
pg_probackup show -B /data/postgres/probackuppg_probackup show -B /data/postgres/probackup --instance local_6000 -i QGQMKHpg_probackup show -B /data/postgres/probackup --instance local_6000 --archive
-- 备份pg_probackup backup -B /data/postgres/probackup --instance local_6000 -b full--恢复之前需要先停库;在清理PGDATA目录以及外在的表空间目录pg_ctl stop;rm -rf $PGDATA/*--恢复到新的PGDATA目录pg_probackup restore -B /data/postgres/probackup --instance local_6000 -D /data/postgres/data6000 --recovery-target-time='2021-07-11 11:05:17' 11:05:17'-- 恢复到原目录pg_probackup restore -B /data/postgres/probackup --instance local_6000 --recovery-target-time='2021-07-11 11:05:17'
-- 增量备份DELTApg_probackup backup -B /data/postgres/probackup --instance local_6000 -b delta-- 增量备份pagepg_probackup backup -B /data/postgres/probackup --instance local_6000 -b page-- https://postgrespro.com/docs/postgrespro/13/app-pgprobackup
--set up sshssh-copy-id postgres@node2--备份库 添加备份实例pg_probackup add-instance -B /data/postgres/probackup -D /data/postgres/data --instance pg207_6000 --remote-proto=ssh --remote-host=192.168.127.126 --remote-port=22 --remote-user=postgres --remote-path=/opt/pg13/bin --ssh-options='-o ServerAliveCountMax=5 -o ServerAliveInterval=60'--案例库 配置的参数--备份需要用到postgres超级用户;所以在pg_hba.conf;host all postgres 192.168.127.129/24 trust -- postgresql.confwal_level = replicaarchive_mode = onarchive_command = '/opt/pg13/bin/pg_probackup archive-push -B /data/postgres/probackup --instance pg207_6000 --wal-file-path=%p --wal-file-name=%f --remote-proto=ssh --remote-host=192.168.127.129 --remote-port=22 --remote-user=postgres --remote-path=/opt/pg12/bin'-- 备份库; 执行远程备份pg_probackup backup -B /data/postgres/probackup --instance pg207_6000 -b full --remote-proto=ssh --remote-host=192.168.127.126 --remote-port=22 --remote-user=postgres --remote-path=/opt/pg12/bin --ssh-options='-o ServerAliveCountMax=5 -o ServerAliveInterval=60'--Take a FULL backup:pg_probackup-11 backup -B /mnt/backups --instance 'pg-11' -b FULL --stream --remote-host=postgres_host --remote-user=postgres -U backup -d backupdb--Take an incremental backup in the DELTA mode:pg_probackup-11 backup -B /mnt/backups --instance 'pg-11' -b delta --stream --remote-host=postgres_host --remote-user=postgres -U backup -d backupdb--pg_probackup-11 set-config -B /mnt/backups --instance 'pg-11' --remote-host=postgres_host --remote-user=postgres -U backup -d backupdbpg_probackup-11 backup -B /mnt/backups --instance 'pg-11' -b delta --stream--pg_probackup-11 show-config -B /mnt/backups --instance 'pg-11'--pg_probackup-11 show -B /mnt/backups --instance 'pg-11'-- 备份库;查看备份pg_probackup show -B /data/postgres/probackup --instance pg207_6000
-- 恢复pg_probackup restore -B /data/postgres/probackup --instance local_6000 --recovery-target-time='2021-07-11 14:54:55'
pgbench -i -s 10000 -U backup -h 127.0.0.1 pgbenchpgbench=# \dt List of relations Schema | Name | Type | Owner --------+------------------+-------+-------- public | pgbench_accounts | table | backup public | pgbench_branches | table | backup public | pgbench_history | table | backup public | pgbench_tellers | table | backup(4 rows)pgbench=# select count(*) from pgbench_accounts; count ------------ 1000000000(1 row)磁盘占用:[postgres@ecos75]$ df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 7.5G 0 7.5G 0% /devtmpfs 7.5G 12K 7.5G 1% /dev/shmtmpfs 7.5G 9.2M 7.5G 1% /runtmpfs 7.5G 0 7.5G 0% /sys/fs/cgroup/dev/mapper/vg00-lv_root 20G 9.9G 8.8G 53% //dev/sda1 501M 335M 130M 73% /boot/dev/sda2 524M 12K 524M 1% /boot/efi/dev/sdb1 296G 147G 134G 53% /postgresql/data/dev/sdc1 296G 65M 281G 1% /postgresql/backuptmpfs 1.5G 0 1.5G 0% /run/user/0/dev/sdd1 296G 122G 160G 44% /postgresql/archive
pg_probackup backup -B /postgresql/backup/ --instance pgbak -j 4 -U probackup --stream -b full[postgres@ecos75]$ pg_probackup backup -B /postgresql/backup/ --instance pgbak -j 4 -U probackup --stream -b full --temp-slotINFO: Backup start, pg_probackup version: 2.4.15, instance: pgbak, backup ID: QLOIL1, backup mode: FULL, wal mode: STREAM, remote: false, compress-algorithm: none, compress-level: 1WARNING: 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'.INFO: PGDATA size: 146GBINFO: Start transferring data filesINFO: Data files are transferred, time elapsed: 33m:19s2021-07-11 16:12:20.388 CST [24069] LOG: restore point 'pg_probackup, backup_id QLOIL1' created at 23/C00001782021-07-11 16:12:20.388 CST [24069] STATEMENT: SELECT pg_catalog.pg_create_restore_point($1)INFO: wait for pg_stop_backup()INFO: pg_stop backup() successfully executedINFO: Syncing backup files to diskINFO: Backup files are synced, time elapsed: 15sINFO: Validating backup QLOIL1INFO: Backup QLOIL1 data files are validINFO: Backup QLOIL1 resident size: 146GBINFO: Backup QLOIL1 completed时间:2021-07-11 15:39 ~ 2021-07-11 16:31
export LD_LIBRARY_PATH=/usr/local/postgresql-13.3/libERROR: could not connect to database postgres: 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'?
pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc磁盘占用:[postgres@ecos75]$ df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 7.5G 0 7.5G 0% /devtmpfs 7.5G 12K 7.5G 1% /dev/shmtmpfs 7.5G 9.1M 7.5G 1% /runtmpfs 7.5G 0 7.5G 0% /sys/fs/cgroup/dev/mapper/vg00-lv_root 20G 9.9G 8.8G 53% //dev/sda1 501M 335M 130M 73% /boot/dev/sda2 524M 12K 524M 1% /boot/efitmpfs 1.5G 0 1.5G 0% /run/user/0/dev/sdb1 296G 162G 119G 58% /postgresql/data/dev/sdc1 296G 147G 134G 53% /postgresql/backup/dev/sdd1 296G 13G 268G 5% /postgresql/archive
pg_probackup backup -B /postgresql/backup/ --instance pgbak -j 4 -U probackup --stream -b delta --temp-slot[postgres@ecos75]$ pg_probackup backup -B /postgresql/backup/ --instance pgbak -j 4 -U probackup --stream -b delta --temp-slotINFO: Backup start, pg_probackup version: 2.4.15, instance: pgbak, backup ID: QLOMCV, backup mode: DELTA, wal mode: STREAM, remote: false, compress-algorithm: none, compress-level: 1WARNING: 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'.INFO: Parent backup: QLOIL1INFO: PGDATA size: 161GBINFO: Start transferring data filesINFO: Data files are transferred, time elapsed: 31m:29s2021-07-11 17:32:00.310 CST [30184] LOG: restore point 'pg_probackup, backup_id QLOMCV' created at 26/C10001782021-07-11 17:32:00.310 CST [30184] STATEMENT: SELECT pg_catalog.pg_create_restore_point($1)INFO: wait for pg_stop_backup()INFO: pg_stop backup() successfully executedINFO: Syncing backup files to diskINFO: Backup files are synced, time elapsed: 0INFO: Validating backup QLOMCVINFO: Backup QLOMCV data files are validINFO: Backup QLOMCV resident size: 15GBINFO: Backup QLOMCV completed时间:2021-07-11 17:00 ~ 2021-07-11 17:35
修改postgresql.confvi postgresql.confarchive_command='pg_probackup archive-push -B /postgresql/backup --instance pgbak --wal-file-name=%f'删除增量库pgbench_incpostgres=# drop database pgbench_inc;pg_probackup backup -B /postgresql/backup/ --instance pgbak -j 4 -U probackup -b full[postgres@ecos75]$ pg_probackup backup -B /postgresql/backup/ --instance pgbak -j 4 -U probackup -b fullINFO: Backup start, pg_probackup version: 2.4.15, instance: pgbak, backup ID: QLILZE, backup mode: FULL, wal mode: ARCHIVE, remote: false, compress-algorithm: none, compress-level: 1WARNING: 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'.INFO: Wait for WAL segment /postgresql/backup/wal/pgbak/0000000100000020000000AE to be archivedINFO: PGDATA size: 146GBINFO: Start transferring data filesINFO: Data files are transferred, time elapsed: 38m:52sINFO: wait for pg_stop_backup()INFO: pg_stop backup() successfully executedvINFO: Syncing backup files to diskINFO: Backup files are synced, time elapsed: 14sINFO: Validating backup QLILZEINFO: Backup QLILZE data files are validINFO: Backup QLILZE resident size: 146GBINFO: Backup QLILZE completed时间:2021-07-12 08:57 ~ 2021-07-12 09:54
pgbench -i -s 1000 -U probackup -h 127.0.0.1 pgbench_inc
[postgres@ecos75]$ df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 7.5G 0 7.5G 0% /devtmpfs 7.5G 12K 7.5G 1% /dev/shmtmpfs 7.5G 18M 7.5G 1% /runtmpfs 7.5G 0 7.5G 0% /sys/fs/cgroup/dev/mapper/vg00-lv_root 20G 9.9G 8.8G 53% //dev/sda1 501M 335M 130M 73% /boot/dev/sda2 524M 12K 524M 1% /boot/efi/dev/sdb1 296G 162G 119G 58% /postgresql/data/dev/sdc1 296G 159G 122G 57% /postgresql/backuptmpfs 1.5G 0 1.5G 0% /run/user/0/dev/sdd1 296G 122G 159G 44% /postgresql/archive
pg_probackup-12 backup -B /postgresql/backup/ --instance pgbak -b PAGE -U probackup[postgres@ecos75]$ pg_probackup backup -B /postgresql/backup/ --instance pgbak -b page -j 4 -U probackupINFO: Backup start, pg_probackup version: 2.4.15, instance: pgbak, backup ID: QLPZ42, backup mode: PAGE, wal mode: ARCHIVE, remote: false, compress-algorithm: none, compress-level: 1WARNING: 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'.INFO: Wait for WAL segment /postgresql/backup/wal/pgbak/0000000100000029000000C8 to be archivedINFO: Parent backup: QLPUN6INFO: PGDATA size: 161GBINFO: Extracting pagemap of changed blocksINFO: Pagemap successfully extracted, time elapsed: 142 sec
INFO: Start transferring data files
INFO: Data files are transferred, time elapsed: 5m:16s
INFO: wait for pg_stop_backup()
INFO: pg_stop backup() successfully executed
INFO: Syncing backup files to disk
INFO: Backup files are synced, time elapsed: 8s
INFO: Validating backup QLPZ42
INFO: Backup QLPZ42 data files are valid
INFO: Backup QLPZ42 resident size: 15GB
INFO: Backup QLPZ42 completed
时间:2021-07-12 10:33 ~ 2021-07-12 10:44





新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序

更多新闻资讯,行业动态,技术热点,请关注中国PostgreSQL分会官方网站
https://www.postgresqlchina.com
中国PostgreSQL分会生态产品
https://www.pgfans.cn
中国PostgreSQL分会资源下载站
https://www.postgreshub.cn


点赞、在看、分享、收藏




