Nyx*_*nyx 5 postgresql tablespaces scalability raid timescaledb
专门运行 PostgreSQL 11.2 服务器(带有 TimescaleDB 扩展)的 Ubuntu 18.04 服务器将很快耗尽磁盘空间,因此需要向计算机添加新的 SSD 磁盘以支持不断增长的数据库大小。
数据预计将以相同/更高的速率继续增加,因此需要不断增加存储硬件,直到机器用完 2.5 英寸驱动器托架。只有这时才会考虑将数据库分布在多台机器上,因为所涉及的复杂性增加。
想法
联合文件系统mergerfs
可以将驱动器集中在一起,轻松解决存储扩展问题。但这会增加数据库操作的延迟,因此不建议这样做。可以通过底层 RAID-1/5/6/10 或使用 SnapRAID 添加冗余。
RAID-0 和 RAID-10 允许将 RAID 阵列扩展到新添加的驱动器中,并通过条带化提高性能。然而,每个添加的驱动器都会增加一个故障点。此外,许多人声称镜像 SSD 的用途有限,因为RAID-0 中的两个 SSD 可能会同时发生故障。所以也许这意味着 RAID-10 并不比 RAID-0 更好。此外,故障率随着每增加一个 SSD 而线性增加。
RAID-5/6 由于奇偶校验计算和写入 2 个驱动器而降低了性能,从而使有效 IOPS 降低了 75%。对于数据库来说似乎是一个糟糕的选择。
PostgreSQLTABLESPACES
可用于将每个表分配到特定驱动器。然而,使用表空间会使恢复变得非常复杂。此外,是否可以在新驱动器上创建新表空间并让 Postgres 自动决定将新记录写入何处?
ZFS、BTRFS?对他们不熟悉,愿意探索他们是否合适。
问题: 2020年推荐的PostgreSQL机器扩容方法是什么,如果扩容频繁(一年1-2次),性能应该不会受到太大影响,恢复也不会太复杂可能会导致数据丢失?
RAID-10 对我来说似乎是一个好主意,但 RAID-1 的使用似乎有限,同时会导致“损失”一半的磁盘空间,随着驱动器数量的增加,故障点也会增加,情况会变得更糟。
由于预算限制,我们无法一次性将 2U 机箱中的 16 个驱动器托架全部装满 SSD,因此必须逐步完成。
任何意见是极大的赞赏!
编辑:在研究了 ZFS 之后,这似乎可能是我的案例的解决方案之一。
仅包含镜像 ZFS vdev(每个 vdev 2 个驱动器)的 ZFS 池将允许通过一次添加 2 个驱动器来扩展存储池
在 ZFS 池中保留 1-2 个热备件可以在其中 1 个驱动器发生故障时允许 ZFS 自动进行故障转移
使用镜像 vdev,驱动器发生故障后的重建时间将比使用 RAIDZ vdev 快得多。这也减少了用于重建的幸存驱动器在此过程中出现故障的可能性。在重建期间,降级的镜像 vdev 将比降级的 RAIDZ vdev 具有更高的性能
ZFS 支持内联数据压缩,这有助于显着(4 倍压缩)降低 TimescaleDB 数据的存储要求,而无需使用本机 TimescaleDB 压缩,该压缩会阻止压缩数据更新,除非未压缩。这也非常重要,因为众所周知,与 InfluexDB 等其他数据库相比,TimescaleDB 的数据压缩较差
按照jjanes的建议,在 SSD 即将发生故障时监控并更换它们
如果我理解正确的话,使用 ZFS 镜像 vdev 将选中我的所有框:连续添加驱动器、允许提供单个安装点、数据冗余和额外的约 4 倍数据压缩的驱动器池。
小智 3
您是否打开了从 v1.5 起可用的 TimescaleDB 原生压缩?我问这个问题是因为您在上面提到了 ZFS/BTRFS,这表明您尚未使用其压缩。
通常情况下可以节省 90-98% 的存储空间...
https://docs.timescale.com/latest/using-timescaledb/compression
此外,您可以使用 TimescaleDB 的attach_tablespace
命令添加更多磁盘,然后新块在可用表空间之间进行负载平衡。
https://docs.timescale.com/latest/api#attach_tablespace
归档时间: |
|
查看次数: |
656 次 |
最近记录: |