暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PGSQL 第 001 期:两个真理和一个谎言

作为我在 PostgreSQL 学习之旅的一部分,我决定尽可能多地参加 PGSQL Phriday,以此继续拓展我对该平台的知识。在这个过程中,我也希望能帮助到你。第一篇文章的主题是关于PostgreSQL的两个真相和一个谎言。

现在,谎言很可能是我在任何方面都有资格谈论这个话题,但是,我可以做得更好一些。让我们从简单但重要的信息开始,即备份:

1、pg_dump可以直接转到SQL集合,也可以转到压缩的数字格式
2、pg_dumpall备份可用于在现有数据库上恢复数据。
3、你可以使用 pg_dump 来备份单独的模式       

现在,为了与游戏保持一致,这些陈述中有一个是谎言。是的,所有核心PostgreSQL人员都已经发现了它。然而,我们这些刚刚学习的人,这些东西可能并不明显。让我们来看一下。

pg_dump格式
      
进入 pg_dump 的命令是非常简单:
pg_dump databasename > backupfile;

默认情况下,此命令的输出将是一系列SQL文件,用于定义数据库中的对象和数据。然后,你可以使用 pg_restore 来恢复数据库。如果您不想处理大量单个文件,该怎么办?如果你想要一个大的格式化文件,就像你从 SQL Server 备份中得到那样(平心而论,我对 SQL Server 比较了解,所以我把它作为我学习 PostgreSQL 的参考),这种情况下该怎么办?那么你就必须修改代码,使用大写的 -F 作为格式。对此,我也有很多选择:

-Fp – 普通,或默认值
-Fd – 目录,每个表都有自己的目录以及其中的数据
- Ft – Tar,压缩文件
- Fc – Custome,一个二进制的压缩文件,也就是我正在寻找的东西。

因此,我们将输出修改为:
pg_dump -Fc databasename > backupfile;

您可以在文档和我撰写的这篇文章中阅读更多关于如何最好地使用 PostgreSQL 备份的信息。

pg_dumpall恢复

正如我在上面撰写并链接的文章中所述,您可以使用 pg_dumpall 通过一个命令备份给定PostgreSQL服务器上的所有数据库。这比多次发出 pg_dump 要容易得多。基本语法极其简单:
pg_dumpall > location;

现在,当您准备还原所有这些数据库时,您无需为其中有数据而烦恼。您只需运行以下命令:
pg_restoreall < location;

它将读取文件并恢复您的数据库。很好,真的很简单。有关更多详细信息,请阅读此处的 pg_restoreall 。

pg_dump转储单个模式


pg_dump 在某些功能上做得很好。有很多选项可用于修改要备份的内容。我最喜欢的功能之一是能够简单地提取一个模式,将其与其他模式分开。语法还不错:
pg_dump -n 'dev.*' -Fc databasename > backupfile;

你可以用这个方法变得非常有趣,因为它并不是真的只是去找模式。相反,这都是关于模式匹配。它支持正则表达式。你可以很有创意地决定什么被备份。上面关于pg_dump 的链接有更多细节。

哪一个是谎言?

这是 pg_restoreall 。对于那些关注 pg_restoreall 链接的人,我希望你们喜欢这个知识点。pg_dumpall 是 pg_dump 的包装器。然而,它并没有实现 pg_dump 的所有方面。因此,如果数据库中有数据,则不能在其中运行恢复,除非您使用“ CLEAN ”或“ -c ”创建备份以确保在恢复过程之前发生删除(但它会在恢复过程之前删除所有内容,因此请进行相应的计划)。你可以在这里阅读更多关于
pg_dumpall 的内容(这次是诚实的链接)。

我希望你喜欢我在 #PGSQLPhriday#001 中为两个真相和一个关于 PostgreSQL 的谎言所做的微薄贡献。

点击下方链接,了解更多关于这个有趣的社区博客的信息。

https://www.scarydba.com/ 

点击此处阅读原文

↓↓↓

文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论