MySQL est-il censé être installé seul

20

J'entends souvent des gens faire des déclarations telles que "notre machine serveur MySQL a échoué", ce qui me donne l'impression qu'ils dédient une seule machine comme serveur MySQL (je suppose qu'ils installent simplement le système d'exploitation et seulement MySQL dessus). En tant que développeur et non administrateur système, j'ai l'habitude que MySQL soit installé dans le cadre d'une pile LAMP avec le serveur Web et PHP.

Quelqu'un peut-il m'expliquer:

  • quel est l'intérêt d'installer MySQL sur un serveur séparé? sonne comme un gaspillage de ressources quand je peux y ajouter toute la pile de lampes et des serveurs supplémentaires.
  • si la base de données se trouve sur une machine distincte, comment les applications qui doivent utiliser s'y connectent-elles?
même
la source

Réponses:

30

Lorsque votre plate-forme d'application et votre base de données sont en concurrence pour les ressources, c'est généralement la première indication que vous êtes prêt pour un serveur de base de données dédié.

Deuxièmement, la haute disponibilité: mise en place d'un cluster de base de données (et généralement à son tour, un cluster de serveurs Web / d'applications à charge équilibrée).

Je dirais également que la sécurité joue un rôle important dans le passage à des serveurs distincts, car vous pouvez avoir différentes politiques d'accès au réseau pour chaque serveur (par exemple, un serveur Web DMZ avec un serveur de base de données sur le LAN).

L'accès au serveur de base de données se fait via le réseau. c'est-à-dire lorsque vous spécifiez généralement "localhost" pour votre hôte de base de données, vous devez spécifier l'hôte / l'adresse IP de votre serveur de base de données. Remarque: vous devez généralement modifier la configuration de votre serveur de base de données pour autoriser les connexions / activer l'écoute sur une interface autre que l'interface de bouclage.

gravyface
la source
En outre, une machine dédiée permet de peaufiner la configuration du disque de manière appropriée. Les serveurs Web sont très satisfaits lorsque les données vivent sur un RAID 6; les serveurs de bases de données préfèrent RAID 1.
Simon Richter
12

Un serveur de base de données séparé n'est qu'une partie d'une bonne conception évolutive. Cela n'a pas d'importance si votre trafic n'est pas très élevé et qu'un seul serveur suffit vraiment.

Mais dans les services plus fréquentés, isoler les services les uns des autres est une bonne chose. Si quelqu'un analyse votre serveur Web et le fait consommer toutes les ressources, cela n'intimide pas du tout le serveur de base de données. Dans les environnements partagés, plus d'un serveur Web utilise probablement le serveur de base de données, donc si le serveur de base de données contient des données pour 50 sites Web différents, alors un seul site Web qui tombe en panne en raison du DDoS est mieux que de tout supprimer.

Du point de vue sysadmin, il est également plus clair s'il existe des serveurs dédiés nommés judicieusement, tels que "mysql-01.yourcompany.com" et "webserver-01.yourcompany.com". Lorsqu'ils reçoivent des alertes, ils voient immédiatement ce qui se passe, au moins dans le sens "OK, il y a quelque chose qui ne va pas dans la base de données". Je sais que c'est un argument faible car plusieurs noms DNS pourraient pointer vers un seul serveur mais quand même.

Vos applications se connecteraient à un serveur de base de données distant sans problème sur le réseau. Aieeeeeee! Comment votre navigateur Web se connecte-t-il à un serveur distant? C'est magique! Euh ... plus sérieusement, au lieu de "localhost", vous fournissez simplement l'adresse du serveur dans $ programming_language_of_your_choice et vous êtes tous ensemble.

Janne Pikkarainen
la source
2
Suite au commentaire de Janne concernant le point de vue sysadmin ... Lorsque vous rencontrez des problèmes de performances ou avez besoin de déboguer l'application, c'est beaucoup plus facile à faire lorsque le serveur Web et le serveur de base de données sont sur des machines distinctes.
HTTP500
5
  • Certains sites Web / applications utilisent une base de données si fortement qu'ils nécessitent un ou plusieurs serveurs dédiés à la base de données elle-même.
  • Sur le réseau.
Ignacio Vazquez-Abrams
la source
3

LAMP est la pile d'applications, mais il n'est pas nécessaire que toutes soient installées sur le même hôte. Comme d'autres l'ont noté pour des raisons de performances, de sécurité ou d'évolutivité, ceux-ci ne sont souvent pas installés sur le même hôte. Vous pouvez également constater que le matériel optimal pour une partie de l'architecture peut ne pas l'être pour une autre.

Par exemple, les bases de données concernent la gestion du stockage. Plus je peux obtenir des informations du disque rapidement, plus vite je peux les transmettre au demandeur. Si je partage un sous-système de disque avec plusieurs autres membres de la pile d'applications, comme un serveur Web, le conflit auquel je suis confronté sur la ressource partagée des heds de lecture et d'écriture des lecteurs de disque peut en fait nuire à mes performances. De plus, la répartition de la RAM entre le serveur Web et le serveur de base de données sur un hôte donné peut ne pas fournir un pool de ressources suffisamment grand pour que l'une s'exécute de sa manière la plus efficace, capable de mettre en cache autant d'informations dans la RAM sans avoir à aller sur le disque non plus pour une image, une page ou un ensemble de résultats de requête.

Sur le plan administratif, il existe également des gains d'efficacité. Imaginez si vous exécutez votre entreprise sur des applications open source qui exploitent MySQL comme backend commun. Souhaitez-vous vraiment avoir une prolifération de serveurs de base de données avec chaque application? Cela pourrait être un cauchemar DBA, "OK, quelle application utilise cette base de données?" Vous auriez plusieurs versions, plusieurs configurations de matériel / logiciel, plusieurs stratégies de conservation des données. Vous auriez également probablement des compétences administratives très diffuses. Au lieu de cela, fusionnez les instances en un seul matériel physique optimisé pour le rôle et affectez des ressources dédiées pour gérer le serveur et ses données.

James Pulley
la source
2

Les requêtes MySQL peuvent être très gourmandes en ressources, ce qui peut ralentir votre serveur LAMP.

Lorsque vous exécutez un site Web volumineux, complexe et lourd en ressources, il est judicieux d'envisager de déplacer la base de données vers un autre serveur dédié. De cette façon, vous avez deux serveurs, l'un dédié au Web et l'autre dédié au crunching de bases de données. Cela a le potentiel de libérer des ressources et d'accélérer le site Web et les requêtes de base de données.

Le serveur Web doit simplement se connecter à l'adresse du serveur de base de données au lieu d' localhosteffectuer ses requêtes de base de données.

Jake Wilson
la source