Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment synchroniser une base de données MySQL entre deux bases de données distantes (sans technique de réplication de base de données MySQL)

Comme l'indique la question pour synchroniser tous données d'un serveur à un autre, je pense que vous pouvez utiliser une solution relativement simple, impliquant mysqldump .

Je pense que vous pouvez tout faire depuis le serveur dédié :

mysqldump --user=<username> --password=<password> --host=<server 1 hostname> --port=<port> --add-drop-database <database name> > dump.sql

Remplacez <username> , <password> , <port> et <server 1 hostname> par les détails de connexion pour le serveur 1. Remplacez par le nom de la base de données sur le serveur 1 que vous souhaitez copier sur le serveur 2. Si vous souhaitez copier toutes les bases de données, remplacez par l'option --all-databases.

Cela créera un fichier appelé dump.sql dans le répertoire courant. Vous pouvez ensuite charger ceci dans le serveur 2 :

mysql --user=<username> --password=<password> --host=<server 2 hostname> --port=<port> <database name> < dump.sql

Remplacez <username> , <password> , <port> et <server 2 hostname> avec les détails de connexion pour le serveur 2.

Cela prendra le fichier dump.sql et le chargera dans la base de données sur le serveur 2. Cela supprimera la base de données sur le serveur 2 - ainsi toutes les données existantes seront remplacées par celles de dump.sql .

Vérifiez les options de mysqldump (concernant les bases de données de suppression, les tables de suppression, etc.) et adaptez les commandes ci-dessus à votre situation. Je pense que si vous connectez les choses correctement, vous pouvez même contourner le fichier intermédiaire et connecter mysqldump sur le serveur 1 à mysql sur le serveur 2 à l'aide d'un socket.

Pour couvrir la partie "automatisée" de cette question, vous pouvez exécuter les commandes ci-dessus sous cron et les programmer pour qu'elles s'exécutent le premier jour de chaque mois à une heure appropriée.