需要备份:数据,归档日志
逻辑导出工具: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();