PostgreSQL基础备份_增量备份与任意点恢复
背景
备份是恢复的前提。不发生故障时,世界很太平,但发生故障时,如果不能顺利进行恢复,那将是一场噩梦!甚至可能对于企业是致命打击,这绝对不是危言耸听!
日常的备份有效性的检查就显得尤其重要,一个无效的备份集和没有备份是一样的,例如备份文件无法解压,或者存储备份的介质损坏等等。除了制定备份恢复策略,还应该制定一套定期、定时的恢复测试方案。我们在恢复测试中,应该考量恢复需要花费的时间,日常测试时,也应该记录和统计恢复花费的时间,如果恢复时间太长,还应该优化恢复方案,消除恢复瓶颈实现业务SLA要求等级
1、每天进行一起全备,保留7天
2、每个月进行一次全备,保留一个月
3、开启归档模式
4、要定期删除无效的归档日志
postgres=# show data_directory; data_directory ----------------- D:/pg_data/data (1 row) SHOW
D:/pg_data/data D:/pg_data/data_bak #直接拷贝data目录,预防失败情况 D:/pg_data/pg_archive #用于增量备份的日志 D:/pg_data/pg_base #用于基础备份
archive_mode = on
archive_command = 'C:/gzip/bin/gzip -c %p > D:/pg_data/pg_archive/%f.gz' #注释:%p:表示日志路径,%f:表示日志文件名,使用gzip进行压缩,否则日志非常大。大概有几百倍的压缩率。
wal_level = archive #注释: minimal为最小的日志,这个不能用于日志的备份.至少是hot_standby才能做主从复制
max_wal_senders = 2 #表示开个新的进程把日志负责日志的传送。设置大于0即可
logging_collector = on
wal_keep_segments= 200 # 200 * 16MB = 3200MB 的wal备份
# replication privilege. host replication postgres 127.0.0.1/32 trust
C:\Program Files\PostgreSQL\9.4\bin
注意端口号错了
pg_basebackup -h 127.0.0.1 -U postgres -p 5432 -Ft -Pv -Xf -z -Z5 -D E:/odsoft/psql/data_base
#命令的参数用途,参考 pg_basebackup --help
进行基础备份后,在目录D:/pg_data/pg_base/下面有文件:base.tar.gz,到这一步,必须成功,否则检测前面步骤出问题的地方。
select pg_switch_xlog(); # 在pg10中为:select pg_switch_wal();
此时,在日志归档目录中D:/pg_data/pg_archive中会出现归档日志,到这一步,也必须成功,否则检测前面步骤出现问题的地方。
windows/pg9.4恢复步骤
假设恢复到某一个指定的时间:如:2018-10-19 10:00:00 (业务场景,在10:30错误的操作删除了某些数据,想恢复到:2018-10-10 10:00:00)
restore_command = 'C:/gzip/bin/gzip -c -d D:/pg_data/pg_archive/%f.gz > %p'
1.修改恢复得到的时间点
recovery_target_time = '2018-10-19 10:00:00 +08' # +08表示东八区
自动定时增量备份,准备用windows的定时任务进行,请看下篇笔记