MySQL应该被单独安装

我经常听到人们发表诸如“我们的MySQL服务器机器故障”这样的说法,这给我的印象是他们将一台机器作为他们的MySQL服务器(我猜他们只是安装操作系统,只有MySQL)。 作为一个开发人员而不是系统pipe理员,我习惯于将MySQL作为LAMP堆栈的一部分与Web服务器和PHP一起安装。

有人可以向我解释:

  • 在单独的服务器上安装MySQL有什么意义? 听起来像浪费资源,当我可以添加整个灯堆栈和额外的服务器以及。
  • 如果数据库位于单独的机器上,那么需要使用的应用程序如何连接到它?

当您的应用程序平台和数据库竞争资源时,这通常是您准备好专用数据库服务器的第一个迹象。

其次,高可用性:build立一个数据库集群(通常依次是一个负载平衡的Web /应用程序服务器集群)。

我还要说安全在分离服务器方面起着重要的作用,因为对于每个服务器(例如,在局域网上具有数据库服务器的DMZ'ed Web服务器),您可以有不同的networking访问策略。

通过networking访问数据库服务器。 即当你通常为你的数据库主机指定“localhost”时,你需要指定数据库服务器的主机/ IP地址。 注意:通常,您需要修改数据库服务器的configuration,以允许连接/启用在除回送接口以外的接口上进行侦听。

一个单独的数据库服务器只是良好的可扩展devise的一部分。 这并不重要,如果你的stream量不是很高,一台服务器真的就够了。

但在繁忙的服务中,隔离服务是一件好事。 如果有人对您的Web服务器进行DDoS攻击并使其消耗所有的资源,那么根本不会欺骗数据库服务器。 在共享环境中,不止一个Web服务器可能使用数据库服务器,因此如果数据库服务器包含50个不同网站的数据,那么由于DDoS的原因,只有一个网站停止运行,而不是采取一切措施。

另外从系统pipe理员的angular度来看,更明确的是是否有专门的服务器命名,比如“mysql01.yourcompany.com”和“webserver01.yourcompany.com”。 当他们收到警报时,他们会立即看到发生了什么,至less在“确定,数据库有问题”的意义上说。 我知道这是一个弱点,因为几个DNS名称可能指向一台服务器,但仍然是。

您的应用程序将连接到远程数据库服务器,而不会出现networking问题。 Aieeeeeee! 您的networking浏览器如何连接到远程服务器? 这是魔法! 呃….更严重的是,而不是'本地主机',你只需提供$ programming_language_of_your_choice服务器地址,你就全部设置。

  • 某些网站/应用程序使用的数据库过于庞大,因此需要一个或多个服务器专用于数据库本身。
  • 通过networking。

LAMP是应用程序堆栈,但不一定要安装在同一主机上。 正如其他人已经注意到性能,安全性或可伸缩性的目的,这些通常不会安装在同一台主机上。 您还可以发现,对于体系结构的一部分来说最佳的硬件可能不适用于另一部分。

例如,数据库都是关于存储pipe理的。 我可以从磁盘获取信息的速度越快,我就可以更快地将其传送给请求者。 如果我与其他几个应用程序堆栈成员(如Web服务器)共享一个磁盘子系统,则我在磁盘驱动器读写堆栈的共享资源上面临的争用实际上可能会妨碍我的性能。 此外,在给定主机上的Web服务器和数据库服务器之间分配RAM可能不会提供足够大的资源池,以便以最有效的方式运行,能够在RAM中caching尽可能多的信息,而无需转到磁盘图像,页面或查询结果集。

在行政上也有效率。 想象一下,如果您在利用MySQL作为公共后端的开源应用程序上运行您的企业。 你真的想在每个应用程序数据库服务器扩散? 这可能是DBA的噩梦,“好的,哪个应用程序使用这个数据库? 您将拥有多个版本,多硬件/软件configuration,多种数据保留策略。 你也可能有非常分散的行政技能。 而是将这些实例合并到一个为angular色优化的物理硬件上,并分配专用资源来pipe理服务器及其数据。

MySQL查询有可能会非常耗费资源,这会降低您的LAMP服务器的速度。

当您运行一个庞大而复杂的资源较重的网站时,考虑将数据库移动到另一个专用服务器是明智的。 这样你就有两台服务器,一台专门用于Web,一台专门用于数据库处理。 这有可能释放资源并加速网站和数据库查询。

Web服务器只需要连接到数据库服务器地址而不是localhost来进行数据库查询。