- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库服务器 之 Postgresql备份和恢复.txt38当乌云布满天空时,悲观的人看到的是“黑云压城城欲摧”,乐观的人看到的是“甲光向日金鳞开”。无论处在什么厄运中,只要保持乐观的心态,总能找到这样奇特的草莓。数据库服务器 之 Postgresql备份和恢复
您是否遇到过因为不小心而删除了某个数据库表,或者是存放数据库的磁盘损坏了的情况呢?如果碰到这种情况,我相信您会觉得非常的沮丧,因为您努力了几个星期的工作成果可能就付之东流了。和任何包含珍贵数据的东西一样,PostgreSQL数据库也应该经常备份。如果您将数据存放在 PostgreSQL 表中,您就可以定时的进行数据库备份,从而避免发生上面的悲剧。PostgreSQL 自带有内置工具来执行备份工作,而且在系统出现损坏或是意外时,您可以通过这些工具进行“回滚”,并通过以前保存的快照将系统恢复到其初始的状态。
1. 综述;
PostgreSQL数据库从备份 PostgreSQL 数据有三种完全不同的方法:
SQL 转储
文件系统级别备份
在线备份
每种备份都有自己的优点和缺点,下面主要介绍SQl转储的方法;
2. 数据备份;
SQL 转储的方法是创建一个文本文件,这个文本里面都是 SQL 命令,当把这个文件回馈给服务器时,将重建与转储时状态一样的数据库。
2.1 pg_dump;
PostgreSQL 自带的内置备份工具叫做 pg_dump。这个工具是通过一系列的SQL语句读取某个指定的数据库并复制其中的内容,以它作为快照并用于日后的数据恢复。客户端到服务器端的连接是用于执行备份工作。这些备份文件就是前面所讲的快照并可以用于日后的数据恢复。而保证客户端与服务器端的连接是执行备份所必需的。这条命令的基本用法是:
pg_dump dbname outfile
注:在进行上述工作之前,首先请确保您具有登录到服务器并访问您将要备份的数据库或表的权限。您可以通过使用PostgreSQL 命令行客户端——psql,进行服务器登录。在客户端中输入主机名(-h),用户名(-u)和密码(-p),以及数据库名,然后就可以校验您是否被授权访问。
使用 pg_dump 非常的简单——只需要在命令提示符后面输入将要导出的数据库名就可以进行备份工作了,如下例所示(根据您自己的安装路经更改PostgreSQL 路径):
xiaop@xiaop-laptop:~$ /usr/lib/postgresql/8.2/bin/pg_dump -D -h localhost -U xiaop(用户名) mydb(数据库名称) mydb.bak
////////////////////////////////////////////////////////////////////////////////////////////////
C:\Program Files\PostgreSQL\8.2\binpg_dump -hlocalhost -Upostgres tenantinfo c:\t.dump
C:\Program Files\PostgreSQL\8.2\bin
////////////////////////////////////////////////////////////////////////////////////////////////
通过上面的命令就会创建一个名为 mydb.bak的文件,文件中记录了用于恢复数据库的SQL命令。
正如您所见,pg_dump 把结果输出到标准输出。 我们下面就可以看到这样做有什么好处。
pg_dump 是一个普通的 PostgreSQL 客户端应用(尽管是个相当聪明的东西。)这就意味着您可以从任何可以访问该数据库的远端主机上面进行备份工作。 但是请记住 pg_dump 不会以任何特殊权限运行。具体说来, 就是它必须要有您想备份的表的读权限,因此,实际上您几乎总是要成为数据库超级用户。
要声明 pg_dump 应该以哪个用户身份进行联接,使用命令行选项 -h host 和 -p port。缺省主机是本地主机或您的环境变量PGHOST声明的值。 类似,缺省端口是环境变量PGPORT或(如果它不存在的话)编译好了的缺省值。(服务器通常有相同的缺省,所以还算方便。)
和任何其他 PostgreSQL 客户端应用一样, pg_dump 缺省时用与当前操作系统用户名同名的数据库用户名进行联接。要覆盖这个名字,要么声明 -U 选项, 要么设置环境变量PGUSER。 请注意 pg_dump 的联接也和普通客户应用一样要通过客户认证机制。
由 pg_dump 创建的备份在内部是一致的, 也就是说,在pg_dump运行的时候对数据库的更新将不会被转储。
文档评论(0)