欢迎来到天天文库
浏览记录
ID:32608460
大小:30.50 KB
页数:2页
时间:2019-02-13
《备份和恢复PostgreSQL数据库.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、备份和恢复PostgreSQL数据库你是否遇到过因为不小心而删除了某个数据库表,或者是存放数据库的磁盘损坏了的情况呢?如果碰到这种情况,我相信你会觉得非常的沮丧,因为你努力工作了几个星期的成果可能就付之东流了。但是,你也不必每次都陷入这种困境。如果你将数据存放在PostgreSQL表中,你就可以定时的进行数据库备份,从而避免上述悲剧的发生。PostgreSQL自带有内置工具来执行备份工作,而且在系统出现损坏或是意外时,你可以通过这些工具进行“回滚”,并通过以前保存的快照将系统恢复到其初始的状态。数据备份Postgre
2、SQL自带的内置备份工具叫做pg_dump。这个工具是通过一系列的SQL语句读取某个指定的数据库并复制其中的内容,以它作为快照并用于日后的数据恢复。客户端到服务器端的连接是用于执行备份工作。这些备份文件就是前面所讲的快照并可以用于日后的数据恢复。而保证客户端与服务器端的连接是执行备份所必需的。注意:在进行上述工作之前,首先请确保你具有登录到服务器并访问你将要备份的数据库或表的权限。你可以通过使用PostgreSQL命令行客户端——psql,进行服务器登录。在客户端中输入主机名(-h),用户名(-u)和密码(-p),以
3、及数据库名,然后就可以校验你是否被授权访问。使用pg_dump非常的简单——只需要在命令提示符后面输入将要导出的数据库名就可以进行备份工作了,如下例所示(根据你自己的安装路经更改PostgreSQL路径):$/usr/local/pgsql/bin/pg_dump-D-hlocalhost-Upgsqltest>test.bak通过上面的命令就会创建一个名为test.bak的文件,文件中记录了用于恢复数据库的SQL命令。在这个文件中你可以看到类似于下面这个例子中所列出的内容:----Name:pets;Type:TA
4、BLE;Schema:public;Owner:root;Tablespace:--CREATETABLEpets(speciescharactervarying,namecharactervarying);ALTERTABLEpublic.petsOWNERTOroot;----DataforName:pets;Type:TABLEDATA;Schema:public;Owner:root--INSERTINTOpets(species,name)VALUES('dog','Sparky');INSERTINTOp
5、ets(species,name)VALUES('cat','Tabitha');如果你希望对整个系统中所有的数据库进行备份的话(而不是只对某一个数据库进行备份),你可以使用命令pg_dumpall而不是pg_dump。执行这个命令可以对PostgreSQL所能识别的所有的数据库(包括其自身的系统数据库)备份到一个文件中。下面给出了一个使用实例:$/usr/local/pgsql/bin/pg_dumpall-D-hlocalhost-Upgsql>all.bak为了保证你的备份时刻保持更新,你可以通过往cronta
6、ble中加入pg_dump或者是pg_dumpall命令来定期执行备份工作。这里给出了两个cronentries的例子。第一个是在每天凌晨3点对test数据库进行备份,而第二个是在每个星期五的晚上9点对所有的数据库进行备份:03***/usr/local/pgsql/bin/pg_dump-D-hlocalhost-Upgsqltest>/disk2/test.bak021**5/usr/local/pgsql/bin/pg_dumpall-D-hlocalhost-Upgsql>/disk2/all.bak数据恢复
7、从备份中恢复数据的工作比执行备份甚至更简单——你所要做的就是通过执行备份文件中的SQL命令来对数据库进行恢复。如果你是使用pg_dump对某一个数据库进行了备份,那么备份中就会有CREATETABLE的语句来对源表进行复制。当然,你首先要新创建一个空数据库来存放这些数据表。你可以使用createdb这个工具来完成这一步工作,这个工具也是PostgreSQL套件中的一部分:$/usr/local/pgsql/bin/createdbrestored现在你就可以执行备份文件中的SQL命令来对数据库进行恢复了,如下例所示:
8、$/usr/local/pgsql/bin/psql-hlocalhost-Upgsql-drestored
此文档下载收益归作者所有