postgreSQL数据库备份与恢复技术比较

备份 PostgreSQL 数据有三种完全不同的方法:

·         SQL 转储

·         文件系统级别备份

·         在线备份

一、    SQL 转储

SQL转储是使用pg_dump应用工具将当前的数据块导出为SQL文件;当数据库需要重建时,将该SQL文件回馈给服务器,恢复数据库为重建时的数据库状态。

当备份整个数据库集群的时候可以使用pg_dumpall
程序, pg_dumpall 备份给出的集群中的每个数据库,同时还确保保留象用户和组这样的全局数据状态。

当数据库中表的大小大于系统允许的最大文件大小时,需要使用标准的UNIX工具解决该问题。

不足

要获得数据库的超级用户权限,在数据库恢复时仍然要求这些权限的存在。

在pg_dump运行的时候对数据库的更新将不会被转储。

二、   
文件系统级别的备份

直接拷贝PostgreSQL数据库中用于存放数据库数据的文件。

方式

“一致快照方式”

使用rsync执行文件系统备份

不足

在进行备份时必须关闭数据库

数据库分布在多个文件系统上时,只有关闭数据库足够长的时间才能完整备份

转储后的文件较大

三、    在线备份以及即时恢复

这种方式组合了系统备份与WAL文件的备份,当需要恢复时,会先恢复文件备份然后重放WAL文件。

优点

初始时并不需要完美的一致备份,因此不需要使用快照功能,tar或类似归档工具即可实现备份;

可以通过连续的备份WAL文件归档来实现连续的数据库备份;

可以将数据库恢复到开始备份以来的任意时刻的状态;

要求

只支持整个数据库集群的恢复;

要求大量的归档存储;

操作

1、设置WAL归档

1)创建 WAL
备份目录,比如:d:\pg_xlog_archive

2)修改 postgresql.conf
中的 archive_command 设置,比如:

archive_command = ‘copy "%p" d:\\pg_xlog_archive\\%f‘

注:%p
要用双引号括起来处理安装目录中有空格的情况。

archive_mode = on

wal_level=‘archive‘

在postgresql.conf
文件里用archive_command 声明shell命令用于将一个完整的段文件拷贝到指定位置,在该shell命令中需要用%p表示要归档的文件的绝对路径,
%f表示文件名。

eg:archive_command = ‘cp -i %p /mnt/server/archivedir/%f </dev/null‘

归档命令要在运行PostgreSQL服务器的同一个用户的权限下执行。另外,当且仅当归档命令运行成功时它才返回0。

注意:尽管 WAL 归档允许恢复任何对PostgreSQL
数据库的数据做的修改,在最初的基础备份之后,它不会恢复对配置文件的修改(也就是说,postgresql.conf,pg_hba.conf
和 pg_ident.conf),因为这些文件都是手工编辑的,而不是通过 SQL
操作来编辑的。所以你可能会需要把你的配置文件放在一个日常文件系统备份过程即可处理到的地方。

2、进行基础备份

1)确保 WAL
归档打开并且可以运转。

2)以数据库超级用户身份连接到数据库,发出命令 SELECT pg_start_backup(‘label‘);

这里的 label
是任意你想使用的这次备份操作的唯一标识。(一个好习惯是使用你想把备份转储文件放置的目的地的全路径。) pg_start_backup
用你的备份的信息,在你的集群目录里,创建一个备份标签文件,叫做 backup_label。

3)执行备份,使用任何方便的文件系统工具,比如 tar
或者 cpio。这些操作过程中既不需要关闭数据库,也不希望关闭数据库的操作。

4)再次以数据库超级用户身份连接数据库,然后发出命令 SELECT pg_stop_backup();

5)只要在备份过程中使用的 WAL
段文件作为正常数据库活动的一部分备份完毕,你的备份工作就完成了。

注意:要保证你的备份转储包括所有数据库集群目录里的文件(比如,/usr/local/pgsql/data)以及表空间。

时间: 2024-08-08 09:25:39

postgreSQL数据库备份与恢复技术比较的相关文章

深入oracle 12c数据库备份与恢复(优化RMAN性能、Oracle flashback技术)

课程讲师:小流老师 课程分类:Oracle 适合人群:高级 课时数量:15课时 更新程度:完成 服务类型:C类(普通服务类课程) 用到技术:oracle 涉及项目:oracle 12c数据库备份与恢复 需要更多相关资料可以联系 Q2748165793 课程提纲 第一讲:介绍备份和恢复相关操作 备份和恢复的目标 备份和恢复的解决方案 Oracle flashback技术 第二讲:开始RMAN操作和RMAN体系架构 RMAN的环境 RMAN Channels RMAN Repository RMAN

广州postgresql用户会技术交流会小记 2015-9-19

广州postgresql用户会技术交流会小记  2015-9-19 今天去了广州postgresql用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用postgresql -X2的情况 第二个讲师介绍了postgresql里面的一些执行计划分析 我个人比较关注第一个session,因为涉及到真正的应用案例 网上有对postgresql -X2的简短介绍,我先转载过来 转载:http://francs3.blog.163.com/blog/static/405767272

PostgreSQL数据库内核分析 笔记(这本书没有怎么很好的看,主要就是一些数据结构、概念和流程的文字介绍)

PostgreSQL数据库内核分析 跳转至: 导航. 搜索 目录 1系统概述 2体系结构 3存储管理 4索引 5查询编译 6查询执行 7事务处理与并发控制 8数据库安全 9附录A 用Eclipse开发和调试 系统概述 初始化数据库:./initdb --no-locale -D ../data ./pg_ctl start -D ../data 数据库命令:initdb createuser dropuser createdb dropdb pg_dump pg_restore pg_ctl v

PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库

最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQL数据库,希望大家多多提意见. 1.PostgreSQL数据库介绍 PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL.它具有很多不错的特点: 开源:PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 B

AVAYA AEP运维之PostgreSQL数据库相关

由于AEP EPM所有相关的报表数据(应用运行日志,呼叫清单,会话清单),配置信息等都存在本地PostgreSQL上,了解PostgreSQL的相关基本使用方法,有助于日常运维能力的提升.本篇主要总结如何开启本地登陆,开启远端登陆,基本命令,数据备份和清理. 如何开启本地和远端登陆 在EPM安装的过程中,会把PostgreSQL也一并安装掉,过程中会提示输入用户名postgres的密码,以及创建一个报表用户.当时当你本地使用PostgreSQL去登陆数据库时,始终登陆不上:通过PostgreSQ

postgresql数据库的数据导出

一.pg_dump的用法:数据库的导入导出是最常用的功能之一,每种数据库都提供有这方面的工具,例如Oracle的exp/imp,Informix的dbexp/dbimp,MySQL的mysqldump,而PostgreSQL提供的对应工具为pg_dump和pg_restore.pg_dump是用于备份PostgreSQL数据库的工具.它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问.转储格式可以是一个脚本或者归档文件.转储脚本的格式是纯文本,包含许多SQL命令,这些

PPAS数据库备份与恢复

PPAS数据库备份不同于普通的Postgresql数据库的备份,因为PPAS数据库是兼容Oracle数据库的,所以会涉及到同义词.包.存储过程等,这个时候用Postgresql社区的备份与恢复工具时,在恢复时上述提及到的同义词等就不会恢复过去.而且,PPAS数据库因为支持Clob字符大对象类型等,而Postgresql数据库不支持,在恢复的过程也会因为这个原因而导致某些存储过程或者表创建失败.所以,这边如果在本地恢复的话,一定要安装PPAS数据库服务器(ppasmeta),用PPAS数据库自带的

Oracle 10g数据库备份与恢复操作手册

Oracle 10g数据库备份与恢复操作手册 前言 文档目的 备份与恢复是数据库管理中最重要的方面之一.如果数据库崩溃却没有办法恢复它,那么对企业造成的毁灭性结果可能会是数据丢失.收入减少.客户不满等.不管公司是使用单个数据库还是多个数据库来存储数百  GB或    TB的数据,它们都有一个共同点,即需要制订一个备份与恢复方案来备份重要数据并使自身免于灾难.要制定一个适合自己公司情况的合理的备份与恢复方案,就必须熟悉备份与恢复的方法和操作. 为了给 Oracle DBA和相关技术人员提供一个参考

C#访问PostGreSQL数据库的方法 http://www.jb51.net/article/35643.htm

这次的项目中的一个环节要求我把PostGreSQL数据取出来,然后放到SqlServer里,再去处理分析. http://www.jb51.net/article/35643.htm - 我对PostGreSQL只是一知半解,记录这个过程是希望如果以后微软技术方向的人遇到类似的需求,可以有个比较直接的的参考. 在不熟悉的知识领域里,总是有搜索引擎可以帮到我. 初步了解PostGreSQL数据库及数据形态 首先我想看看PostGreSQL的数据库以及我想要获取的数据形态是什么样子的,Linux和P