2010-09-15 4 views
2

J'ai fait beaucoup de recherche, de lecture sur la réplication, etc, mais je ne sais pas exactement quelle solution mysql fonctionnerait.Comment rendre mes bases de données MySQL disponibles à tout moment? Quelques conseils d'experts DB nécessaires!

C'est ce que je regarde:

  • quand mon mysql échoue pour une raison ou il y a certaines requêtes qui prennent vraiment de temps pour exécuter et de verrouillage des tables, je veux l'autre insert/mettre à jour/sélectionner les requêtes pour toujours fonctionner à vitesse normale sans avoir à attendre que les verrous soient libérés ou que la base de données principale soit sauvegardée. Je pense qu'il devrait y avoir un deuxième serveur mysql pour que cela se produise, mais est ce que j'ai mentionné possible même s'il y a et cela impliquerait beaucoup de changement dans ma logique de programmation existante? Lorsque ma base de données est en cours de sauvegarde, je voudrais quand même que mon site fonctionne normalement, toutes les insertions/sélections/mises à jour devraient fonctionner normalement.

  • Lorsque j'ai besoin de modifier une grande table, je ne voudrais pas qu'il affecte mon application, il devrait y avoir un serveur de sauvegarde à partir duquel travailler.

Alors, que dois-je faire pour que tout cela soit fait et qu'il faudrait aussi changer beaucoup de codage existant pour s'adapter à la nouvelle configuration? [Mon site a beaucoup de lectures et d'écritures]

Répondre

0

Pas une réponse spécifique à MySQL, mais une réponse générale. Avoir une copie en lecture seule de votre base de données pour le site à rendre, qui sera synchronisé avec la base de données principale régulièrement. De cette façon, vous pouvez garder votre site fonctionnel même si la base de données principale est en chargement/verrouillage en raison de l'insertion/suppression. Pour plus d'efficacité, gardez cette copie aussi dénormalisée que possible.

+0

S'il y a une copie en lecture seule alors comment mes autres instructions d'insertion/mise à jour fonctionneront, je veux que mon site fonctionne normalement même s'il y a une charge sur la base de données principale. Ou vouliez-vous dire quelque chose d'autre par une "lecture seule copie de DB". – Sam

+0

Lecture seule copy = DB pour afficher les pages. Master DB = Votre DB actuel, DB actuel, tout votre site CMS, insert delete devrait fonctionner sur ce point. Et vous devriez synchroniser d'une façon ou d'une autre votre copie de lecture seule au maître pour garder le site à jour. –

1

Il n'y a pas de moyen facile. Vous demandez une configuration MySQL hautement disponible, ce qui nécessite beaucoup de travail au niveau du serveur et du client.

Quelques questions, par exemple:

  • quand j'ai besoin de modifier une grande table, je ne voudrais pas qu'elle affecte ma demande, il devrait y avoir un serveur de sauvegarde pour travailler.

Si vous modifier la table, vous ne pouvez pas créer trivialement une copie au travail de la mise à jour au cours. Qu'en est-il des modifications apportées à votre copie pendant la première mise à jour?

Rechercher "High Availability MySQL". C'est surtout un problème résolu, mais la solution dépend fortement de vos besoins exacts. Vous ne pouvez pas demander simplement "Je veux que mon serveur SQL fonctionne à toute vitesse pour toujours, peu importe ce que je lui lance".

+0

Je l'étais seulement s'il y a une telle configuration possible où quand vous exécutez un alter sur la base de données, le serveur peut utiliser une autre base de données de sauvegarde pour le moment et quand la modification est faite sur la 1ère base de données la 2ème base de données à la 1ère (en supposant que c'est juste un champ ajouté et non un changement de nom) et ensuite l'alter peut s'exécuter sur la 2ème DB. Bien qu'en y réfléchissant, cela ne semble pas réaliste. Mais de toute façon ont fait des recherches sur la haute disponibilité, tout semble si complexe et confuse. Je vais essayer de comprendre bien! – Sam

+0

Bonne chance! HA est une bête difficile à obtenir sans dépenser trop. Essayez de déterminer d'abord votre risque réel exposé, ce qui devrait vous donner une limite coût/effort. Avec une heure d'arrêt perdrez-vous £ 1, £ 100 ou £ 1m? – Cylindric

Questions connexes