我操作一个 mariadb/mysql 数据库服务器,我不想陷入管理多集群数据库服务器的问题,我可以在需要时访问巨大的 CPU 和 RAM 和 STORAGE
所以我对经验丰富的专家数据库管理员的问题是垂直扩展是否足够好?是的,只要数据受到保护,停机时间就可以了我宁愿处理一些系统故障或很少发生的问题的停机时间......这比管理多集群数据库让我头疼要好
那么我在运行高达 512GB 内存和 128vCPU 的数据库时会遇到什么瓶颈?喜欢 2TB 的 SSD 存储?
这比假设像一个 8 个 mariadb/mysql 数据库集群那样运行,每个 64GB 内存,16vCPU 和 256GB SSD 存储更糟糕吗?
是的,我知道 iops,但我的意思是有很多 redis 缓存,我认为也可以减轻那部分的压力
几乎有越来越强大的 CPU 和服务器,一个人可以在一台机器上打包很多东西……不像几年前那样不可能或至少不容易……现在一个人可以打包几个 TB,TB(不是单个机器中的内存错字)
请发送您的建议和提示谢谢!
“你不能把硬件扔给性能问题。” 或者,更确切地说,你不能这样做两次。
一个技巧是通过拥有多个 VM 来虚拟化一大块铁,每个 VM 运行一个 MySQL 实例。这会在单个“垂直”缩放的服务器上进行“水平”缩放。这至少有助于我提到的砖墙。但是你会遇到一个巨大的、代价高昂的单点故障。
我通常的回答是“让我们看看我们是否可以更智能地编程”。
一个反复出现的例子是数据仓库。DBA 来到这个(和其他)论坛抱怨他们的“报告”(一大堆
SELECT
)GROUP BY
花费的时间太长了。我指出了摘要表的优点——10 倍的加速,10 倍的磁盘占用空间。噗,问题解决了。 任何硬件升级都不可能达到 10 倍。复制提供了近乎无限的、近乎线性的读取缩放。
分片(水平缩放)提供了近乎无限的缩放,几乎是线性的,但它并不适用于所有应用程序。
我在 Vertical 中看到的最好的是添加足够的 RAM 以将 I/O 绑定查询转换为在 buffer_pool 中运行的 CPU 绑定查询。我经常看到 10 倍的改进。 但这是一次性的改进。也就是说,添加更多的 RAM 将无济于事。
因此,对于您的标题问题,我坚决反对。
好的,Vertical 可能会有所帮助,但要注意它的局限性。