postgresql如何备份数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql如何备份数据库相关的知识,希望对你有一定的参考价值。

参考技术A postgresql中可以使用pg_dump来备份数据库。pg_dump是用于备份PostgreSQL数据库的工具。它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。
用法:
pg_dump [选项]... [数据库名字]
一般选项:
-f, --file=FILENAME output file or directory name
-F, --format=c|d|t|p output file format (custom, directory, tar, plain text)
-v, --verbose 详细模式
-Z, --compress=0-9 被压缩格式的压缩级别
--lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败
--help 显示此帮助信息, 然后退出
--versoin 输出版本信息, 然后退出
示例:
备份数据库,指令如下:
pg_dump -h 164.82.233.54 -U postgres databasename > C:databasename.bak

开始-运行-cmd 弹出dos控制台;然后 在控制台里,进入PostgreSQL安装目录bin下:
cd C:Program FilesPostgreSQL9.0bin
最后执行备份指令:
pg_dump -h 164.82.233.54 -U postgres databasename > C:databasename.bak

指令解释:
pg_dump 是备份数据库指令,164.82.233.54是数据库的ip地址(必须保证数据库允许外部访问的权限哦~),当然本地的数据库ip写 localhost;
postgres 是数据库的用户名;databasename 是数据库名。
> 意思是导出到C:databasename.bak文件里,如果没有写路径,单单写databasename.bak文件名,那么备份文件会保存在C: Program FilesPostgreSQL9.0bin 文件夹里。
推荐学习《Python教程》。

如何备份一些带有数据的表和一些表只有模式 PostgreSQL

【中文标题】如何备份一些带有数据的表和一些表只有模式 PostgreSQL【英文标题】:How to backup some tables with data and some tables only schema PostgreSQL 【发布时间】:2011-07-28 13:59:00 【问题描述】:

我想转储一个数据库。

我有三张桌子:

表1 表2 表3

从 table1 我想要架构和数据。

从 table2 和 table3 我只想要架构。

我该怎么做?

【问题讨论】:

“不起作用”不是有效的 PostgreSQL 错误消息。 我使用参数“--inserts”解决了“从标准输入复制”的问题 【参考方案1】:

仅从几个表中获取数据:

pg_dump myDatabase --inserts -a -t table1 -t table2 > backup.sql;

pg_dump myDatabase --inserts -a -t seq1 -t seq2 > backupSequences.sql;

参数说明:

-a, --data-only 只转储数据,不转储架构

-t, --table=TABLE 只转储指定的表

--将转储数据作为 INSERT 命令插入,而不是 复制

这就是我想要的:)

谢谢大家!

【讨论】:

请注意,如果您碰巧正在运行 pg -t 参数。您可以使用多个转储命令解决此问题,但解决重建的约束依赖关系是一个问题。【参考方案2】:

使用pg_dump,它同时具有仅模式和模式+数据输出。

【讨论】:

以上是关于postgresql如何备份数据库的主要内容,如果未能解决你的问题,请参考以下文章

postgresql数据备份小结

PostgreSQL 数据库设计的备份 - 无数据

Postgresql 数据库,如何进行数据备份以及导入到另外的数据库

如何在没有 psql 和 pg_restore 的情况下恢复 PostgreSQL 数据库备份?

postgresql备份与恢复数据库

每天将 Postgresql 数据库从小型 SSD 自动备份到多个硬盘