OS 环境:CentOS 6.2

数据库 :PostgreSQL 9.1.3

pg_home=/home/postgres/

pg_data=/database/pgdata/

一、前期工作既要恢复,肯定是需要一个备份基础的,否则再怎么的巧妇也难为无米之炊。

1.修改数据库参数,修改postgresql.conf:

archive_mode = on

archive_timeout = 300 --单位是秒,此处以5分钟为限强制归档,仅作测试

archive_command = 'cp -i %p /home/postgres/archive/%f'

wal_level = archive

修改完重启下reload,DB

2.基于文件级别的持续备份,

a.基础备份

postgres=# select pg_start_backup('backup_2012_05_20_14:22:10');

b.打包备份pg_data

# cd /database

# tar -cvzf pgdata.tar ./pgdata

c.结束基础备份并切换归档

postgres=# select pg_stop_backup();

postgres=# select pg_switch_xlog();

pg_switch_xlog

----------------

0/C000020

(1 row)

postgres=# select pg_current_xlog_location();

pg_current_xlog_location

--------------------------

0/C000020

(1 row)

postgres=# create table test_1(id int,name varchar(50));

postgres=# insert into test_1 values (1,'kenyon');

INSERT 0 1

此时在pg_data路径下会产生一个label,可以查看内容有checkpoint时间,基础备份的开始和结束时间,以及标签名称等。因为之前已经设置了archive的三个参数,可以在archive的备份路径pg_home/archive下看到归档的文件会定时传过来。

二、恢复过程

停数据库

# pg_stop

假定数据库的崩溃场景,将pgdata数据删除

# rm -rf /database/pgdata

恢复之前备份的tar文件

# tar xvf pgdata.tar

删除pg_xlog文件夹并重建

# rm -rf pg_xlog # mkdir -p pg_xlog/archive_status

拷贝recovery.conf文件并修改

# cp $PG_HOME/recovery.conf.sample /database/pgdata/

# vi /database/pgdata/recovery.conf

--新增内容,指定恢复文件和路径,%f,%p见上面说明

restore_command = 'cp /home/postgres/archive/%f "%p"'

启动数据库

# pg_start

[postgres@localhost archive]$ psql

spsql (9.1.3)

Type "help" for help.

postgres=# select * from test_1;

id | name

----+--------

1 | kenyon

(1 rows) --恢复成功,会恢复到之前接收到的最后一个归档文件。另外recovery.conf会改名变成recovery.done

日志内容:

LOG: shutting down

LOG: database system is shut down

LOG: database system was interrupted; last known up at 2012-05-20 22:23:15 CST

LOG: starting archive recovery

LOG: restored log file "000000010000000000000002" from archive

LOG: redo starts at 0/8000078

LOG: consistent recovery state reached at 0/C000000

LOG: restored log file "000000010000000000000003" from archive

LOG: restored log file "000000010000000000000004" from archive

LOG: restored log file "000000010000000000000005" from archive

LOG: restored log file "000000010000000000000006" from archive

LOG: restored log file "000000010000000000000007" from archive

cp: cannot stat `/home/postgres/archive/000000010000000000000008': No such file or directory

LOG: could not open file "pg_xlog/000000010000000000000008" (log file 0, segment 8): No such file or directory

LOG: redo done at 0/1C000078

LOG: last completed transaction was at log time 2012-05-20 23:01:22.960591+08

LOG: restored log file "000000010000000000000007" from archive

cp: cannot stat `/home/postgres/archive/00000002.history': No such file or directory

LOG: selected new timeline ID: 2

cp: cannot stat `/home/postgres/archive/00000001.history': No such file or directory

LOG: archive recovery complete

LOG: database system is ready to accept connections

LOG: autovacuum launcher started

PS:若要恢复到指定时间,还需要再recovery.conf中设置recovrey_target_time,recovery_target_timeline等参数

总结:pitr技术对于7*24小时支撑是至关重要的,但是如果数据库非常小,增大pg_dump备份的频率可能更方便,但对于大数据库就需要了。

pitr 原理_PostgreSQL基于时间点恢复(PITR)相关推荐

  1. pitr 原理_PostgreSQL热备原理研究及流复制运用

    付莎 摘要:高可用性(HA-High Availability)是所有商用数据库系统必须具备的一项基本功能.该文阐述了PostgreSQL数据库的高可用性的实现原理及方法,并对PostgreSQL数据 ...

  2. oracle能闪回多久,oracle 闪回基于时间的恢复

    下面这篇文章是闪会基于时间点的恢复,可以恢复误删除的数据,刚好今天有客户遇到这样的案例 Microsoft Windows [版本 5.2.3790] (C) 版权所有 1985-2003 Micro ...

  3. MySQL基于时间点恢复和快照恢复实例

    **时间点恢复例子** mysqldump -uroot  -p mydb > /root/mydb-`date +"%F"`.sql //添加数据 use mydb; CR ...

  4. pitr 原理_pgsql的备份和恢复

    pgsql的备份和恢复:备份: 1.pg_dump:(sql转储,类似于mysql的binlog的dump,可以加上压缩如gzip,可以设置压缩级别)备份:pg_dump dbname > ou ...

  5. xtrabackup全量备份+binlog基于时间点恢复

    1.通过xtrabackup的备份恢复数据库. 2.找到start-position和binlog名称 cat xtrabackup_info 3.导出mysqlbinlog为sql文件,并确定恢复的 ...

  6. mysql 时间点_MySQL 基于时间点与位置恢复

    基于时间点与位置恢复 利用二进制日志可以实现基于时间与位置的恢复,例如由于误操作删除了一张表,这时候完全恢复是没用的,因为日志里面还是存在错误语句,我们需要的是恢复到误操作之前的状态,然后跳过误操作数 ...

  7. Oracle 基于用户管理恢复的处理

    -- Oracle 基于用户管理恢复的处理 --================================ Oracle支持多种方式来管理数据文件的备份与恢复来保证数据库的可靠与完整.除了使用R ...

  8. 技术分享 | 基于 mongo cluster 的 PITR 恢复案例一则

    作者:任坤 现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL.mongoDB 和 Redis 维护工作. 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授 ...

  9. Postgresql 物理热备份 -- PITR 时间点恢复(Point In Time Recovery)

    时间点恢复(Point In Time Recovery) 转载于:https://www.cnblogs.com/xibuhaohao/p/11114412.html

最新文章

  1. mac 显示隐藏文件
  2. C#访问SQLite完整增删改查代码
  3. 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
  4. qemu+linux+x86+64,kvm 内部错误:无法找到适合 x86_64 的模拟器
  5. Find the Kth number(找第K大数)
  6. 领域应用 | 深度学习在知识图谱构建中的应用
  7. 2019matlab中的floyd,基于matlab的floyd算法详解
  8. Spring中@Async
  9. slowfast 跑多卡的时候遇到问题
  10. 杭电5256 序列变换(LIS)
  11. viewport就是这回事
  12. 代码学习-Linux内核网卡收包过程(NAPI)
  13. matlab和C/C++混合编程--Mex (转载)
  14. 小型数据集卷积神经网络CNN训练策略
  15. 史上最清晰的雷霆战机游戏开发全过程(基于java,素材和源码均齐全)
  16. 详细设计的工具——PAD图
  17. 屏幕适配以及ui切图规范和命名标准
  18. 用excel做logistic回归分析_怎样用SPSS做二项Logistic回归分析?结果如何解释?
  19. 这应该是最全面的MySQL知识点总结啦
  20. Excel 删除数据temp 恢复

热门文章

  1. Promethus搭建 K8S 集群节点资源监控系统
  2. 手把手带你玩转Tensorflow 物体检测 API (1)——运行实例
  3. 行列转换的帖子mysql_[转载]mysql行列转换方法总结  (转)
  4. 不知道工作组名称怎样加入_剩米饭不知道怎样做?试试泡菜炒饭,再也不用担心米饭做多了...
  5. 腾讯视频下载安装_如何上传视频到腾讯视频平台
  6. win10搜索框没反应怎么修复
  7. nacos初探--作为配置中心
  8. Spring的@ExceptionHandler注解使用方法
  9. dubbo:reference、dubbo:service和@Service、@Reference使用情况
  10. linux内核时钟驱动,4.9版本的linux内核中实时时钟芯片pcf85263的驱动源码在哪里