2022年数据库服务器之Postgresql备份和恢复 2.pdf

上传人:Q****o 文档编号:25945350 上传时间:2022-07-14 格式:PDF 页数:6 大小:49.71KB
返回 下载 相关 举报
2022年数据库服务器之Postgresql备份和恢复 2.pdf_第1页
第1页 / 共6页
2022年数据库服务器之Postgresql备份和恢复 2.pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年数据库服务器之Postgresql备份和恢复 2.pdf》由会员分享,可在线阅读,更多相关《2022年数据库服务器之Postgresql备份和恢复 2.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据库服务器之 Postgresql备份和恢复 .txt38当乌云布满天空时,悲观的人看到的是 “黑云压城城欲摧” ,乐观的人看到的是“甲光向日金鳞开”。无论处在什么厄运中,只要保持乐观的心态,总能找到这样奇特的草莓。数据库服务器之 Postgresql备份和恢复您是否遇到过因为不小心而删除了某个数据库表,或者是存放数据库的磁盘损坏了的情况呢?如果碰到这种情况,我相信您会觉得非常的沮丧,因为您努力了几个星期的工作成果可能就付之东流了。和任何包含珍贵数据的东西一样,PostgreSQL 数据库也应该经常备份。如果您将数据存放在 PostgreSQL 表中,您就可以定时的进行数据库备份,从而避免发

2、生上面的悲剧。 PostgreSQL 自带有内置工具来执行备份工作,而且在系统出现损坏或是意外时,您可以通过这些工具进行“回滚”,并通过以前保存的快照将系统恢复到其初始的状态。1. 综述 ; PostgreSQL 数据库从备份 PostgreSQL 数据有三种完全不同的方法:SQL 转储文件系统级别备份在线备份每种备份都有自己的优点和缺点,下面主要介绍SQl 转储的方法 ; 2. 数据备份 ; SQL 转储的方法是创建一个文本文件,这个文本里面都是 SQL 命令,当把这个文件回馈给服务器时,将重建与转储时状态一样的数据库。2.1 pg_dump; PostgreSQL 自带的内置备份工具叫做

3、pg_dump。 这个工具是通过一系列的SQL语句读取某个指定的数据库并复制其中的内容,以它作为快照并用于日后的数据恢复。客户端到服务器端的连接是用于执行备份工作。这些备份文件就是前面所讲的快照并可以用于日后的数据恢复。而保证客户端与服务器端的连接是执行备份所必需的。这条命令的基本用法是:pg_dump dbname outfile 注:在进行上述工作之前,首先请确保您具有登录到服务器并访问您将要备份的数据库或表名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 -

4、- - - - - - - - 的权限。您可以通过使用PostgreSQL 命令行客户端psql ,进行服务器登录。在客户端中输入主机名(-h ) ,用户名( -u)和密码( -p ) ,以及数据库名,然后就可以校验您是否被授权访问。使用 pg_dump 非常的简单只需要在命令提示符后面输入将要导出的数据库名就可以进行备份工作了,如下例所示(根据您自己的安装路经更改PostgreSQL 路径) :xiaopxiaop-laptop:$ /usr/lib/postgresql/8.2/bin/pg_dump -D -h localhost -U xiaop( 用户名 ) mydb( 数据库名称

5、) mydb.bak / C:Program FilesPostgreSQL8.2binpg_dump -hlocalhost -Upostgres tenantinfo c:t.dump C:Program FilesPostgreSQL8.2bin / 通过上面的命令就会创建一个名为 mydb.bak的文件,文件中记录了用于恢复数据库的SQL命令。正如您所见,pg_dump 把结果输出到标准输出。我们下面就可以看到这样做有什么好处。pg_dump 是一个普通的 PostgreSQL 客户端应用 (尽管是个相当聪明的东西。) 这就意味着您可以从任何可以访问该数据库的远端主机上面进行备份工作。

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

7、PGUSER。请注意 pg_dump 的联接也和普通客户应用一样要通过客户认证机制。由 pg_dump 创建的备份在内部是一致的,也就是说,在pg_dump运行的时候对数据库的更新将不会被转储。 pg_dump 工作的时候并不阻塞其他的对数据库的操作。(但是会阻塞那些需要排它锁的操作,比如 VACUUM FULL 。 )注: : 如果您的数据库结构依赖于 OID (比如说用做外键) , 那么您必须告诉 pg_dump 把 OID 也倒出来。要倒 OID ,可以使用 -o 命令行选项。缺省时也不会转储大对象 。如果您使用大对象,请参考 pg_dump 的命令手册页。名师资料总结 - - -精品资

8、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 2.2 pg_dumpall; 如果您希望对整个系统中所有的数据库进行备份的话(而不是只对某一个数据库进行备份),您可以使用命令pg_dumpall 而不是 pg_dump 。执行这个命令可以对PostgreSQL 所能识别的所有的数据库(包括其自身的系统数据库)备份到一个文件中。下面给出了一个使用实例:xiaopxiaop-laptop:$ /usr/lib/postgresql/8.2/bin/pg_dum

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

10、dump -D -h localhost -U xiaop(用户名 ) mydb( 数据库名称 ) /home/xiaop/mydb.bak0 21 * * xiaopxiaop-laptop:$ 5 /usr/lib/postgresql/8.2/bin/pg_dumpall -D -h localhost -U xiaop( 用户名 ) /home/xiaop/all.bak 3. 从转储中恢复3.1 用 pg_dump恢复 ; 从备份中恢复数据的工作比执行备份甚至更简单您所要做的就是通过执行备份文件中的SQL命令来对数据库进行恢复。如果您是使用pg_dump对某一个数据库进行了备份,那么

11、备份中就会有CREATE TABLE 的语句来对源表进行复制。当然,您首先要新创建一个空数据库来存放这些数据表。您可以使用createdb 这个工具来完成这一步工作,这个工具也是PostgreSQL 套件中的一部分:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - xiaopxiaop-laptop:$ /usr/lib/postgresql/8.2/bin/createdb mydb(数据库名称 ) 现在您就可以执行备份文件中的

12、SQL命令来对数据库进行恢复了, pg_dump 生成的文本文件可以由 psql 程序读取。从转储中恢复的常用命令格式是: psql dbname infile 如下例所示:xiaopxiaop-laptop:$ /usr/lib/postgresql/8.2/bin/psql -h localhost -U xiaop(用户名) -d mydb(数据库名称 ) mydb.bak 3.2 用 pg_dumpall 恢复 ; 如果您是使用pg_dumpall 对所有的数据库进行备份的,就没有必要先新建一个数据库,因为备份文件中已经包含了完成CREATE DATABASE 工作的相关的调用。在这里

13、,只需要在psql命令行客户端中输入对应的备份文件就可以了,而不需要指定目标数据库:xiaopxiaop-laptop:$ /usr/lib/postgresql/8.2/bin/psql -h localhost -U xiaop(用户名 ) mydbBACK.gz 4.2 恢复大数据库 ; 用下面命令恢复:xiaopxiaop-laptop:$ createdb mydbNEW(新数据库名 ) xiaopxiaop-laptop:$ gunzip -c mydbBACK.gz | psql mydbNEW 或者xiaopxiaop-laptop:$ cat mydbBACK.gz | gu

14、nzip | psql mydbNEW 4.3 使用 split; 4.3.1 分割 ; split 命令允许您用下面的方法把输出分解成操作系统可以接受的大小。有关 split的用法可以在文件的切分split和结合工具cat 介绍中查询。比如,让每个块大小为 1 兆字节:xiaopxiaop-laptop:$ pg_dump dbname | split -b 1m - filename 4.3.2 合并 ; 分割后可以用下面的命令恢复:xiaopxiaop-laptop:$createdb dbname xiaopxiaop-laptop:$cat filename* | psql dbna

15、me 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 5. 关于本文 ; 有关 PostgreSQl 数据库备份和恢复的另外两个方法“文件系统级别的备份”和“在线备份”,我们以后再讨论,本文大部分资料都是参照中文文档,目的是让兄弟们查找方便一些,详细的东西在中文文档都有,多谢各位弟兄们指点: )6. 更新日志;7. 参考文档;PostgreSQL 8.1 中文文档名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁