it-swarm-fr.com

Est-il imprudent d'exécuter une réplication sur le même serveur physique?

Je contemplerai la mise en place d'une réplication maître-esclave pour ma base de données. Le serveur esclave sera utilisé pour la redondance et éventuellement un serveur de rapports. Cependant, l'une des questions les plus importantes que je rencontre est que nous sommes déjà présentés au pouvoir sur notre centre de données. Ainsi, l'ajout d'un autre serveur physique n'est pas une option.

Notre serveur de base de données existant est relativement sous-utilisé en ce qui concerne la CPU (les moyennes de charge ne sont jamais vraiment supérieures à 1 sur un quad-core). Donc, l'idée principale est de lancer dans de nouveaux lecteurs et de doubler la mémoire (de 8 Go à 16) et d'exécuter une deuxième instance MySQL sur la même machine physique. Chaque instance aurait des disques distincts pour la base de données.

Y a-t-il quelque chose de mal avec cette idée?

Modifier (Plus d'infos): J'ai (heureusement) n'avoir jamais eu rien d'autre que rien ne soit assez grave pour supprime le serveur, mais j'essaie de planifier à l'avance. Nous avons bien sûr des sauvegardes nocturnes que nous pourrions récupérer. Mais j'ai pensé que les données redondantes sur des disques distinctes fourniraient une solution plus rapide si les lecteurs du serveur maître ont échoué (évidemment pas si la machine entière s'éteint).

En ce qui concerne l'aspect déclarant, toutes les tables que nous rapporterions sont myisam. Donc, faire des lectures coûteuses sur les mêmes tables qui sont écrites pour pouvoir bouger le serveur. Mon hypothèse a eu un serveur esclave pour rapporter de ne pas affecter le serveur principal tant que nous avons jeté suffisamment longtemps RAM à celui-ci (puisque la charge de la CPU n'a pas encore été question).

13
Derek Downey

Pour la redondance en termes de fiabilité du système et de sécurité des données exécutant un esclave sur la même machine que le maître vous offre rien (ou proche de). Si quelque chose de grave suffisamment pour ramener le maître arrive, cela apportera probablement l'esclave aussi.

Pour les utilisateurs purement séparant des raisons de droits d'accès, un bon RDBM offrira des moyens plus efficaces de le faire.

Exécuter les deux bases de données sur la même machine nécessitera plus RAM=== Pour fonctionner à la même efficacité que les deux bases de données concurrenceront de l'espace pour conserver divers tampons et caches. Il pourrait y avoir une prestation de performance cependant via la ségrégation io-chargée, si les datafiles de l'esclave sont sur différents disques physiques que le maître. Dans ce cas, vous pouvez exécuter des rapports complexes qui ont nécessité de nombreux disques se lit sur l'esclave sans concourir pour le maître de lecteur IO bande passante.

Éditer: comme Dtest mentionne dans son commentaire ci-dessous, un autre bénéfice possible d'un dB esclave (même si sur les mêmes lecteurs que le maître) est que des requêtes complexes à long terme de l'esclave qui pourraient autrement causer des problèmes de verrouillage pour la quotidienne Les requêtes d'exécution sur le maître sont plus sûres. Bien que vous soyez encore mieux d'avoir l'esclave sur différents lecteurs, car de telles requêtes significatives sont susceptibles de causer IO problèmes de contention.

11
David Spillett

Ce n'est pas clair pour moi comment cela résout votre problème. Il n'y a pas de redondance car il est sur le même matériel physique, le même noyau OS, les mêmes binaires MySQL, peut-être différents disques, mais sur le même contrôleur de stockage, etc., etc., et la raison d'un dB déclarant consiste à décharger des requêtes à partir du OLTP DB et comme c'est tout sur le même kit, où vient le pouvoir supplémentaire? Ou existe-t-il quelque chose d'autre que vous essayez d'obtenir de cette configuration?

Une utilisation imaginable pour cela serait de séparer les utilisateurs d'une manière ou d'une fois peut-être, mais à nouveau, j'aurais pensé que cela aurait pu être fait avec GRANT.

7
Gaius

Il est en effet considéré imprudent, vous essayez simplement de profiter de plus de noyaux? Quels sont les objectifs de la nouvelle considération de conception?

(Publié comme une réponse et non un commentaire pour garder le fil de conversation ciblé)

2
jcolebrand

Cela peut être une épée à double tranchant

Vous pouvez exécuter plusieurs instances de MySQL comme esclaves en lecture seule sur le même serveur que le maître, à condition que chaque instance de MySQL réside sur un autre disque. Ceci n'est souhaitable que si vous utilisez des anciennes versions de MySQL qui ne profitent pas de plusieurs cœurs (CPU). Les dernières versions de MySQL peuvent être à l'écoute pour utiliser les multiples processeurs rendant inutile pour accéder à plusieurs cœurs en exécutant plusieurs instances de MySQL.

Dans le même temps, c'est aussi une très mauvaise idée. De nombreux clients ont fait cela pour économiser de l'argent sur l'achat de serveurs de métal nu ou VM. Toute pointe de la charge du serveur peut affecter toutes les instances MySQL exécutées en raison de mauvaises requêtes, des requêtes lentes, de trop de connexions, de l'utilisation de la mémoire grutée, de la mémoire de serveur insuffisante, de la batterie de cache, et ainsi de suite, dans n'importe quelle instance MySQL. Cela ajoute également une complexité des applications en ayant accès aux différentes instances MySQL via leur numéro de port et vous seriez également à la merci de TCP/IP.

1
RolandoMySQLDBA

Je vais crier la réplication sur un autre serveur, c'est-à-dire l'esclave d'A Slave sur A. Nous exécutons plusieurs instances sur nos serveurs et que nos serveurs MySQL n'étaient pas en capacité. L'échec vers un serveur de fonctionnement est beaucoup plus rapide que de rétablir une sauvegarde.

0
sabika