我们面临着众所周知的pg_dumps在速度方面的效率问题。我们目前有一个Azure托管的PostgreSQL,它保存着我们正在被SmileCDR创建/更新的资源。不知何故,三个月后,由于保存FHIR对象,它变得更大了。现在,我们想要一个全新的环境;在这种情况下,PostgreSQL中的持久数据必须被剥离,并且必须使用旧数据集启动新数据库。
请注意
- pg_dump消耗相对更多的时间,几乎是一天。如何加快备份恢复过程?
- 除了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个并行运行的进程。这将加快处理速度,除非您只有一个大表,而所有其他表都相当小。
或者,您可以将smileutil与synchronize-fhir-servers命令、系统级批量导出API、订阅机制一起使用。只是一个警告,这些选项可能太慢,无法迁移100Gb的数据库。正如你提到的,如果你可以复制Azure VM,那可能是最快的。