pitr 原理_pgsql的备份和恢复
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的备份和恢复相关推荐
- Oracle 原理:逻辑备份和恢复
目录 一.备份和恢复 二.Oracel环境中可能发生的故障类型 三.导入导出程序 exp/imp 四.exp/imp 和数据泵的区别 一.备份和恢复 在Oracle 要有备份才能恢复.Oracle备份 ...
- pitr 原理_PostgreSQL基于时间点恢复(PITR)
OS 环境:CentOS 6.2 数据库 :PostgreSQL 9.1.3 pg_home=/home/postgres/ pg_data=/database/pgdata/ 一.前期工作既要恢复, ...
- MariaDB/MySQL备份和恢复(三):xtrabackup用法和原理详述
MariaDB/MySQL备份恢复系列: 备份和恢复(一):mysqldump工具用法详述 备份和恢复(二):导入.导出表数据 备份和恢复(三):xtrabackup用法和原理详述 xtrabacku ...
- Sql Server数据库备份和恢复:原理篇
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...
- pitr 原理_PostgreSQL热备原理研究及流复制运用
付莎 摘要:高可用性(HA-High Availability)是所有商用数据库系统必须具备的一项基本功能.该文阐述了PostgreSQL数据库的高可用性的实现原理及方法,并对PostgreSQL数据 ...
- pitr 原理_PostgeSQL 数据库备份与恢复实验 (PITR)
一.概述 此文档描述了Postgresql数据库备份方案, 当数据库发生崩溃时,如何利用备份恢复到崩溃前,保证数据库最少数据量丢失甚至不丢失: 二.备份恢复原理 运用在线备份以及即时恢复(PITR)原 ...
- MongoDB整库备份与还原以及单个collection备份、恢复方法
mongodb数据库维护离不开必要的备份.恢复操作,而且一般不会出错,所以我们在使用的时候大部分时候使用备份和恢复操作就可以了 mongodump.exe备份的原理是通过一次查询获取当前服务器快照,并 ...
- MySQL 数据库的备份和恢复
MySQL 数据库的备份和恢复 imysql.cn 2006年09月30日 23:56 查看25126次 作者: [大 中 小] 文章分类:数据库技术 关键字: mysql,mysqldump,导 ...
- MySQL 的备份和恢复机制 MyISAM 和 Innodb
转自:http://blog.csdn.net/sosoft_dzz/article/details/5299666 deven感觉这个文章还是比较靠谱的. 本文讨论 MySQL 的备份和恢复机制,以 ...
最新文章
- IDEA自定义快捷指令,快捷生成代码、注释
- Hibernate执行原生SQL
- 软件测试风险评估分析
- 计算机网络和机器视觉,一文读懂计算机视觉和机器人视觉
- jedis操作redis(二)
- winform 自定义控件属性在属性面板中显示的问题
- 服务器BIOS、BMC、IPMI、EFI、UEFI等知识详解
- xcode 重新来过openssl项目历程
- C语言Windows程序设计-第三天-属于自己的窗口
- 联想服务器自动关机_联想电脑设置自动关机
- Word 如何取消自动编号
- 3717 bLue的文件查找器
- c语言printf小数乘整数,如何将小数化为整数
- Centos安装Wordpress
- WINDOWS渗透与提权总结(2)
- 深挖用户需求,只需要这三步就够了!
- 3dsmax UVW展开,然后在 BodyPaint 3D 中进行绘制
- 详解SQL中几种常用的表连接方式!
- 【分享】后厂村鲜为人知的另一面
- 机器学习作业2编程作业(python):Logistic Regression
热门文章
- sqlserver2000与sqlserver2005驱动与url的区别
- 长春理工大学计算机学院转专业,长春理工大学优秀本科学生转专业面试考核方案.PDF...
- js ---- 对象去重
- Mac----已被macOS使用
- java word另存为_Java 网页html转为word并保存为doc文件
- 5g理论速度_快看看 5G 的实际网速,失望还是兴奋?
- java gc日志乱码_gc原理以及gc日志剖析
- echarts横轴展示不全使用滚动条(dataZoom)的方法
- mac obs 录屏黑屏_有了它,我把其他录屏软件都卸载了!
- 使用git上传项目到github