PG_备份

需要备份:数据,归档日志

逻辑导出工具:pg_dump pg_dumpall
物理备份工具:pg_basebackup

pg_basebackup应用

pg_basebackup -D /backup -Ft -Pv -Upostgres -h 10.10.0.10 -p1921 -R

-D:备份位置,要提前创建切为空
-F:备份格式  t:tar压缩包   p:文件
-P:备份过程的详细信息

mkdir -p  /backup/pg_backup

pg_basebackup -D /backup/pg_backup -Ft -Pv -Upostgres -h 10.10.0.10 -p1921 -R

cd  /backup/pg_backup
base.tar   //数据
pg_wal.tar   //归档日志...


恢复://把备份文件cp到源目录下就可以恢复了
tar base.tar -C /pgdata/12/data
tar pg_wal.tar -C /archive


vim postgresql.auto.conf
restore_command='cp /archive/%f %p'       //从哪里进行恢复归档日志
recovery_target='immediate'                      //恢复到一致的位置点

-- touch /pgdata/12/data/recovery.signal 
//新建文件  把恢复的过程写入recovery.signal    否则报错

pg_ctl start
// 恢复完数据库处于一个只读模式,需要执行一个停止复制的命令
select pg_wal_replay_resume();

模拟每晚一个全备,第二天中午的数据库故障,恢复至故障前的数据

create database pit;
\c pit;
create table t1(id int);
insert into t1 values (1),(11),(111);

全备:
pg_basebackup -D /backup/pg_backup -Ft -Pv -Upostgres -h 10.10.0.10 -p1921 -R


create table t2(id int);
insert into t1 values (2),(22),(222);

drop database pit;


// 切换日志
select 
//关闭数据库
pg_ctl stop -mf

恢复://把备份文件cp到源目录下就可以恢复了
tar base.tar -C /pgdata/12/data
tar pg_wal.tar -C /archive

查看日志:
pg_waldump xxxxxx

vim postgresql.auto.conf
restore_command='cp /archive/%f %p'       //从哪里进行恢复归档日志
recovery_target_xid='533'                      //恢复到故障tx_id 之前的那个id
     recovery_target_name='before_delete'
[select pg_create_restore_point('before_delete')   //保存点
在做危险操作前创建一个保存点(快照),以后就可恢复在保存点之前]

pg_ctl start

// 恢复完数据库处于一个只读模式,需要执行一个停止复制的命令
select pg_wal_replay_resume();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容