数据库服务器 之 Postgresql备份和恢复_百度文库_第1页
数据库服务器 之 Postgresql备份和恢复_百度文库_第2页
数据库服务器 之 Postgresql备份和恢复_百度文库_第3页
数据库服务器 之 Postgresql备份和恢复_百度文库_第4页
数据库服务器 之 Postgresql备份和恢复_百度文库_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库服务器之 Postgresql备份和恢复您是否遇到过因为不小心而删除了某个数据库表,或者是存放数据库的磁盘损坏了的情况呢?如果碰到这种情况,我相信您会觉得非常的沮丧,因为您努力了几个星期的工作成果可能就付之东流了。和任何包含珍贵数据的东西一样,PostgreSQL数据库也应该经常备份。如果您将数据存放在 PostgreSQL 表中,您就可以定时的进行数据库备份,从而避免发生上面的悲剧。PostgreSQL 自带有内置工具来执行备份工作,而且在系统出现损坏或是意外时,您可以通过这些工具进行“回滚”,并通过以前保存的快照将系统恢复到其初始的状态。1. 综述;PostgreSQL数据库从备份

2、PostgreSQL 数据有三种完全不同的方法:SQL 转储文件系统级别备份在线备份每种备份都有自己的优点和缺点,下面主要介绍SQl转储的方法;2. 数据备份;SQL 转储的方法是创建一个文本文件,这个文本里面都是 SQL 命令,当把这个文件回馈给服务器时,将重建与转储时状态一样的数据库。2.1 pg_dump;PostgreSQL 自带的内置备份工具叫做 pg_dump。这个工具是通过一系列的SQL语句读取某个指定的数据库并复制其中的内容,以它作为快照并用于日后的数据恢复。客户端到服务器端的连接是用于执行备份工作。这些备份文件就是前面所讲的快照并可以用于日后的数据恢复。而保证客户端与服务器端

3、的连接是执行备份所必需的。这条命令的基本用法是:pg_dump dbname outfile注:在进行上述工作之前,首先请确保您具有登录到服务器并访问您将要备份的数据库或表的权限。您可以通过使用PostgreSQL 命令行客户端psql,进行服务器登录。在客户端中输入主机名(-h,用户名(-u和密码(-p,以及数据库名,然后就可以校验您是否被授权访问。使用 pg_dump 非常的简单只需要在命令提示符后面输入将要导出的数据库名就可以进行备份工作了,如下例所示(根据您自己的安装路经更改PostgreSQL 路径:xiaopxiaop-laptop:$ /usr/lib/postgresql/8.

4、2/bin/pg_dump -D -h localhost -U xiaop(用户名 mydb(数据库名称 mydb.bak/ /C:Program FilesPostgreSQL8.2binpg_dump -hlocalhost -Upostgres tenantinfo c:t.dumpC:Program FilesPostgreSQL8.2bin/ /通过上面的命令就会创建一个名为 mydb.bak的文件,文件中记录了用于恢复数据库的SQL 命令。正如您所见,pg_dump 把结果输出到标准输出。我们下面就可以看到这样做有什么好处。pg_dump 是一个普通的 PostgreSQL 客户

5、端应用(尽管是个相当聪明的东西。这就意味着您可以从任何可以访问该数据库的远端主机上面进行备份工作。但是请记住 pg_dump 不会以任何特殊权限运行。具体说来,就是它必须要有您想备份的表的读权限,因此,实际上您几乎总是要成为数据库超级用户。要声明 pg_dump 应该以哪个用户身份进行联接,使用命令行选项 -h host 和 -p port。缺省主机是本地主机或您的环境变量PGHOST声明的值。类似,缺省端口是环境变量PGPORT 或(如果它不存在的话编译好了的缺省值。(服务器通常有相同的缺省,所以还算方便。和任何其他 PostgreSQL 客户端应用一样, pg_dump 缺省时用与当前操作

6、系统用户名同名的数据库用户名进行联接。要覆盖这个名字,要么声明 -U 选项,要么设置环境变量PGUSER。请注意 pg_dump 的联接也和普通客户应用一样要通过客户认证机制。由 pg_dump 创建的备份在内部是一致的,也就是说,在pg_dump运行的时候对数据库的更新将不会被转储。 pg_dump 工作的时候并不阻塞其他的对数据库的操作。(但是会阻塞那些需要排它锁的操作,比如 VACUUM FULL。注: 如果您的数据库结构依赖于 OID (比如说用做外键,那么您必须告诉 pg_dump 把 OID 也倒出来。要倒 OID,可以使用 -o 命令行选项。缺省时也不会转储大对象。如果您使用大对

7、象,请参考 pg_dump 的命令手册页。2.2 pg_dumpall;如果您希望对整个系统中所有的数据库进行备份的话(而不是只对某一个数据库进行备份,您可以使用命令pg_dumpall 而不是pg_dump。执行这个命令可以对PostgreSQL 所能识别的所有的数据库(包括其自身的系统数据库备份到一个文件中。下面给出了一个使用实例:xiaopxiaop-laptop:$ /usr/lib/postgresql/8.2/bin/pg_dumpall -D -h localhost -U xiaop(用户名 all.bak这样就会将localhost的所有数据库备份到all.bak文件中了;2

8、.3 计划任务;为了保证您的备份时刻保持更新,您可以通过往cron table中加入pg_dump或者是pg_dumpall命令来定期执行备份工作。这里给出了两个cron entries的例子。第一个是在每天凌晨3点对test数据库进行备份,而第二个是在每个星期五的晚上9点对所有的数据库进行备份:xiaopxiaop-laptop:$ 0 3 * * * /usr/lib/postgresql/8.2/bin/pg_dump -D -h localhost -U xiaop(用户名 mydb(数据库名称 /home/xiaop/mydb.bak0 21 * *xiaopxiaop-laptop

9、:$ 5 /usr/lib/postgresql/8.2/bin/pg_dumpall -D -h localhost -U xiaop(用户名 /home/xiaop/all.bak3. 从转储中恢复3.1 用pg_dump恢复;从备份中恢复数据的工作比执行备份甚至更简单您所要做的就是通过执行备份文件中的SQL命令来对数据库进行恢复。如果您是使用pg_dump对某一个数据库进行了备份,那么备份中就会有CREATE TABLE 的语句来对源表进行复制。当然,您首先要新创建一个空数据库来存放这些数据表。您可以使用createdb 这个工具来完成这一步工作,这个工具也是PostgreSQL 套件中

10、的一部分:xiaopxiaop-laptop:$ /usr/lib/postgresql/8.2/bin/createdb mydb(数据库名称现在您就可以执行备份文件中的SQL命令来对数据库进行恢复了, pg_dump 生成的文本文件可以由 psql 程序读取。从转储中恢复的常用命令格式是:psql dbname infile如下例所示:xiaopxiaop-laptop:$ /usr/lib/postgresql/8.2/bin/psql -h localhost -U xiaop(用户名 -d mydb(数据库名称 mydb.bak3.2 用pg_dumpall恢复;如果您是使用pg_d

11、umpall对所有的数据库进行备份的,就没有必要先新建一个数据库,因为备份文件中已经包含了完成CREATE DATABASE工作的相关的调用。在这里,只需要在psql 命令行客户端中输入对应的备份文件就可以了,而不需要指定目标数据库:xiaopxiaop-laptop:$ /usr/lib/postgresql/8.2/bin/psql -h localhost -U xiaop(用户名 mydbBACK.gz4.2 恢复大数据库;用下面命令恢复:xiaopxiaop-laptop:$ createdb mydbNEW(新数据库名xiaopxiaop-laptop:$ gunzip -c my

12、dbBACK.gz | psql mydbNEW或者xiaopxiaop-laptop:$ cat mydbBACK.gz | gunzip | psql mydbNEW4.3 使用 split;4.3.1 分割;split 命令允许您用下面的方法把输出分解成操作系统可以接受的大小。有关split的用法可以在文件的切分split和结合工具cat 介绍中查询。比如,让每个块大小为 1 兆字节:xiaopxiaop-laptop:$ pg_dump dbname | split -b 1m - filename4.3.2 合并;分割后可以用下面的命令恢复:xiaopxiaop-laptop:$createdb dbnamexiaopxiaop-lapto

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论