注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

postgresql的备份和恢复  

2013-05-31 15:58:39|  分类: 数据库技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
postgresql的备份和恢复
这两天需要把postgresql的数据库备份一下,发现这个东西备份还真是不如SQL和ORACLE好使,不过一想是开源的,也就不要想那么多了,能备份就不错了。其实备份和恢复主要就是两个程序:
1、备份pg_dump.exe
pg_dump.exe -h localhost -p 5432 -U postgres  -F c -b -v -f d:\backuppath\backupfile.bak(备份路径)  irisApp(数据库名称)
说明:
pg_dump dumps a database as a text file or to other formats.

Usage:
  pg_dump [OPTION]... [DBNAME]

General options:
  -f, --file=FILENAME      output file name
  -F, --format=c|t|p       output file format (custom, tar, plain text)
  -i, --ignore-version     proceed even when server version mismatches
                           pg_dump version
  -v, --verbose            verbose mode
  -Z, --compress=0-9       compression level for compressed formats
  --help                   show this help, then exit
  --version                output version information, then exit

Options controlling the output content:
  -a, --data-only             dump only the data, not the schema
  -b, --blobs                 include large objects in dump
  -c, --clean                 clean (drop) schema prior to create
  -C, --create                include commands to create database in dump
  -d, --inserts               dump data as INSERT commands, rather than COPY
  -D, --column-inserts        dump data as INSERT commands with column names
  -E, --encoding=ENCODING     dump the data in encoding ENCODING
  -n, --schema=SCHEMA         dump the named schema(s) only
  -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)
  -o, --oids                  include OIDs in dump
  -O, --no-owner              skip restoration of object ownership
                              in plain text format
  -s, --schema-only           dump only the schema, no data
  -S, --superuser=NAME        specify the superuser user name to use in
                              plain text format
  -t, --table=TABLE           dump the named table(s) only
  -T, --exclude-table=TABLE   do NOT dump the named table(s)
  -x, --no-privileges         do not dump privileges (grant/revoke)
  --disable-dollar-quoting    disable dollar quoting, use SQL standard quoting
  --disable-triggers          disable triggers during data-only restore
  --use-set-session-authorization
                              use SESSION AUTHORIZATION commands instead of
                              ALTER OWNER commands to set ownership

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory
  -p, --port=PORT          database server port number
  -U, --username=NAME      connect as specified database user
  -W, --password           force password prompt (should happen automatically)

If no database name is supplied, then the PGDATABASE environment
variable value is used.
如果有什么不明白的,还可以在cmd命令模式下输入:pg_dump --help
下面的是PSQL8的中文文档
http://www.php100.com/manual/pgsql/app-pgrestore.html
2、恢复数据库
pg_restore -h 192.168.0.100 -p 5432 -U postgres -W -d irisApp -v "d:\irisApp.backup"
pg_restore --  从一个由 pg_dump 创建的备份文件中恢复 PostgreSQL 数据库。
pg_restore 接受下列命令行参数。 

filename
声明要恢复的备份文件的位置。如果没有声明,则使用标准输入。 

-a
--data-only
只恢复数据,而不恢复表模式(数据定义)。 

-c
--clean
创建数据库对象前先清理(删除)它们。 

-C
--create
在恢复数据库之前先创建它。(如果出现了这个选项,和 -d 在一起的数据库名只是用于发出最初的CREATE DATABASE命令。 所有数据都恢复到名字出现在归档中的数据库中去。) 

-d dbname
--dbname=dbname
与数据库 dbname 联接并且直接恢复到该数据库中。 

-e
--exit-on-error
如果在向数据库发送 SQL 命令的时候碰到错误,则退出。 缺省是继续执行并且在恢复结束时显示一个错误计数。 

-f filename
--file=filename
声明生成的脚本的输出文件,或者出现-l 选项时用于列表的文件,缺省是标准输出。 

-F format
--format=format
声明备份文件的格式。因为pg_restore 会自动判断格式,所以如果声明了,它可以是下面之一: 

t
备份是一个 tar 归档。 使用这个格式允许在恢复数据库的时候重新排序和/或把表模式元素排除出去。 同时还可能在恢复的时候限制装载的数据。 

c
备份的格式是来自pg_dump的客户化格式。 这是最灵活的格式,因为它允许重新对数据排序,也允许重载表模式元素。 缺省时这个格式是压缩的。 


-i
--ignore-version
忽略数据库版本检查。 

-I index
--index=index
只恢复命名的索引。 

-l
--list
列出备份的内容。这个操作的输出可以用 -L 选项限制和重排所恢复的项目。 

-L list-file
--use-list=list-file
只恢复在 list-file 里面的元素,以它们在文件中出现的顺序。 你可以移动各个行并且也可以通过在行开头放 ';' 的方式注释。(见下文获取例子。) 

-O
--no-owner
不 要输出设置对象的权限,以便与最初的数据库匹配的命令。 缺省时,pg_restore 发出 ALTER OWNER 或 SET SESSION AUTHORIZATION 语句设置创建出来的模式元素的所有者权限。 如果最初的数据库连接不是由超级用户(或者是拥有所有创建出来的对象的同一个用户)发起的,那么这些语句将失败。 使用 -O,那么任何用户都可以用于初始的连接,并且这个用户将拥有所有创建出来的对象。 

-P function-name(argtype [, ...])
--function=function-name(argtype [, ...])
只恢复指定的命名函数。请注意仔细拼写函数名及其参数,应该和转储的内容列表中的完全一样。 

-R
--no-reconnect
这个选项已经废弃了,但是为了保持向下兼容仍然接受。 

-s
--schema-only
只恢复表结构(数据定义)。不恢复数据,序列值将重置。 

-S username
--superuser=username
设置关闭触发器时声明超级用户的用户名。 只有在设置了 --disable-triggers 的时候才有用。 

-t table
--table=table
只恢复表指定的表的定义和/或数据。 

-T trigger
--trigger=trigger
只恢复指定的触发器。 

-v
--verbose
声明冗余模式。 

-x
--no-privileges
--no-acl
避免 ACL 的恢复(grant/revoke 命令)。 

-X use-set-session-authorization
--use-set-session-authorization
输出 SQL 标准的 SET SESSION AUTHORIZATION 命令,而不是 OWNER TO 命令。 这样令转储与标准兼容的更好,但是根据转储中对象的历史,这个转储可能不能恰当地恢复。 

-X disable-triggers
--disable-triggers
这个选项只有在执行仅恢复数据的时候才相关。它告诉 pg_restore 在装载数据的时候执行一些命令临时关闭在目标表上的触发器。 如果你在表上有完整性检查或者其它触发器, 而你又不希望在装载数据的时候激活它们,那么可以使用这个选项。 

目 前,为 --disable-triggers 发出的命令必须以超级用户发出。 因此,你应该也要用 -S 声明一个超级用户名,或者更好是设置 --use-set-session-authorization 并且以 PostgreSQL 超级用户身份运行 pg_restore。 

pg_restore 还接受下面的命令行参数做为联接参数: 

-h host
--host=host
声明服务器运行的机器的主机名。 如果数值以斜杠开头,那么它被用做 Unix 域套接字的目录。 缺省是从 PGHOST 环境变量中获取的(如果设置了), 否则将尝试进行 Unix 域套接字。 

-p port
--port=port
声明服务器侦听的 TCP 端口或者本地的 Unix 域套接字文件扩展。 缺省是环境变量 PGPORT 的值(如果设置了的话), 否则就说编译的缺省。 

-U username
以给出用户身分联接。 

-W
强制给出口令提示。如果服务器要求口令认证,那么这个应该自动发生。

看来这个数据库还是不太好用。不过目前正在使用,不好用也得用。
  评论这张
 
阅读(1024)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017