pg_dump来自Azure Postgres服务,其中包含大量数据集



我们面临着众所周知的pg_dumps在速度方面的效率问题。我们目前有一个Azure托管的PostgreSQL,它保存着我们正在被SmileCDR创建/更新的资源。不知何故,三个月后,由于保存FHIR对象,它变得更大了。现在,我们想要一个全新的环境;在这种情况下,PostgreSQL中的持久数据必须被剥离,并且必须使用旧数据集启动新数据库。

请注意

  1. pg_dump消耗相对更多的时间,几乎是一天。如何加快备份恢复过程?
  2. 除了pg_dump之外,我们可以使用和应用哪些替代方案来实现目标?

重要的笔记;

  • 在PostgreSQL中使用SmileCDR进行版本控制。
  • 所有东西都必须从旧的复制到新的。
  • PostgreSQL版本是11,2vcore, 100GB存储。
  • FHIR对象被保留在PostgreSQL中。
  • 一些建议,如多作业,不压缩,目录格式已经实践,但它没有明显的影响。

既然您将自己置于数据库托管的牢笼中,那么除了pg_dump之外就没有其他选择了。他们故意让你难以获得你的数据。

你能做的最好的是一个目录格式转储与多个进程;这将在可能的情况下并行读取数据:

pg_dump -F d -j 6 -f backupdir -h ... -p ... -U ... dbname

在这个例子中,我指定了6个并行运行的进程。这将加快处理速度,除非您只有一个大表,而所有其他表都相当小。

或者,您可以将smileutilsynchronize-fhir-servers命令、系统级批量导出API、订阅机制一起使用。只是一个警告,这些选项可能太慢,无法迁移100Gb的数据库。正如你提到的,如果你可以复制Azure VM,那可能是最快的。

最新更新