pgsql的备份和恢复:备份:

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

恢复:psql dbname < infile

outfile 和infile是同一个文件

2.pg_dumpall:(sql转储,导出所有的db)

备份:pg_dumpall -f outfile

恢复:psql -f outfile postgres

3.pitr:在线备份,和oracle的归档原理差不多.

archive(归档文件):database manager 把query语句记录在  archive文件里,archive文件一般有多个,有固定大小.采取轮循的方式写.然后到了触发一定条件的时候,如:记录了1个小时的query语句了或者写满了1/2的时候.就执行这些query语句并把结果写到数据文件里.即记录到硬盘中.1.要使用pitr,必须打开pgsql的归档模式(archive)

在postgresql.conf文件中,设置如下:

# - Archiving -

archive_mode = on               # allows archiving to be done

# (change requires restart)

archive_command = 'cp "%p" /usr/local/pgsql/backup/"%f"'

# command to use to archive a logfile segment

archive_timeout = 60            # force a logfile segment switch after this

# time; 0 is off

2.以postgres身份连接到pgsql

psql 要备份的dbname

3.发出备份命令

select pg_start_backup('label');  --> 备份archive文件.

label --> 备份标签,一般为放置备份文件的全路径.如: /usr/local/pgsql/backup

4.执行备份

用tar或者cpio备份数据文件.此过程中,不用关闭数据库,也不用断开连接.

5.再以postgres身份连接到pgsql

select pg_stop_backup(); --> 终止备份archive文件.

这将终止备份模式,并自动切换到下一个归档文件.这样的好处是可以立即为下次备份做好准备.

4.pitr的即时恢复

1.停止pgsql服务

2.最好copy /usr/local/pgsql/data 到临时位置,以防万一.

3.清理掉data 文件下所有文件,如果用到tablespace,还得清掉表空间目录下的所有文件.

4.用正确的所有者恢复数据库文件.用postgres最好.

5.清理pg_xlog目录里的文件.删掉文件,保留文件夹

6.copy archive文件到pg_xlog文件夹下.

7.在集群数据目录/usr/local/pgsql/data里创建一个恢复命令文件recovery.conf。模版文件recovery.conf.sample在tarball的src里.

restore_cmd  -->    恢复的命令

recovery_target_time -->声明恢复到哪个时间戳

recovery_target_xid --> 声明恢复到哪个事物id

recovery_target_inclusive  --> 声明是在恢复目标之前还是之后停止.

recovery_target_timeline --> 声明恢复到一个时间线.

还需要临时修改 pg_hba.conf 以避免普通用户连接,直到你确信恢复已经正常了为止。

8.所有这些操作的关键是设置一个恢复命令文件,这个文件描述你希望如何恢复以及恢复应该走到哪里。

你可以使用 recovery.conf.sample(通常安装在安装目录的 share/ 子目录里)作为原型。

你必须在 recovery.conf 里面声明的一个东西是 restore_command ,它告诉系统如何拿回归档的 WAL 文件段。

类似 archive_command ,这个是一个脚本命令字符串。它可以包含 %f ,这个变量会被需要的日志文件名替换,以及 %p ,

它会被要拷贝去的日志文件的绝对路径代替。如果需要在命令里替换真正的 % 字符,那么就双写(%%)。

最简单的有用命令是类似下面的东西

restore_command = 'cp /mnt/server/archivedir/%f %p'这个命令将把以前归档的 WAL 段从 /mnt/server/archivedir 目录拷贝过来。

你当然可以使用某些更复杂的东西,甚至是一个要求操作者挂载合适的磁带的 shell 脚本。

重要的一点是:该命令在失败的时候返回非零值。如果日志文件没有出现在规档中,那么该系统将询问该命令;

在问到的时候,它必须返回非零。这个不是错误条件。还要注意 %p 路径的基础名将和 %f 不一样;不要认为它们是可以互换的。

在归档中找不到的 WAL 段将被认为在 pg_xlog/ 里;这样就允许使用最近没有归档的段。

但是在归档中的段将比 pg_xlog/ 中的优先。在检索归档文件的时候,系统将不会覆盖现有的 pg_xlog/ 内容。

通常,恢复将处理所有可用的 WAL 段,因此将把数据库恢复到当前时间(或者是在所给出的可用 WAL 段数的情况下,

我们能走到的最近的地方)。但是如果你想恢复到某些以前的时刻点(比如,在菜鸟 DBA 删除你的主要事务表之前),

那么只需要在 recovery.conf 里声明要求的停止点。你可以通过日期/时间来声明,也可以通过特定事务 ID 的结束来声明这个停止点,

我们叫做"恢复目标"。目前,只有日期/时间选项比较有用,因为我们没有工具来帮助你精确地标识应该使用哪个事务 ID

【注意】请注意停止点必须在备份的终止时间之后(也就是 pg_stop_backup 的时间)。

你无法使用一个基础备份恢复到备份正在进行中的某个时刻。要想恢复到该时刻,你必须回到你以前的基础备份,然后从那个位置向前滚动。

如果在恢复过程中发现在 WAL 数据中存在错误,那么恢复将在错误的地方停止,并且不会启动服务器。

在这种情况下,可以指定一个位于错误点之前的"恢复目标",然后从起始点开始重新运行恢复进程,这样恢复就可以正常完成。

如果由于外部原因(系统崩溃、无法读取 WAL 归档)导致恢复失败,那么可以简单的重新启动恢复过程即可,它将从上次失败的地方继续。

重新启动恢复过程与检查点的操作非常类似:

服务器周期性的强制将其状态记录到磁盘上并更新 pg_control 文件以标识已经处理的 WAL 数据不需要被再次扫描。

pitr 原理_pgsql的备份和恢复相关推荐

  1. Oracle 原理:逻辑备份和恢复

    目录 一.备份和恢复 二.Oracel环境中可能发生的故障类型 三.导入导出程序 exp/imp 四.exp/imp 和数据泵的区别 一.备份和恢复 在Oracle 要有备份才能恢复.Oracle备份 ...

  2. pitr 原理_PostgreSQL基于时间点恢复(PITR)

    OS 环境:CentOS 6.2 数据库 :PostgreSQL 9.1.3 pg_home=/home/postgres/ pg_data=/database/pgdata/ 一.前期工作既要恢复, ...

  3. MariaDB/MySQL备份和恢复(三):xtrabackup用法和原理详述

    MariaDB/MySQL备份恢复系列: 备份和恢复(一):mysqldump工具用法详述 备份和恢复(二):导入.导出表数据 备份和恢复(三):xtrabackup用法和原理详述 xtrabacku ...

  4. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

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

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

  6. pitr 原理_PostgeSQL 数据库备份与恢复实验 (PITR)

    一.概述 此文档描述了Postgresql数据库备份方案, 当数据库发生崩溃时,如何利用备份恢复到崩溃前,保证数据库最少数据量丢失甚至不丢失: 二.备份恢复原理 运用在线备份以及即时恢复(PITR)原 ...

  7. MongoDB整库备份与还原以及单个collection备份、恢复方法

    mongodb数据库维护离不开必要的备份.恢复操作,而且一般不会出错,所以我们在使用的时候大部分时候使用备份和恢复操作就可以了 mongodump.exe备份的原理是通过一次查询获取当前服务器快照,并 ...

  8. MySQL 数据库的备份和恢复

    MySQL 数据库的备份和恢复 imysql.cn 2006年09月30日 23:56 查看25126次 作者:   [大 中 小] 文章分类:数据库技术 关键字: mysql,mysqldump,导 ...

  9. MySQL 的备份和恢复机制 MyISAM 和 Innodb

    转自:http://blog.csdn.net/sosoft_dzz/article/details/5299666 deven感觉这个文章还是比较靠谱的. 本文讨论 MySQL 的备份和恢复机制,以 ...

最新文章

  1. IDEA自定义快捷指令,快捷生成代码、注释
  2. Hibernate执行原生SQL
  3. 软件测试风险评估分析
  4. 计算机网络和机器视觉,一文读懂计算机视觉和机器人视觉
  5. jedis操作redis(二)
  6. winform 自定义控件属性在属性面板中显示的问题
  7. 服务器BIOS、BMC、IPMI、EFI、UEFI等知识详解
  8. xcode 重新来过openssl项目历程
  9. C语言Windows程序设计-第三天-属于自己的窗口
  10. 联想服务器自动关机_联想电脑设置自动关机
  11. Word 如何取消自动编号
  12. 3717 bLue的文件查找器
  13. c语言printf小数乘整数,如何将小数化为整数
  14. Centos安装Wordpress
  15. WINDOWS渗透与提权总结(2)
  16. 深挖用户需求,只需要这三步就够了!
  17. 3dsmax UVW展开,然后在 BodyPaint 3D 中进行绘制
  18. 详解SQL中几种常用的表连接方式!
  19. 【分享】后厂村鲜为人知的另一面
  20. 机器学习作业2编程作业(python):Logistic Regression

热门文章

  1. sqlserver2000与sqlserver2005驱动与url的区别
  2. 长春理工大学计算机学院转专业,长春理工大学优秀本科学生转专业面试考核方案.PDF...
  3. js ---- 对象去重
  4. Mac----已被macOS使用
  5. java word另存为_Java 网页html转为word并保存为doc文件
  6. 5g理论速度_快看看 5G 的实际网速,失望还是兴奋?
  7. java gc日志乱码_gc原理以及gc日志剖析
  8. echarts横轴展示不全使用滚动条(dataZoom)的方法
  9. mac obs 录屏黑屏_有了它,我把其他录屏软件都卸载了!
  10. 使用git上传项目到github