pg_dump 是一个用于备份PostgreSQL数据库的工具.
   该工具生成的转储格式可以分为两种,
   脚本  :     其中脚本格式是包含许多SQL命令的纯文本格式  (常用)
   归档文件:  需要重建数据库就必须和pg_restore工具一起使用
   下面按照这两种方式进行备份恢复操作。
 
环境简介:

操作对象:数据库为xzfb; 表lottu,lottu01

 
[postgres@oracle2 ~]$ psql -U lottu -d xzfb
psql (9.5.0)
Type "help" for help.
 
xzfb=> \d+
                      List of relations
 Schema |  Name   | Type  | Owner |    Size    | Description 
--------+---------+-------+-------+------------+-------------
 public | lottu   | table | lottu | 8192 bytes | 
 public | lottu01 | table | lottu | 8192 bytes | 
(2 rows)
 
xzfb=> select * from lottu;
 v_id | v_name  
------+---------
 1001 | lottu
 1002 | rax
 1003 | vincent
 1003 | vincent
(4 rows)
 
xzfb=> select * from lottu01;
  id  
------
 1001
 1002
(2 rows)
 
1.  生成脚本方式来备份,恢复

备份整个数据库xzfb   
    先介绍-c参数; 相当于是对对象先删除;后创建的功效。

 
[postgres@oracle2 ~]$ pg_dump -c -f backup/xzfb.sql xzfb   -- 可以替换  pg_dump -c xzfb > ./backup/xzfb.sql 
[postgres@oracle2 ~]$ ll
total 36
drwxrwxr-x  2 postgres postgres 4096 Jan 28 14:35 backup
-rwxrwxr-x  1 postgres postgres 2273 Jan 27 14:27 config.sh
drwx------ 19 postgres postgres 4096 Jan 27 16:28 data
drwxrwxr-x  2 postgres postgres 4096 Jan 28 00:00 log
-rwxrwxr-x  1 postgres postgres  930 Jan 27 16:45 lottu.sh
-rw-rw-r--  1 postgres postgres 5087 Jan 27 16:40 master.log
-rwxrwxr-x  1 postgres postgres  797 Jan 27 12:57 remove.sh
-rwxrwxr-x  1 postgres postgres 2043 Jan 27 16:35 start.sh
[postgres@oracle2 ~]$ cd backup
[postgres@oracle2 backup]$ ll
total 8
-rw-rw-r-- 1 postgres postgres 1571 Jan 28 14:35 xzfb01.sql
-rw-rw-r-- 1 postgres postgres 1964 Jan 28 14:41 xzfb.sql
 

恢复整个数据库xzfb  ;由于备份的是脚本;可以直接psql执行即可。

 
[postgres@oracle2 ~]$ dropdb -U postgres xzfb
[postgres@oracle2 ~]$ createdb -U postgres -O lottu -D lottu -e xzfb
CREATE DATABASE xzfb OWNER lottu TABLESPACE lottu;
[postgres@oracle2 ~]$ psql -U lottu -d xzfb
psql (9.5.0)
Type "help" for help.
 
xzfb=> \d
No relations found.

从这里可以看出xzfb库已经删除了已创建;里面是没有表关联现在执行 psql -U lottu -d xzfb < ./backup/xzfb.sql 进行恢复

 
[postgres@oracle2 backup]$ psql -U lottu -d xzfb < xzfb.sql
 

进入数据库可以看到数据已经回来了

[postgres@oracle2 backup]$ psql -U lottu -d xzfb
psql (9.5.0)
Type "help" for help.
 
xzfb=> \d
        List of relations
 Schema |  Name   | Type  | Owner 
--------+---------+-------+-------
 public | lottu   | table | lottu
 public | lottu01 | table | lottu
(2 rows)
 
xzfb=> select * from lottu;
 v_id | v_name  
------+---------
 1001 | lottu
 1002 | rax
 1003 | vincent
 1003 | vincent
(4 rows)
 
对 表的数据也可以这样恢复;这里不简介了;大家备份的脚本可以查看下;里面就是在psql能运行的脚本。
 
2. 备份格式为 归档文件的备份,恢复
 
  • 使用dump格式备份和恢复
 首先介绍下

参数-F: p(plain): 纯文本格式的SQL脚本文件(缺省)。c(custom): 输出适合于pg_restore的自定义归档格式。 这是最灵活的格式,它允许对装载的数据和对象定义进行重新排列。这个格式缺省的时候是压缩的。t(tar): 输出适合于 pg_restore的tar归档文件。使用这个归档允许在恢复数据库时重新排序和/或把数据库对象排除在外。同时也可以在恢复的时候限制对哪些数据进行恢复。

 
[postgres@oracle2 ~]$ pg_dump -U postgres -Fc xzfb > ./backup/xzfb02.dump             --备份
[postgres@oracle2 ~]$ dropdb -U postgres xzfb                                                          --删库操作
[postgres@oracle2 ~]$ createdb -U postgres -O lottu -D lottu -e xzfb                             --建库操作
[postgres@oracle2 ~]$ pg_restore -U postgres -d xzfb ./backup/xzfb02.dump > ./backup/dump01.log 2>&1                --恢复操作
[postgres@oracle2 ~]$ psql -U lottu -d xzfb
psql (9.5.0)
Type "help" for help.
 
xzfb=> \d
        List of relations
 Schema |  Name   | Type  | Owner 
--------+---------+-------+-------
 public | lottu   | table | lottu
 public | lottu01 | table | lottu
(2 rows)
 
xzfb=> select * from lottu;
 v_id | v_name  
------+---------
 1001 | lottu
 1002 | rax
 1003 | vincent
 1003 | vincent
(4 rows)
恢复OK;恢复详细步骤看./backup/dump01.log内容;
 
  • 使用tar格式备份和恢复
跟上面备份,恢复没什么两样
     [postgres@oracle2 ~]$ pg_dump -U postgres -Ft xzfb > ./backup/xzfb03.tar  
     [postgres@oracle2 ~]$ pg_restore -U postgres -d xzfb ./backup/xzfb03.tar  > ./backup/dump02.log 2>&1
 
参考文献:对pg_dump参数详解:

pg_dump 备份与恢复的简单操作的更多相关文章

  1. Linux下MySQL的简单操作

    Linux下MySQL的简单操作 更改mysql数据库root的密码 首次进入数据库是不用密码的: [root@localhost ~]# /usr/local/mysql/bin/mysql -ur ...

  2. x01.MagicCube: 简单操作

    看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原. 为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下: protected o ...

  3. js简单操作Cookie

    贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...

  4. GitHub学习心得之 简单操作

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 本文对Github的基本操作进行了总结, 主要基于以下文章: http://gitre ...

  5. Linq对XML的简单操作

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  6. Linux 中 Vi 编辑器的简单操作

    Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi  filename //打开或新 ...

  7. python(pymysql)之mysql简单操作

    一.mysql简单介绍 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库 ...

  8. ZooKeeper系列3:ZooKeeper命令、命令行工具及简单操作

    问题导读1.ZooKeeper包含哪些常用命令?2.通过什么命令可以列出服务器 watch 的详细信息?3.ZooKeeper包含哪些操作?4.ZooKeeper如何创建zookeeper? 常用命令 ...

  9. ORACLE的安装与网页版创建表空间的简单操作以及PLsql的简单操作

    1.oracle的安装: 安装简单易学,在这里不做解释.下载看装包后耐心等待,注意安装目录不要有中文字符,尽量按照指定目录进行安装.安装完成后会占用有大约5g的内存. 如果要卸载oracle,需要用其 ...

随机推荐

  1. jQuery.serialize()函数

    jQuery.serialize()函数用于序列化一组表单元素,将表单内容编码为用于提交的字符串. jQuery.serialize()函数常用于将表单内容序列化,以便用于AJAX提交. 该函数主要根 ...

  2. HttpwebClient的四种请求方式

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.      本文旨在发布代码,供自己参考,也供大家参考,谢谢. 正题: Ht ...

  3. Newtonsoft.Json的使用

    JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.和 XML 一样,JSON 也是基于纯文本的数据格式 ...

  4. 转:MIME(Multipurpose Internet Mail Extensions)类型

    MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器 ...

  5. 【Origin】 破阵子-未可留 征人调

    几朝岁月,悠悠,容颜改,两鬓衰,可恨荣光不留! 一生事,忧心畔,可怜惶惶,不拿年岁当缠头: 只把扑朔往往,人生几回首: 等闲识得料峭处,一腔泪流: 曾记否,三十功名尘与土,不可解忧愁: 青春换得明日花 ...

  6. Java基础(56):Java---Assertion的试用(华为OJ里的Java题目的用例检测就是用的断言)

    一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,它是该版本在Java语言方面最大的革新. 从理论上来说,通过 assertion方式可以证明程 ...

  7. Java基础(41):Java中集合中需要注意的几个要点(关于Collection与Map)

    同步性     Vector是同步的.这个类中的一些方法保证了Vector中的对象是线程安全的.而ArrayList则是异步的,因此ArrayList中的对象并 不是线程安全的.因为同步的要求会影响执 ...

  8. PHP-字符串过长不用担心

    字符串过长可以用定界符: >>>GOD ................巨长务必的字符串 GOD;

  9. 开源日志技术log4j

    老师的总结: 日志:除了能记录异常信息,还可以记录程序正常运行时的关键信息. 使用log4j来进行日志文件记录经典步骤: 001.在项目中创建一个lib文件夹,然后将下载好的jar包copy到该文件夹 ...

  10. bzoj4238 电压

    首先先直接对图进行二染色,dfs染完色后,有的边为搜索树边,有的为非树边,当非树边连接的两头的点为异色的时候,那么很明显这条非树边和树边构成的环上的边必然不可能成为答案:如果非树边的两端的点同色,那么 ...