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?
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.
la source
la source
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.
la source
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'
localhost
effectuer ses requêtes de base de données.la source