Answers:
当您的应用程序平台和数据库在争夺资源时,通常这首先表明您已准备好使用专用的数据库服务器。
其次,高可用性:建立数据库集群(通常又是负载均衡的Web /应用程序服务器集群)。
我还要说,在分离服务器的过程中,安全性起着很大的作用,因为您可以为每个服务器(例如,具有LAN上的数据库服务器的DMZ网络服务器)具有不同的网络访问策略。
通过网络访问数据库服务器。例如,当您通常为数据库主机指定“ localhost”时,您将指定数据库服务器的主机/ IP地址。注意:通常,您需要修改数据库服务器的配置,以允许在回送接口以外的接口上进行连接/启用侦听。
单独的数据库服务器只是良好的可扩展设计的一部分。如果您的流量不是很高并且单个服务器确实足够,那么这无关紧要。
但是在繁忙的服务中,将服务彼此隔离是一件好事。如果有人用DDoS攻击您的Web服务器并使其消耗所有资源,那根本就不会欺负数据库服务器。在共享环境中,可能有多个Web服务器正在使用数据库服务器,因此,如果数据库服务器包含50个不同网站的数据,则由于DDoS导致关闭一个网站要比关闭所有服务器更好。
从sysadmin的角度来看,更明确的是是否有专门命名的专用服务器,例如“ mysql-01.yourcompany.com”和“ webserver-01.yourcompany.com”。当他们收到警报时,他们立即看到正在发生的事情,至少从“确定,数据库有问题”的意义上看。我知道这是一个较弱的论点,因为几个DNS名称可以指向一个服务器,但仍然指向一个服务器。
您的应用程序将连接到远程数据库服务器,而不会出现网络问题。哎呀!您的Web浏览器如何连接到远程服务器?这是魔法!嗯...。更重要的是,您只需在$ programming_language_of_your_choice中提供服务器地址,而不是'localhost'即可。
LAMP是应用程序堆栈,但不必全部安装在同一主机上。正如其他人出于性能,安全性或可伸缩性的目的指出的那样,这些功能通常未安装在同一主机上。您还可以发现,对于架构某一部分而言最佳的硬件可能不适用于另一部分。
例如,数据库都是关于存储管理的。从磁盘上获取信息的速度越快,那么将其传输到请求者的速度就越快。如果我要与其他几个应用程序堆栈成员(例如Web服务器)共享磁盘子系统,那么我在磁盘驱动器的读写堆共享资源上面临的竞争实际上会阻碍我的性能。同样,在给定主机上的Web服务器和数据库服务器之间分配RAM可能无法提供足够大的资源池来以其最有效的方式运行,从而能够在RAM中缓存尽可能多的信息,而不必访问磁盘就可以了。图片,页面或查询结果集。
在管理上也要提高效率。想象一下,如果您在将MySQL用作通用后端的开源应用程序上运行企业。您是否真的希望每个应用程序都具有数据库服务器的功能?这可能是DBA的噩梦,“好,哪个应用程序使用此DB?” 您将拥有多个版本,多种硬件/软件配置以及多种数据保留策略。您还可能具有非常分散的管理技能。而是将实例合并到针对角色优化的一个物理硬件上,并分配专用资源来管理服务器及其数据。