web-dev-qa-db-fra.com

Synchronisez deux bases de données MySQL dans deux emplacements différents

J'ai deux bases de données MySQL identiques, l'une dans un serveur interne et l'autre dans un serveur d'hébergement Web. Je souhaite mettre à jour la base de données sur l'hôte Web chaque jour avec la base de données sur le serveur interne. Existe-t-il un moyen d'automatiser ce processus, comment puis-je le faire manuellement? Si je dois le faire manuellement, faut-il que j'obtienne un vidage SQL de la base de données sur le serveur interne, puis l'importe sur la base de données sur l'hôte Web? Quelqu'un peut-il donner des conseils.

24
ry12

Vous avez quelques options:

  1. Configurez la réplication MySQL entre les serveurs. Votre serveur interne peut agir en tant que maître et le serveur hôte Web en tant qu'esclave. Toutes les mises à jour effectuées sur le maître seront immédiatement répliquées sur l'esclave (en supposant une connexion fonctionnelle). Ce sera probablement l'option la plus simple et la plus efficace à choisir. Pour utiliser la réplication, votre base de données interne doit être accessible sur le réseau à partir de l'hôte Web.

    Vous pouvez en savoir plus sur la réplication ici .

  2. Chaque jour, vous pouvez effectuer un vidage mysqld sur le serveur interne, télécharger le fichier de vidage sur l'hôte Web et importer les données. Comme il s'agit d'un vidage complet, si vous avez une très grande base de données, cela pourrait ne pas être possible. Si vous le souhaitez, cette procédure peut potentiellement être scriptée pour éviter d'avoir à le faire manuellement.

  3. Vous pouvez configurer journalisation binaire sur le serveur interne. Vous pouvez ensuite envoyer les journaux binaires à l'hôte Web et les appliquer à la base de données, en lisant efficacement toutes les transactions qui se sont produites ce jour-là sur le serveur Web. En fait, c'est de toute façon ce qui se passe avec la réplication, donc vous iriez presque toujours avec la réplication configurée au lieu de cette option.

S'il n'y a pas de connexion entre les deux bases de données, prendre mysqldumps chaque jour sera le chemin le plus facile à prendre.

24
Matt Healy

Vous pouvez également utiliser des options telles que symmetricDS qui peuvent aider à synchroniser deux bases de données. Avec cela, vous pourrez sélectionner les tables qui doivent être synchronisées de cette façon, vous pouvez économiser la bande passante Internet. Cela conviendrait également dans le scénario en cas de manque de connectivité entre deux sites.

4
Siva Karthikeyan

Comment configurer la réplication de base de données avec MariaDB: https://www.techrepublic.com/article/how-to-set-up -database-replication-with-mariadb /

2
Dylan B

Vous pouvez utiliser Navicat . Il s'agit principalement d'un gestionnaire de base de données, mais il dispose de fonctionnalités de transfert et de synchronisation de données ainsi que d'un planificateur afin que vous puissiez automatiser. Ce n'est pas gratuit mais il y a un essai de 30 fonctions complètes.

0
Josh A.