使用单独的 SQL 服务器有哪些优点和缺点?

使用单独的 SQL 服务器有哪些优点和缺点?

我从 2018 年开始运行 Debian 服务器,最近我注意到它的功能已经扩展到变得相当“庞大”的程度。

该服务器运行 Nextcloud、Gitea、Roundcube Webmail、YOURLS 和两个 WordPress 站点的实例 - 以及一些其他不使用 SQL 的东西。

我的网络上还有一个单独的(但小得多)的服务器,无法从互联网(仅限 LAN)访问,我一直在考虑将 SQL 服务器卸载到它上面。

这有什么优点和/或缺点吗?

服务器故障:这不是一个意见问题。诸如延迟、SQL 缓存的实现、网络安全影响等许多事情都是可衡量的指标

答案1

像往常一样,唯一能确切了解你的环境的行为是尝试在环境的限制范围内进行。简而言之,与连接到本地套接字相比,当必须跨越网络链接时,延迟会增加。这可能会或可能不会通过为数据库引擎提供更多资源来补偿,具体取决于其他服务器负载。

在交易率低、并发用户数少的小型企业环境中,将数据库分离到自己的主机上会带来很大的改进,除非当前所在的机器性能不佳,否则我会感到惊讶。将其移动到性能明显较弱的服务器甚至可能适得其反。

答案2

此回复并不针对WordPress,但同样适用于所有 Web 应用程序

卸载数据库(或任何组件)的常见好处是,您可以独立于其他资源管理该资源的规模、冗余和安全性。

在大多数实现中,我们并没有卸载数据库但我们卸载Web 或应用程序主机。这是因为传统上管理水平扩展和数据库服务器集群之间的数据同步比较困难,因此我们首先垂直扩展数据库服务器(增加资源),但 Web 应用程序和 Web 托管基础设施首先设计为支持水平/横向扩展,并且通常这样做更经济。

许多企业 RDBMS 引擎通过积极地预分配或保留内存来实现优化,这将减少可用于 Web 托管基础架构的内存。单实例数据库通常可以处理比单实例 Web 前端 (WFE) 更高数量的用户。如果您仅通过增加资源来扩展,那么在资源耗尽时,您可能会发现数据库引擎未充分利用(由于预分配)并且到了一定时候,您就不再注意到 WFE 性能的改进了。此时,您别无选择,只能水平扩展。

横向扩展通常存在许可问题,许多企业数据库许可是按 CPU 收费的,有时是按核心收费的。如果数据库实例或核心利用率较低,仅按许可收费可能成本过高,更不用说增加数据库实例或核心数量的设置和维护成本。

许可论点也反过来说,如果您的工作量很小,那么您可以通过将数据库卸载到现有数据库服务器或至少在同一服务器上汇集多个数据库来降低成本。

还有安全因素,通过不将数据库服务器托管在边缘防火墙与 Web 前端的界限并不明显,但数据库服务器应该在防火墙内受到全面保护。

尽管可以在同一台服务器上运行所有进程,但风险相当大在这样做时,我不会建议单服务器部署,除非是用于非关键的、内部使用场景且活跃并发用户数量较少。

相同的服务器部署在发生故障后更难重新安装/配置,您可以恢复整个服务器映像(如果有)或者您可以尝试手动重新安装和配置,但这可能是一个繁琐的过程,可能需要对许多单独的组件进行微调。

随着用户群的增长,在某个时候你需要扩展,你可能不需要现在就做出这个决定,但希望这个时间会到来。如果你在项目中尽早分离数据库和 WFE 组件,这将意味着你更云就绪并且能够在需要时单独排除故障或改善需要它的特定进程的性能,而对系统的其余部分几乎没有影响。

在现代云优先时代,单一的一体化组合服务器部署仅用于早期 POC 实施。我想不出任何商业的在同一服务器实例上托管数据库和 Web 主机的场景。整个数据库被泄露或损坏的风险实在太高了,因为要使 WFE 正常工作,您必须将其暴露给世界,但您不希望每个人都可以访问您的数据库,这很容易导致法规遵从性问题。

如果你的工作量不是商业的规模或者您正在利用实际上不花费您任何费用的资源,无论是时间还是金钱,那么也许您不需要改变,一个组合服务器就可以为您工作,OP 询问有什么好处,并询问您为什么要这样做。

就缺点而言,如果必须支付多种资源,成本结构显然会更复杂一些,但事实就是如此。通常,从原始成本和时间角度来看,独立于数据库服务器维护 WFE 更便宜,而将两个工作负载紧密耦合在同一台服务器上会引入许多操作系统级别的依赖性问题,这些问题随着时间的推移会变得越来越难以管理。分割资源的目的是独立部署的优点在于,它使您可以自由地管理这些资源,以找到性能和成本之间的平衡。如果单独托管的成本更高,而且您对性能不满意,那么请缩减规模,或者您做错了。拆分资源并不意味着您立即将要省钱,只有你

相关内容