暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 的生产使用的最低要求

原创 Bigbig 2022-10-13
6506

在本文中,我们将讨论PostgreSQL 的生产使用的最低要求,无论是在本地还是在云中。我们不会讨论 Amazon RDS 等专有分支或 Yugabyte 或 Greenplum 等其他开源分支。

PostgreSQL 是数据库的 Linux。它为当今可用的最关键的数据库服务提供内核和关键特性。这些包括但不限于:

  • Greenplum
  • Yugabyte
  • Amazon RDS for PostgreSQL
  • Amazon Aurora for PostgreSQL
  • Azure Database for PostgreSQL
  • AlloyDB
  • Cloud SQL for PostgreSQL
  • NeonDB


它还为 Cockroach 等其他数据库提供关键基础设施。

支持的平台

包括各种云提供商在内的许多平台都支持 PostgreSQL。官方支持的 Postgresql.org 平台列表的规范来源是支持的平台页面

本文的范围不允许我们讨论特定的云实例选项。相反,我们将专注于使用云运行的一般最低要求。这些选项将在所有主要平台上有效,但不包括专有分支,如 AlloyDB、Aurora、RDS 或 Hyperscale。这并不是说这些平台没有用或不好,只是它们不是 PostgreSQL。

现代云平台的一个优势是您可以根据需要自定义实例。在您的初始配置期间,您可能只需要 2GB 内存和 2 个 CPU,但突然间您的新产品或服务起飞了……您不必购买所有新硬件并执行迁移,您可以将实例升级到更强大的实现并重新启动。它变成了一个非常快速的中断,而不是一个长期的、抽出的、有计划的迁移。

基础知识

  • 1GHZ 双核处理器
  • 2GB内存
  • 2GB 磁盘空间
  • RAID 1
  • Linux

处理器和内存

在云环境中,您通常选择实例配置而不是特定的处理器速度。这允许您在单个捆绑包中修改某些特定的内存和处理器要求。它还允许您选择特定于您的工作负载的实例类型,例如内存优先或 CPU 优先。

谷歌云

当使用谷歌云时,GCE(谷歌计算引擎)的最小实例大小将是 e2-small,它提供 2 个共享核心 CPU 和 2GB 内存。这些是共享核心实例,并且确实提供了需要注意的特定限制,包括每个永久磁盘的最大磁盘空间为 3TB。如果您正在寻找类似配置但具有非共享内核,我们建议您使用 e2-standard-2,它通过 2vCPU 和 8GB 内存提供更可靠的性能。

AWS

由于 AWS 定价模型,使用 AWS for PostgreSQL 可能更具挑战性。如果我们遵守最低要求,那么 AWS EC2 实例 m4.large 可能是一个不错的选择。它有 2 个 vCPU 和 8GB 内存。但是,它是“仅限 EBS 卷”实例,它将您的 EBS 带宽限制为 450Mbps。由于它仅限于 EBS 卷,因此根据 EBS 卷的配置和数据库流量的速度,达到该限制并不难。

磁盘空间

在云中,这并不那么简单。能够为实例动态添加存储具有生产优势。它增加了正常运行时间和数据的弹性。但是,云会使磁盘使用过于复杂。当使用较低层的实例时,通常只允许使用基于网络的卷。不仅基于实例大小而且基于磁盘大小来限制这些卷的性能也很常见。

AWS

在为 AWS 进行预置时,您的最低要求受限于仅使用 EBS 卷并具有有限的 EBS 卷带宽。使用上述 m4.large 实例类型,我们可以配置至少 2GB 磁盘的适当大小,但我们必须配置 2 个 EBS 卷,因此我们达到 RAID 1 的最低要求。然后您的总速度限制为 450Mbps为两卷。换句话说,由于实例的限制,预置数据库相当于在 RAID 1 中拥有带有 (2) 个 SAS 驱动器的 On-Prem 服务器。可以在此处找到有关 AWS 实例选项和限制的更多信息。

谷歌云

为 GCP 配置可以更简单,因为它们允许您修改启动磁盘的大小和类型。虽然这个启动盘不是冗余的,不符合RAID 1的要求,但它可以满足你的性能要求。最小大小为 10GB。GCE 还根据磁盘的类型和大小来规定磁盘的速度。您可以在此处找到有关此主题的更多信息。

RAID 1

当涉及到数据的弹性时,云提供了一种错误的安全感。有一种即插即用的心态。不幸的是,与任何配置一样,都存在失败的风险。如果您允许您的数据驻留在单个 EBS(或本地)卷上。您面临的风险与允许您使用 On-Prem 将数据驻留在单个本地磁盘上的风险相似。是的,您可以(并且您应该)拥有备份、快照、时间点恢复等……但是,在您配置新卷并将其添加到现有运行阵列中时,没有什么能比丢失卷并继续运行而不会导致停电。

Linux

与 On-Prem 一样,应该使用 Linux for PostgreSQL。这对任何其他操作系统(看着你的 FreeBSD)都不是小事。PostgreSQL 在 Linux 上进行了最广泛的测试,生态系统以 Linux 为中心。此外,PostgreSQL 对其配置和管理采用了专门的 Linux/Unix 视图,这让 Windows 用户感觉很陌生(尽管微软已经证明 PostgreSQL 在 Windows 上运行良好)。我们进一步建议您坚持使用广泛且受外部支持的 Linux 发行版,例如 Debian、RHEL、SLES 和 Ubuntu LTS。应该尽量避免以供应商为中心的发行版,例如 Amazon Linux。



本地

尽管有相当大比例的 PostgreSQL 用户正在迁移到云端,无论是通过 EC2 等实例还是 RDS for PostgreSQL 等托管服务,但就本地安装的总体数量而言,他们仍然相形见绌。如果您拥有人员配备和专业知识,则本地可以提供许多云不会或无法以经济高效的方式执行的选项。还有一种观点认为,迁移到云端会增加外部风险。

基础知识:

  • 1GHZ 双核处理器
  • 2GB内存
  • 2GB 磁盘空间
  • RAID 1(镜像)
  • Linux

处理器

PostgreSQL 是基于进程的,这意味着它一次只能为每个进程、每个内核执行一件事。使用诸如上下文切换之类的技术会有所帮助,但固有的物理限制仍然存在。尽管有些应用程序在这种情况下可以正常工作,但在多核情况下您的可扩展性会显着提高。即使你的应用程序只使用一个处理器,还有其他进程在 PostgreSQL 后台运行(wal writer、bgwriter、stats collector、autovacuum 等),你想确保你有应用程序本身之外的资源。还应该避免任何不是 64 位的东西。

记忆

2GB 内存是您可以在操作系统之外分配给 PostgreSQL 的建议内存。如果你有一个小数据集,你仍然需要足够的内存来缓存你的大部分热数据(你可以使用 pg_buffercache 来确定你的热数据)。使用 2GB 内存,您可以为热缓存分配 512MB 的共享缓冲区,并为维护守护进程、并行性和 work_mem 留出 1.5GB。

磁盘空间

有一些文章建议您可以配置 512MB 的磁盘空间。不幸的是,这些文章没有考虑当前 PostgreSQL 安装的默认配置。考虑到 max_wal_size 默认为 1GB,再加上您具有使用 work_mem(可以溢出到磁盘)、maintenance_work_mem(可以溢出到磁盘)的功能的并行性,并且您仍然需要至少一些空间来存储数据和索引。

RAID 1(镜像)

当谈到用于本地和几乎所有生产环境的磁盘时,您至少需要 RAID 1。RAID 1 不会提供任何写入性能提升,但取决于驱动程序/控制器会提供读取性能提升。此外,它还提供冗余,以防备份数据不足,或者您有特定的正常运行时间要求,这将阻止您关闭数据库以恢复备份。请记住:尽管 NVME 数据中心驱动器速度快得离谱(而且可靠),但如果其中一个出现故障 - 如果您没有适当的冗余,您可能会陷入困境。

Linux

虽然 PostgreSQL 确实可以在大量操作系统上运行,但 PostgreSQL 在基于 Linux 的操作系统上进行了最广泛的测试。这并不是要从其他操作系统中拿走(@FreeBSD:看着你!)。Linux 的使用将为您提供最广泛的专业知识和知识库,以正确运行 PostgreSQL。我们还建议您使用的 Linux 安装是 LTS 版本,例如 Ubuntu LTS、Redhat RHEL、SLES 等。

虽然不是配置 PostgreSQL 的全面手册,但希望本文为想要使用 PostgreSQL 的人提供一个高性能、可靠的起点,并阐明仅“使用 PostgreSQL”的困难。在以后的文章中,我们将讨论其他主题,例如复制、快照、如何以高性能方式进行配置和连接池。

原文标题:PostgreSQL mininum requirements

原文作者:Joshua D. Drake

原文链接:https://www.commandprompt.com/blog/postgresql_mininum_requirements/



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论