1 逻辑备份
pg_dump
导出指定对象、库、表等
pg_dump postgres > /tmp/postgres.sql
pg_dump -t public.score2 postgres > /tmp/score2.sql
pg_dumpall
导出全实例信息、用户、表空间等
Pg_dumpall > /tmp/pgall.sql
copy
服务端导出:
Copy t1 to '/tmp/text.sql'
客户端导出:
\copy t1 to '/tmp/text.sql'
逻辑备份一致性:
备份时创建库级别一致的snapshot
事务隔离级别为RR
l 逻辑恢复
pg_restore
psql
psql < /tmp/score2.sql
copy from
copy score2 from '/tmp/score2.sql';
2 全量备份和恢复
全量备份所涉及的文件
Datafile
Wal日志
手动:
pg_start_backup
copy file
pg_stop_backup
自动:
pg_hba.conf 中配置好规则
pg_basebackup
l pg_rman 块级别备份
https://github.com/ossc-db/pg_rman
开源PG备份管理软件
使用的是pg_start_backup(),copy,pg_stop_backup()的备份模式
使用的不是流复制协议,而是文件拷贝
Http://ossc-db.github.io/pg_rman/index.html
l 全量加归档的时间点恢复
show archive_mode;
show archive_command;
创建相关目录并更改属主
pg_basebackup -D /postgresql/pg12/bak/ -Ft -Xstream -P –Upostgres
--Ft 指定压缩格式 -Xstream 指定事务日志 –P 实时打印进度
基于时间点的恢复
vim postgresql.conf
restore_command = 'cp /postgresql/arch/%f %p'
recovery_target_time = '2020-05-14 17:02:40.763446+08'
touch recovery.signal
./startup 恢复
select pg_wal_replay_resume(); 解除只读模式
l 容灾策略
构建异地standby
Standby 定期快照