怎么在PostgreSQL中利用pgdump进行备份恢复

  介绍

怎么在PostgreSQL中利用pgdump进行备份恢复?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

逻辑备份在恢复时,介于逻辑备份与故障时间点之间的数据难以恢复,故一般不采取逻辑备份方式进行数据库备份,但逻辑适用于跨平台跨版本的数据迁移;

<强>逻辑备份恢复主要以下三种:

<代码> pg_dump

<代码> pg_dumpall

<代码>复制

<强>本小节主要讲解pg_dump

pg_dump备份

只能备份单个数据库,不会导出角色和表空间相关的信息

- f c备份为二进制格式,压缩存储。并且可被pg_restore用于精细还原

- f p备份为文本,大库不推荐

pg_dump恢复

psql dbname - u用户名& lt;bakfile

pg_restore   安康;pg_restore [选项],…,(文件名)   安康;pg_restore  -d  dbname  bakfile

二进制格式的备份只能使用pg_restore来还原,可以指定还原的表,编辑TOC文件,定制还原的顺序,表,索引等。

文本格式的备份还原,直接使用用户连接到对应的数据库执行备份文本即可,例如psql dbname - f bak。sql

pg_dump备份恢复示例

1)创建数据库

testdb createdb

2)连入数据库testdb

testdb psql

3)创建测试表,插入数据

=#, testdb create  table  tt (a  int), tablespace  tbls_t;=#,testdb insert  into  tt (a),值(1);=#,testdb insert  into  tt (a),值(2);

4)查看数据

testdb=# select * from tt;

5)备份

pg_dump testdb>/dbbak/testdb。sql #简单语法,可结合选项灵活备份

6)删除数据库testdb

testdb dropdb

7)创建新数据库(恢复之前需创建数据库)

testdb createdb

8)恢复数据

psql testdb & lt;/dbbak/testdb。sql

9)查看数据是否回复

testdb psql testdb=# select * from tt;

至此,数据已成功恢复!

pg_restore - d postgres/dbbak/pgdumpbak/p。dmp

pg_dump备份恢复命令扩展练习

pg_dump  -F  c  -F /dbbak pgdumpbak/c.dmp  -C  -E  UTF8  -h  127.0.0.1  -U  postgres  testdb , #二进制格式备份文件,   pg_dump  -F  p  -F /dbbak pgdumpbak/p.dmp  -C  -E  UTF8  -h  127.0.0.1  -U  postgres  testdb  #文本格式备份文件,“c”,表示包含创建语句   pg_restore /dbbak c.dmp | less 可以解析二进制格式的备份文件   pg_restore  -l /dbbak/c.dmp    pg_restore  -d  testdb /dbbak pgdumpbak/c.dmp  #需要先创建目标库   pg_restore  -d  postgres /dbbak pgdumpbak/p.dmp  #文件中包含创建数据库的命令,不需要创建目标库

toc文件选择性备份恢复

1)根据二进制备份文件生成toc文件

pg_restore - l - f/dbbak/pgdumpbak/toc/dbbak/pgdumpbak/c。dmp

2)修改toc文件,以首行加分号”;“的方式注释掉不用还原的内容

3)以toc文件列表做恢复

pg_restore - f c - l/dbbak/pgdumpbak/toc/dbbak/pgdumpbak testdb - d/c。dmp

<强>补充:Postgresql备份与还原命令pg_dump

Postgresql数据库的备份和还原命令pg_dump

常用命令:

备份:

pg_dump - u postgres - d myDBname - f dump.sql

其中

postgres是用户名

myDBname是数据库名

转储。sql是文件名

还原:

createdb newDBname

psql - d newDBname - u postgres - f dump.sql

其中

postgres是用户名

newDBname是数据库名

转储。sql是文件名

<强>参考:

pg_dump 把一个数据库转储为纯文本文件或者是其它格式。   用法:   ,pg_dump [选项)……,(数据库名字)   一般选项:   ,- f,——文件=FILENAME ,,输出文件或目录名   ,- f,——格式=t d c | | | p ,,输出文件格式,(定制,,目录,,焦油)   ,,,,,,,明文,(默认值))   ,- j,——工作=NUM ,,,执行多个并行任务进行备份转储工作   ,- v,——verbose ,,,详细模式   ,- v,——version ,,,输出版本信息,然后退出   ,- z,——压缩=0-9 ,,被压缩格式的压缩级别   ,——lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败   ,,?——help ,,,,显示此帮助,,然后退出   控制输出内容选项:   ,——,——data-only ,,,只转储数据,不包括模式   ,- b,——blobs ,,,,在转储中包括大对象   ,- c,——clean ,,,,在重新创建之前,先清除(删除)数据库对象   ,- c,——create ,,,,在转储中包括命令,以便创建数据库   ,- e,——编码=ENCODING ,转储以编码形式编码的数据   ,- n,——模式=SCHEMA ,,只转储指定名称的模式   ,- n,——exclude-schema=SCHEMA 不转储已命名的模式   ,- o,——oids ,,,,在转储中包括,OID   ,- o,——no-owner ,,,在明文格式中,,忽略恢复对象所属者   ,- s,——schema-only ,,只转储模式,,不包括数据   ,- s,——超级用户=NAME ,,在明文格式中使用指定的超级用户名   ,- t,——表=TABLE ,,只转储指定名称的表   ,- t,——exclude-table=TABLE 不转储指定名称的表   ,- x,——no-privileges ,,不要转储权限,(grant/revoke)   ,——binary-upgrade ,,只能由升级工具使用   ,——column-inserts ,,以带有列名的插入命令形式转储数据   ,——disable-dollar-quoting 取消美元,符(号),引号,,使用,SQL 标准引号   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在PostgreSQL中利用pgdump进行备份恢复