【发布时间】:2018-01-08 14:23:00
【问题描述】:
我们在 Google Cloud 的虚拟机中运行了一个 PostgreSQL 实例。我们运行的查询的性质涉及大量 PostgreSQL 临时表空间。 (每天 5 或 6 或更多 TB 的磁盘 I/O)
这种 I/O 仍然是我们数据库中的主要瓶颈。目前,我将这一切都发生在 SSD 永久磁盘上 - 不是因为我们需要在重启时保存任何数据,而是因为 PostgreSQL 在磁盘上布置了一个文件结构,然后用于临时表,如果数据库启动时文件结构丢失,不是很好。
我想做的是在本地 SSD 上配置临时表空间,因为它们的 I/O 吞吐量要高得多。不幸的是,它们在每次重新启动时都会消失。我想要一种简单的方法,能够在重启后和 PostgreSQL 启动备份之前重新布局磁盘。
我可以压缩空文件结构,然后编写一个脚本,在每次启动后解压缩它。那有意义吗?有没有更好的方法/最佳实践来做到这一点?
如果有一个 PostgreSQL 扩展可以神奇地做到这一点,那就太棒了。
想法?
【问题讨论】:
-
我们在 GCE 上的本地 SSD 上运行整个 PG 数据库大约 1 年。速度很棒。但后来突然其中一张表损坏了,我们没有找到任何解释。谷歌解释说本地 SSD 没有任何纠错功能。网络上的一些 cmets 似乎暗示其他人也有这个问题。因此,本地 SSD 确实很快,但在较长时间内并非 100% 可靠......
-
但这对临时空间有影响吗?
-
您是否在每次重新启动时都考虑过exporting the structure,而不是在适合您的情况下进行 tar 升级?
-
@nezda 我们有热备用副本,但仅在持久 SSD 上。我们的本地 SSD 数据库旨在进行繁重的夜间计算 - 以获得更好的速度。除此之外,我们还使用永久性磁盘维护了另一个相同的数据库。在本地 SSD 上出现文件一致性问题后,我们开始使用 Bigquery - 价格相似,运行时间要好得多。
-
我们遇到了 SSD 驱动器的驱动程序问题,这些问题会导致数据库在高负载下无法恢复的随机错误。为了稳定性,我们不得不退出高性能易失性驱动器配置并返回到持久性驱动器。我不建议再这样做了,除非您不介意数据库偶尔锁定。
标签: postgresql google-cloud-platform google-compute-engine