Synchronisieren Sie zwei MySQL-Datenbanken an zwei verschiedenen Orten

19

Ich habe zwei identische MySQL-Datenbanken, eine auf einem internen Server und die andere auf einem Webhosting-Server. Ich möchte die Datenbank auf dem Webhost jeden Tag mit der Datenbank auf dem internen Server aktualisieren. Gibt es eine Möglichkeit, diesen Prozess zu automatisieren, auch wie kann ich dies manuell tun? Muss ich einen SQL-Speicherauszug der Datenbank auf dem internen Server abrufen und dann in die Datenbank auf dem Webhost importieren, wenn ich es manuell ausführen möchte? Kann mir bitte jemand einen Rat geben.

ry12
quelle
Sie können auf die vorhandene Antwort verweisen, die hier in StackOverflow unter stackoverflow.com/questions/52583/…
Mahesh Patil,
Etwa # 2 Wenn ich einen vollständigen Dump von der internen Datenbank ausführen und bei der Produktion importieren würde, würde dies die Online-Datenbank überschreiben. Ich meine, ich habe Online-Käufer auf der Datenbank, die im Web gehostet werden, und ich möchte die internen Datenbankkäufe in die Live-Datenbank migrieren passieren Auto-Erhöhungen zwischen zwei, wenn sie beide die gleiche ID reservieren, wird es chaotisch sein!?
shareef

Antworten:

20

Sie haben einige Möglichkeiten:

  1. Richten Sie die MySQL-Replikation zwischen den Servern ein. Ihr interner Server kann als Master und der Webhost-Server als Slave fungieren. Alle auf dem Master durchgeführten Aktualisierungen werden sofort auf den Slave repliziert (sofern eine funktionierende Verbindung besteht). Dies ist höchstwahrscheinlich die einfachste und effektivste Option. Zur Verwendung der Replikation muss Ihre interne Datenbank über das Netzwerk vom Webhost aus zugänglich sein.

    Weitere Informationen zur Replikation finden Sie hier .

  2. Sie können jeden Tag einen mysqldump auf dem internen Server ausführen, die Dump-Datei auf den Webhost hochladen und die Daten importieren. Da dies ein vollständiger Speicherauszug ist, ist dies bei einer sehr großen Datenbank möglicherweise nicht möglich. Wenn Sie möchten, kann dieses Verfahren möglicherweise als Skript ausgeführt werden, um zu vermeiden, dass Sie es manuell ausführen müssen.

  3. Sie können die binäre Protokollierung auf dem internen Server einrichten . Anschließend können Sie die Binärprotokolle an den Webhost senden und auf die Datenbank anwenden, um alle Transaktionen, die an diesem Tag aufgetreten sind, effektiv auf dem Webserver abzuspielen. Tatsächlich geschieht dies sowieso bei der Replikation, sodass Sie fast immer die eingerichtete Replikation anstelle dieser Option verwenden würden.

Wenn keine Verbindung zwischen den beiden Datenbanken besteht, ist es am einfachsten, jeden Tag mysqldumps zu verwenden.

Matt Healy
quelle
Etwa # 2 Wenn ich einen vollständigen Dump von der internen Datenbank ausführen und bei der Produktion importieren würde, würde dies die Online-Datenbank überschreiben. Ich meine, ich habe Online-Käufer auf der Datenbank, die im Web gehostet werden, und ich möchte die internen Datenbankkäufe in die Live-Datenbank migrieren passieren Auto-Erhöhungen zwischen zwei, wenn sie beide die gleiche ID reservieren, wird es chaotisch sein!?
shareef
4

Sie können auch Optionen wie symmetricDS verwenden, um zwei Datenbanken zu synchronisieren. Auf diese Weise können Sie die zu synchronisierenden Tabellen auswählen und so Internetbandbreite sparen. Dies ist auch für das Szenario geeignet, in dem keine Verbindung zwischen zwei Standorten besteht.

Siva Karthikeyan
quelle
2

So richten Sie die Datenbankreplikation mit MariaDB ein: https://www.techrepublic.com/article/how-to-set-up-database-replication-with-mariadb/

Dylan B
quelle
1
Willkommen bei DBA.SE. Wir bedanken uns für Ihren Beitrag / Ihre Teilnahme. Die Community erwartet jedoch eine gewisse Qualität der Antworten. Bitte lesen Sie den folgenden Artikel: Wie schreibe ich eine gute Antwort? (Hilfecenter) Im Abschnitt Beantworten Sie die Frage gibt es einen kurzen Satz, der lautet: Links zu externen Ressourcen werden empfohlen, aber fügen Sie bitte einen Kontext um den Link hinzu, damit Ihre Mitbenutzer eine Vorstellung davon haben, was es ist und warum es dort ist
John aka hot2use
0

Sie könnten Navicat verwenden . Es ist in erster Linie ein Datenbankmanager, verfügt jedoch über Datenübertragungs- und Datensynchronisationsfunktionen sowie einen Planer, mit dem Sie automatisieren können. Es ist nicht kostenlos, aber es gibt eine 30-fache Testversion.

Josh A.
quelle