我经常听到人们说“我们的 MySQL 服务器机器坏了”,这让我觉得他们专门用一台机器作为他们的 MySQL 服务器(我猜他们只是安装了操作系统,并且只安装了 MySQL)。作为一名开发人员而不是系统管理员,我习惯于将 MySQL 与 Web 服务器和 PHP 一起安装为 LAMP 堆栈的一部分。
有人可以向我解释一下吗:
- 在单独的服务器上安装 MySQL 有什么意义?听起来像是在浪费资源,因为我可以在那里添加整个 lamp 堆栈以及其他服务器。
- 如果数据库位于单独的机器上,需要使用的应用程序如何连接它?
答案1
当您的应用程序平台和数据库争夺资源时,这通常是您已准备好使用专用数据库服务器的第一个迹象。
其次,高可用性:建立数据库集群(通常反过来,建立负载平衡的 Web/应用程序服务器集群)。
我还要说,安全性在迁移到独立服务器的过程中起着重要作用,因为您可以对每台服务器制定不同的网络访问策略(例如,DMZ 上的 Web 服务器和 LAN 上的数据库服务器)。
数据库服务器的访问是通过网络进行的。即,当您通常为数据库主机指定“localhost”时,您将指定数据库服务器的主机/IP 地址。注意:通常您需要修改数据库服务器的配置以允许连接/启用除环回接口之外的接口上的监听。
答案2
单独的数据库服务器只是良好可扩展设计的一部分。如果您的流量不是很高,并且单个服务器确实足够,那么这并不重要。
但在更繁忙的服务中,将服务彼此隔离是一件好事。如果有人对您的 Web 服务器进行 DDoS 攻击并使其消耗所有资源,这根本不会对数据库服务器造成威胁。在共享环境中,可能有多个 Web 服务器在使用数据库服务器,因此如果数据库服务器包含 50 个不同网站的数据,那么只有一个网站因 DDoS 而瘫痪总比让所有网站瘫痪要好。
此外,从系统管理员的角度来看,如果有专用服务器的合理命名,例如“mysql-01.yourcompany.com”和“webserver-01.yourcompany.com”,情况会更加清楚。当他们收到警报时,他们会立即看到发生了什么,至少在“好的,数据库出了问题”的意义上。我知道这是一个站不住脚的论点,因为多个 DNS 名称可以指向单个服务器,但仍然如此。
您的应用程序将通过网络毫无问题地连接到远程数据库服务器。哎呀!您的 Web 浏览器如何连接到远程服务器?这太神奇了!呃……更严肃地说,您无需使用“localhost”,只需在 $programming_language_of_your_choice 中提供服务器地址即可。一切就绪。
答案3
- 一些网站/应用程序非常频繁地使用数据库,因此需要一个或多个专用于数据库本身的服务器。
- 通过网络。
答案4
MySQL 查询可能会耗费大量资源,从而降低 LAMP 服务器的速度。
当您运行大型、复杂、资源密集的网站时,考虑将数据库移至另一台专用服务器是明智之举。这样,您就有两台服务器,一台专用于 Web,另一台专用于数据库处理。这有可能释放资源并加快网站和数据库查询的速度。
Web 服务器只需连接到数据库服务器地址,而不必localhost
进行数据库查询。