Я часто слышу, как люди делают такие утверждения, как «сбой нашего сервера MySQL», что создает у меня впечатление, что они выделяют одну машину в качестве своего сервера MySQL (я предполагаю, что они просто устанавливают ОС и только MySQL на ней). Как разработчик, а не системный администратор, я привык к установке MySQL как части стека LAMP вместе с веб-сервером и PHP.
Кто-нибудь может мне объяснить:
Когда ваша платформа приложения и ваша база данных конкурируют за ресурсы, это обычно первый признак того, что вы готовы к выделенному серверу базы данных.
Во-вторых, высокая доступность: настройка кластера базы данных (и обычно, в свою очередь, кластера веб-серверов / серверов приложений с балансировкой нагрузки).
Я бы также сказал, что безопасность играет большую роль в переходе на отдельные серверы, поскольку у вас могут быть разные политики доступа к сети для каждого сервера (например, веб-сервер с DMZ и сервер базы данных в локальной сети).
Доступ к серверу базы данных осуществляется по сети. т.е. когда вы обычно указываете "localhost" для хоста базы данных, вы должны указывать хост / IP-адрес сервера базы данных. Примечание: обычно вам нужно изменить конфигурацию вашего сервера базы данных, чтобы разрешить соединения / включить прослушивание на интерфейсе, отличном от интерфейса обратной связи.
Отдельный сервер базы данных - это лишь часть хорошей масштабируемой конструкции. Это не имеет значения, если ваш трафик не очень высок и действительно достаточно одного сервера.
Но в более загруженных сервисах изоляция сервисов друг от друга - это хорошо. Если кто-то совершит DDoS-атаку на ваш веб-сервер и заставит его использовать все ресурсы, это вообще не будет запугивать сервер базы данных. В общих средах более одного веб-сервера, вероятно, используют сервер базы данных, поэтому, если сервер базы данных содержит данные для 50 различных веб-сайтов, то только один веб-сайт выходит из строя из-за DDoS-атак, чем отключение всего.
Также с точки зрения системного администратора более понятно, есть ли выделенные серверы с разумным названием, например, mysql-01.yourcompany.com и webserver-01.yourcompany.com. Когда они получают предупреждения, они сразу видят, что происходит, по крайней мере, в смысле «ОК, что-то не так с базой данных». Я знаю, что это слабый аргумент, поскольку несколько имен DNS могут указывать на один сервер, но все же.
Ваши приложения будут без проблем подключаться к удаленному серверу базы данных по сети. Аииеееее! Как ваш веб-браузер подключается к удаленному серверу? Это магия! Эээ… а если серьезно, то вместо localhost вы просто указываете адрес сервера в $ programming_language_of_your_choice, и все готово.
LAMP - это стек приложений, но не обязательно все его устанавливать на одном хосте. Как отмечали другие, в целях производительности, безопасности или масштабируемости они часто не устанавливаются на одном и том же хосте. Вы также можете обнаружить, что оборудование, оптимальное для одной части архитектуры, может не подходить для другой.
Например, базы данных - это управление хранилищем. Чем быстрее я смогу получить информацию с диска, тем быстрее я смогу передать ее запрашивающей стороне. Если я использую дисковую подсистему совместно с несколькими другими участниками стека приложений, такими как веб-сервер, конфликт, с которым я сталкиваюсь за общий ресурс хэдов чтения и записи дисков, может фактически снизить мою производительность. Кроме того, разделение ОЗУ между веб-сервером и сервером базы данных на данном хосте может не обеспечить достаточно большой пул ресурсов для того, чтобы любой из них работал наиболее эффективным способом, способный кэшировать столько информации в ОЗУ без необходимости перехода на диск для изображение, страница или набор результатов запроса.
С административной точки зрения тоже нужно повысить эффективность. Представьте, что вы запускаете свое предприятие на приложениях с открытым исходным кодом, которые используют MySQL в качестве общей серверной части. Вы действительно хотите, чтобы количество серверов баз данных увеличивалось с каждым приложением? Это может быть кошмар для администраторов баз данных: «Хорошо, какое приложение использует эту БД?» У вас будет несколько версий, несколько конфигураций аппаратного и программного обеспечения, несколько стратегий хранения данных. У вас также, вероятно, будут очень размытые административные навыки. Вместо этого объедините экземпляры в одно физическое оборудование, оптимизированное для этой роли, и назначьте выделенные ресурсы для управления сервером и его данными.
Запросы MySQL могут быть очень ресурсоемкими, что может замедлить работу вашего LAMP-сервера.
Если у вас большой, сложный и ресурсоемкий веб-сайт, разумно подумать о переносе базы данных на другой выделенный сервер. Таким образом, у вас будет два сервера: один для Интернета, а другой - для обработки базы данных. Это может освободить ресурсы и ускорить запросы как к веб-сайту, так и к базе данных.
Веб-серверу просто нужно подключиться к адресу сервера базы данных вместо localhost
чтобы делать запросы к базе данных.