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

问题描述

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

请注意。

  1. pg_dump 消耗相对多得多的时间,差不多一天。我们如何加快备份-恢复过程?
  2. 我们可以使用和应用哪些替代方案,而 pg_dump 可以实现目标?

重要说明;

  • SmileCDR 使用 Flyway 在 Postgresql 中进行版本控制。
  • 所有东西都必须从旧的复制到新的。
  • Postgresql 版本为 11、2vCores、100GB 存储空间。
  • FHIR 对象保存在 Postgresql 中。
  • 一些建议,如多个作业,不压缩,目录格式已经实践过,但没有显着影响。

解决方法

既然您将自己置于数据库托管的笼子里,除了 pg_dump,您别无选择。它们故意让您难以获取数据。

你能做的最好的事情就是多进程的目录格式转储;将尽可能并行读取数据:

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...