postgresql - 来自 Azure Postgres 服务的 pg_dump,其中包含大型数据集
问题描述
在速度方面,我们面临着众所周知的 pg_dumps 效率问题。我们目前有一个 Azure 托管的 PostgreSQL,它保存了由 SmileCDR 创建/更新的资源。不知何故,三个月后,由于保存了 FHIR 对象,它变得越来越大。现在,我们想要一个全新的环境;在这种情况下,必须删除 PostgreSQL 中的持久数据,并且必须使用旧数据集启动新数据库。
请注意。
- pg_dump 消耗的时间相对要多得多,几乎是一天。我们如何加快备份恢复过程?
- 我们可以在 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 个进程并行运行。这将加快处理速度,除非您只有一张大桌子,而其他所有桌子都很小。
推荐阅读
- c# - C# JSON AJAX 返回页面 HTML 而不是方法值
- stored-procedures - 如何从 BigQuery 中的过程返回一些值并捕获返回的值?
- javascript - 谷歌地图内部多边形上的事件
- python - 导入 skrf 类型错误
- postgresql - Nifi中unicode字符串的NumberFormatException
- python - 迭代熊猫系列/列的最快方法
- java - 为什么 Mockito 的 verify() 计入 when() 调用?
- reactjs - 警告:道具 `className` 不匹配。将 @font-face 和 styled-components 与 NextJS 一起使用时
- multithreading - Android Jetpack 在可组合项之间传递数据
- docker - 如何使用 Docker Inspect 识别暂存图像?