web-dev-qa-db-fra.com

MySQL Haute disponibilité, basculement et réplication avec latence

Nous sommes en train de mettre en œuvre une nouvelle CMS (Drupal 6.x) qui fonctionne sur MySQL. Nous avons deux centres de données - primaire et secondaire - avec une latence connue entre eux. Nous ne savons pas quelle version de MySQL nous allons courir ... une communauté ou une entreprise, mais c'est un TBD. On dirait que nous allons exécuter le moteur InnoDb, le système d'exploitation va être Redhat EL 5.5 Les serveurs principaux seront actifs, tandis que le secondaire sera passive ou chaude.

Je souhaite mettre en œuvre une réplication, une haute disponibilité et un basculement automatisé dans MySQL dans les deux centres de données.

Après un basculement sur les serveurs secondaires, lorsque nous échouons aux serveurs principaux, nous aimerions avoir des données synchronisées de la DB secondaire à la DB primaire rapidement et complètement afin que nous puissions continuer à servir de contenu à partir des serveurs primaires.

Je suis intéressé à savoir quelles technologies/outils/meilleures pratiques peuvent être utilisées pour résoudre/résoudre ces problèmes. De plus, tous les moments de Gotchas ou Ah-ha seraient aussi très appréciés. J'ai lu sur la réplication MySQL, le replustation et à certains outils tiers tels que le tungstène et les dauphiniques, mais je ne sais pas ce que c'est le meilleur plan d'action.

Merci pour votre temps!

Km

8
KM.

Par souci de simplicité, je recommande que la réplication circulaire MySQL uniquement. Voici pourquoi:

Il existe de nombreuses technologies et topologies très supérieures à la réplication circulaire MySQL. Mon préféré, la main vers le bas, est DRBD (DRBD (Dispositif de bloc-bloc répliqué) . Toutefois, DRBD fonctionne bien lorsque la paire de serveur est dans le même buldage, le même centre de données et le même rack. C'est encore mieux lorsque vous utilisez un câble croisé dans le 192.168.x.x. Sous-réseau entre le secondaire DRBD primaire et DRBD. Malheureusement , DRBD a des performances horribles sur une distance entre deux emplacements, bien que DRBD puisse toujours fonctionner. Il n'y a pas de topologies de réseau autour de vous donner les performances de DRBD satisfaisantes nécessaires entre deux centres de données.

Une fois que vous avez configuré la réplication circulaire MySQL entre les deux serveurs DB dans deux centres de données différents, le seul réglage nécessaire est pour le réseau. Essentiellement, la performance de la réplication est une fonction des paramètres réseau (vitesse/latence de la transmission du journal binaire dans la configuration de la réplication MySQL) et I/O (DRBD).

Une alternative que vous souhaiterez peut-être pour une meilleure redondance est la suivante pour l'exemple de l'exemple:

Configurer une paire DRBD dans les deux endroits
Paire DRBD sur le site n ° 1 avec VIP 111.111.111.111
Paire DRBD sur le site n ° 2 avec VIP 222.2222222222

Configuration de la réplication circulaire MySQL entre les serveurs primaires DRBD dans ces conditions:
[.____] Pour le site n ° 1, utilisez le 222.2222222222 comme maître_host dans MySQL
Pour le site n ° 2, utilisez 111.111.111.111 en tant que maître_host dans MySQL

Bien que l'introduction d'un niveau de complexité, vous avez maintenant deux niveaux de redondance: DRBD dans chaque site et une réplication circulaire MySQL entre les sites. Vous avez les avantages supplémentaires des sauvegardes d'exécution via MySqldump sur le primaire DRBD du serveur de stands chauds.

En ce qui concerne le basculement, DRBD fournit un basculement automatique sur un site à un seul site.

Seulement dans le cas où un centre de données est totalement indisponible, utilisez-vous le dB VIP au site de veille hot.

METTRE À JOUR

Je viens de faire une double prise et j'ai remarqué que vous utilisez Drupal6. Je suis content que vous puissiez convertir tous les drupal Tables à InnoDB. Cela supprimera toutes les chances de myisam Table mises à jour, provoquant des serrures de table pour congrener les connexions DB qui lisent simplement des tables MyISAM. Toute mise à jour de DML ( Les insertions, les mises à jour, les suppressions) contre une table myisam effectueront toujours une serrure de table complète !!! L'utilisation d'InnoDB introduira le verrouillage au niveau de la ligne, qui élimine les serrures de table complètes.

De plus, DRBD devient votre ami lorsque tout est InnoDB, car la récupération des crash sera cohérente entre la paire DRBD. Conformité, DRBD avec Myisam vous achète rien, car une table myisam écrasée sur le primaire DRBD est simplement dupliquée au deuxième cycle du DRBD, Vous l'avez deviné, une table myisam écrasée.

Mise à jour n ° 2

Vous devriez utiliser deux niveaux de redondance

Niveau 1: Dans chaque centre de base de données, utilisez DRBD.
[.____] http://dev.mysql.com/doc/refman/5.1/fr/ha-drbd.html

Configurez une paire de serveurs DB
Démarrage DRBD
Démarrage MySQL sur le primaire DRBD

Cela crée des données redondantes au niveau du disque.

Niveau 2: Vous devez configurer la réplication circulaire MySQL entre
[.____] le primaire DRBD de Datacenter n ° 1 et le primaire DRBD de Datacenter n ° 2

Chaque primaire DRBD sera exécuté mysql et agira
[.____] comme maître et esclave l'un à l'autre

J'ai la configuration pour les topologies des clients comme celle-ci et je le considère assez stable.

3
RolandoMySQLDBA