使用PostgreSQL这么多年后有时吃惊的一些实用工具,在某种程度上,有能力仍相对不知名的几人。让我给你介绍体现

这两个pg_dumppg_restore开关使我们感兴趣的区域在特定对象如函数、表、数据等等,当我们创建和恢复逻辑转储。但总有一天在表达这种粒度时作为参数可以变得过于复杂,当我们看几十,如果不是数以百计,对象。

输入清单

PostgreSQL转储商店不仅数据库对象和数据的描述性元数据了。当生成一个文本文件,一个PostgreSQL清单一行上的每个对象的细节。这些线可以编辑通过移除或重新排序。编辑文件可以使用pg_restore恢复实体规定的顺序。

这是它是如何工作的;第一步是使用自定义压缩参数生成标准的转储足球俱乐部

一旦创建了转储清单使用pg_restore和生成- l到标准输出的开关:

就像一个食谱,清单用于阅读和恢复转储以下方向:

当然,在生成和阅读清单,需要编辑它的机会:

让我们用一个更实际的。pgbench。第一步初始化数据库基准测试,注意使用外键:

让我们复杂景观包括通过添加一些看法物化观点:

现在让我们创建数据库转储。记住,体现只能创建时生成转储使用自定义格式开关足球俱乐部

现在,让我们来生成清单。我选择使用ini扩展文件名作为我的代码编辑器识别分号作为相应的注释行和颜色:

按照正常的生成逻辑转储和恢复的过程,认为从下面列出的输出命令创建数据库,从- c开关,紧随其后的是视图、表定义数据的人口,和约束,并完成数据人口的物化视图:

一旦生成,体现现在可以根据我们的要求,在这种情况下是恢复数据库的一个子集转储文件如下:

  1. 创建数据库pgbench_restore
  2. 只恢复视图v1_pgbench_accounts
  3. 恢复和填充表pgbench_accounts
  4. 恢复和填充物化视图m_pgbench_accounts

您会注意到,为了恢复表pgbench_accounts有必要不加约束,即把颗约束。

一些编辑后生成的清单是什么样子:

小创意并不是大的飞跃动态生成适当的清单:

现在我们进行最后的恢复步骤:

看看结果数据库成功确认:

这就是所有!

最后一个警告:一个编辑manifest通过删除整行。不可能自己编辑行,所以不要改变什么,也没有新行可以任意添加到清单中。记住,表现就像指针,它们只能引用什么已经存在于数据库转储。

订阅
通知的
客人

2评论
最古老的
最新的 大多数投票
内联反馈
查看所有评论
弗兰克Streitzig

谢谢你的文章。我总是将使用参数与pg_dump每次fc,现在。
但我想,我找到了一个小错误。
“pg_restore 1 - l pgbench_manifest。ini - f - | - s”
失踪的转储文件。
解决办法:
“pg_restore 1 - l pgbench_manifest。ini - f - pgbench。db | - s”