pg备份

简单介绍一下:
pg_rman可以在线备份整个数据库,支持增量备份和备份压缩,支持存储快照。
pg_rman使用的是pg_start_backup(), copy, pg_stop_backup()的备份模式。
pg_rman跑的不是流复制协议,而是文件拷贝,所以pg_rman必须和数据库节点跑在一起。
如果在standby节点跑pg_rman,pg_rman则需要通过网络连接到主节点执行pg_start_backup和pg_stop_backup。

下载安装:

wget https://github.com/ossc-db/pg_rman/releases/download/V1.3.11/pg_rman-1.3.11-pg12.tar.gz
tar -zxvf pg_rman-1.3.11-pg12.tar.gz 
cd soft/pg_rman-1.3.11-pg12
make && make install

使用pg_rman的先决条件:

postgres=# show log_destination ;  
 log_destination   
-----------------  
 csvlog  
(1 row)  
 
postgres=# SHOW log_directory ;  
 log_directory  
---------------  
log  
(1 row)  
  
postgres=# SHOW archive_command ;  
              archive_command  
--------------------------------------------  
 cp %p /pgarchive/%f  
(1 row)  

初始化备份目录:

初始化需要两个参数,分别为备份目标目录,以及数据库的$PGDATA

pg_rman init -B /pgbackup -D /opt/pgdata/pg_root
INFO: ARCLOG_PATH is set to '/pgarchive'
INFO: SRVLOG_PATH is set to '/opt/pgdata/pg_root/log'

查看配置文件:

cat pg_rman.ini
ARCLOG_PATH='/pgarchive'
SRVLOG_PATH='/opt/pgdata/pg_root/log'

cat system_identifier
SYSTEM_IDENTIFIER='6940149485915408008'

可见和控制文件的系统标识号一致

pg_controldata | grep system
Database system identifier: 6940149485915408008

备份:

全量备份

pg_rman backup -B /pgbackup -D /opt/pgdata/pg_root -b full -s -Z -C --keep-data-days=10 --keep-arclog-files=15 --keep-arclog-days=10 --keep-srvlog-files=10 --keep-srvlog-days=15 -h 127.0.0.1 -p 1921 -U postgres -d postgres
INFO: copying database files
INFO: copying archived WAL files
INFO: copying server log files
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 15, keep days = 10)
INFO: the threshold timestamp calculated by keep days is "2021-03-08 00:00:00"
INFO: start deleting old server files from SRVLOG_PATH (keep files = 10, keep days = 15)
INFO: the threshold timestamp calculated by keep days is "2021-03-03 00:00:00"
INFO: start deleting old backup (keep after = 2021-03-08 00:00:00)
INFO: does not include the backup just taken

验证

pg_rman validate -B /pgbackup/

增量备份

pg_rman backup -B /pgbackup -D /opt/pgdata/pg_root -b incremental -s -Z -C --keep-data-days=10 --keep-arclog-files=15 --keep-arclog-days=10 --keep-srvlog-files=10 --keep-srvlog-days=15 -h 127.0.0.1 -p 1921 -U postgres -d postgres
INFO: copying database files
INFO: copying archived WAL files
INFO: copying server log files
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 15, keep days = 10)
INFO: the threshold timestamp calculated by keep days is "2021-03-08 00:00:00"
INFO: start deleting old server files from SRVLOG_PATH (keep files = 10, keep days = 15)
INFO: the threshold timestamp calculated by keep days is "2021-03-03 00:00:00"
INFO: start deleting old backup (keep after = 2021-03-08 00:00:00)
INFO: does not include the backup just taken
INFO: backup "2021-03-18 19:37:45" should be kept
DETAIL: This is taken after "2021-03-08 00:00:00".

再次验证

pg_rman validate -B /pgbackup/

查看备份信息

INFO: validate: "2021-03-18 19:59:19" backup, archive log files and server log files by CRC
INFO: backup "2021-03-18 19:59:19" is valid
postgres@nano-dev-nano-python-test-database-02-> pg_rman show detail -B /pgbackup/
======================================================================================================================
StartTime EndTime Mode Data ArcLog SrvLog Total Compressed CurTLI ParentTLI Status
======================================================================================================================
2021-03-18 19:59:19 2021-03-18 19:59:21 INCR 17kB 33MB 0B 33kB true 1 0 OK
2021-03-18 19:37:45 2021-03-18 19:37:48 FULL 50MB 33MB 71kB 6689kB true 1 0 OK

相关option:

init #初始化备份目录
backup #在线备份
restore #恢复选项
show #显示备份集历史,detail选项会显示每个备份集更多的信息
validate #验证备份文件,如果不验证,备份无法用于恢复和增量备份
delete #删除备份文件
purge #从备份目录删除备份

为了减轻主节点的压力,当然我们更加喜欢在备节点做备份,以下附上参数解释

pg_rman backup \
-b full \ # 全量备份
-B /pgbackup \ # 备份目录
-D /opt/pgdata/pg_root \ # 备库的$PGDATA
-s \ # 备份pg_log
-Z \ # 压缩
--keep-data-generations=3 \ # 保留3个全量备份,删除不需要的全量备份
--keep-data-days=10 \ # 保证能恢复到10天内的任意时间点,删除不需要的
--keep-arclog-files=30 \ # 保留最近30个归档文件
--keep-arclog-days=20 \ # 保留20天内的归档文件
--keep-srvlog-files=10 \ # 保留最近10个日志文件(pg_log)
--keep-srvlog-days=20 \ # 保留20天内的日志文件(pg_log)
--standby-host=127.0.0.1 \ # 如何连接standby
--standby-port=1921 \ # 如何连接standby
-h 10.4.9.166 \ # 如何连接primary
-p 1921 \ # 如何连接primary
-U postgres \ # 如何连接primary, standby(超级用户)
-d postgres # 如何连接primary, standby(database name)

备节点备份:

备节点做一次全备

pg_rman backup -b full -B /pgbackup -D /opt/pgdata/pg_root -s -Z --keep-data-generations=3 --keep-data-days=10 --keep-arclog-files=30 --keep-arclog-days=20 --keep-srvlog-files=10 --keep-srvlog-days=20 --standby-host=127.0.0.1 --standby-port=1921 -h 10.4.9.166 -p 1921 -U postgres -d postgres
INFO: copying database files
INFO: copying archived WAL files
INFO: copying server log files
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 30, keep days = 20)
INFO: the threshold timestamp calculated by keep days is "2021-02-26 00:00:00"
INFO: start deleting old server files from SRVLOG_PATH (keep files = 10, keep days = 20)
INFO: the threshold timestamp calculated by keep days is "2021-02-26 00:00:00"
INFO: start deleting old backup (keep generations = 3 AND keep after = 2021-03-08 00:00:00)
INFO: does not include the backup just taken
WARNING: backup "2021-03-18 20:25:44" is not taken into account
DETAIL: This is not a valid backup.
WARNING: backup "2021-03-18 20:24:48" is not taken into account
DETAIL: This is not a valid backup.
WARNING: backup "2021-03-18 20:23:52" is not taken into account
DETAIL: This is not a valid backup.
WARNING: backup "2021-03-18 20:22:47" is not taken into account
DETAIL: This is not a valid backup.
pg_rman validate -B /pgbackup/
INFO: validate: "2021-03-18 20:27:12" backup, archive log files and server log files by CRC
INFO: backup "2021-03-18 20:27:12" is valid

验证备份

pg_rman validate -B /pgbackup/
INFO: validate: "2021-03-18 20:27:12" backup, archive log files and server log files by CRC
INFO: backup "2021-03-18 20:27:12" is valid

查看备份

pg_rman show detail -B /pgbackup/

StartTime EndTime Mode Data ArcLog SrvLog Total Compressed CurTLI ParentTLI Status

2021-03-18 20:27:12 2021-03-18 20:27:17 FULL 49MB 0B 18kB 5749kB true 1 0 OK

————————————————
版权声明:本文为CSDN博主「dazuiba008」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dazuiba008/article/details/114977280

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容