Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So synchronisieren Sie eine MySQL-Datenbank zwischen zwei entfernten Datenbanken (ohne MySQL-Datenbank-Replikationstechnik)

Wie die Frage besagt, alle zu synchronisieren Daten von einem Server zu einem anderen zu übertragen, denke ich, dass Sie eine relativ einfache Lösung verwenden können, die mysqldump beinhaltet .

Ich denke, Sie können dies alles vom dedizierten Server aus tun:

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

Ersetzen Sie <username> , <password> , <port> und <server 1 hostname> durch die Verbindungsdetails für Server 1. Ersetzen Sie durch den Namen der Datenbank auf Server 1, die Sie auf Server 2 kopieren möchten. Wenn Sie alle Datenbanken kopieren möchten, ersetzen Sie durch die Option --all-databases.

Dadurch wird eine Datei namens dump.sql erstellt im aktuellen Verzeichnis. Diese können Sie dann auf Server 2 laden:

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

Ersetzen Sie <username> , <password> , <port> und <server 2 hostname> mit den Verbindungsdetails für Server 2.

Dadurch wird die dump.sql-Datei genommen und in die Datenbank auf Server 2 geladen. Dadurch wird die Datenbank auf Server 2 abgelegt – also werden alle vorhandenen Daten durch die in dump.sql ersetzt .

Überprüfen Sie die Optionen für mysqldump (in Bezug auf Drop-Datenbanken, Drop-Tabellen usw.) und passen Sie die obigen Befehle an, damit sie für Ihre Situation geeignet sind. Ich denke, wenn Sie die Dinge richtig anschließen, könnten Sie sogar die Zwischendatei umgehen und mysqldump auf Server 1 über einen Socket mit mysql auf Server 2 verbinden.

Um den 'automatisierten' Teil dieser Frage abzudecken, könnten Sie die obigen Befehle unter cron ausführen und sie so planen, dass sie am ersten Tag jedes Monats zu einer geeigneten Zeit ausgeführt werden.