2010-10-15 4 views

Répondre

2

Il y a quelques options. L'une consiste à mettre en place replication dans MySQL, qui va automatiquement copier les données entre les serveurs et les garder synchronisés automatiquement, avec une granularité de quelques secondes que les données volent autour. Inconvénient est que vous devez exposer au moins le serveur maître sur le net pour permettre les connexions TCP.

En externe, vous pouvez faire des mysqldumps régulières sur le serveur A, copier sur le serveur B, charger dans mysql, et c'est parti. Cela aura une granularité quel que soit l'intervalle de temps dans lequel vous exécutez la séquence de sauvegarde/copie/chargement. L'inconvénient est que mysqldump verrouille les tables en cours de fonctionnement. Si vous avez une base de données volumineuse, vous serez bloqué hors des tables de serverA pendant le vidage, et le serveur bloqué sera bloqué lorsque les données seront chargées. Et charger une sauvegarde est beaucoup plus lent que de faire la sauvegarde en premier lieu, car mysql effectue toutes sortes de tâches internes (mises à jour de clé, mises à jour de métadonnées de table, etc ...) pendant le chargement. Pour la troisième option, vous pouvez écrire un synchroniseur qui compare les lignes entre les deux bases de données et effectue les mises à jour si nécessaire. Cependant, alors vous êtes en train d'aspirer le contenu d'un serveur à l'autre et de faire des opérations rangée par rangée. De plus, vous devrez gérer toutes les mises à jour de la clé étrangère dépendante et des relations avec les enfants, et cela deviendra vite compliqué. À ce stade, il vaut mieux utiliser l'option mysqldump à la place.

Bien sûr, vous devriez mettre à jour votre MySQL vers quelque chose de plus moderne. v4.x est très obsolète. Vous devriez avoir au moins une version 5.0, de préférence une version 5.1 à la place.

Questions connexes