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