Ich möchte den Inhalt einer MySQL-Datenbank in eine MS SQL Server 2008-Datenbank replizieren.
Ist das möglich? Kann jemand die Schritte beschreiben, die erforderlich sind, um dies zu erreichen?
Vielen Dank.
Ich möchte den Inhalt einer MySQL-Datenbank in eine MS SQL Server 2008-Datenbank replizieren.
Ist das möglich? Kann jemand die Schritte beschreiben, die erforderlich sind, um dies zu erreichen?
Vielen Dank.
Antworten:
Persönlich würde ich in die MS SQL-Methode im Vergleich zum Push von der MySQL-Methode ziehen. Warum? Nun, Windows hat 32-Bit- und 64-Bit-MySQL-ODBC-Treiber bereit und das Einrichten eines Verbindungsservers ist trivial. Ich habe viele MySQL-Server, die mit MS SQL verbunden sind. Außerdem ist die Verbindung zu MS SQL unter Linux / Unix nicht immer gut und Sie können normalerweise nicht alle Funktionen nutzen. FreeTDS hat Einschränkungen; Sie können sie eher früher als später treffen. Warum also nicht einfach überspringen? Dies alles setzt voraus, dass Sie MySQL unter * nix ausführen. Wenn nicht, kommt es etwas näher an 50/50 heran, aber ich würde mich trotzdem für MS SQL entscheiden, da es sich so anhört, als wäre es nicht die "Live" -Datenbank. Daher ist es idealer, die Last für eine ETL oder Verarbeitung zu laden. Die GoldenGate-Lösung klingt interessant, ist aber sicher nicht kostenlos.
In Anbetracht der Tatsache, dass ich diese Art von Szenario mit MySQL- und Oracle-Datenbanken eingerichtet habe, die auf MS SQL repliziert werden, werde ich einige Tipps geben, die für mich am besten funktioniert haben:
Hoffe die Tipps helfen!
Die gleiche Frage wurde hier in StackOverflow behandelt: Replikation von MySQL nach MSSQL .
Es scheint, dass es einige Problemumgehungen gibt, aber keine sehr einfache Lösung.
Ich glaube, Sie sollten auf jeden Fall versuchen, ein SSIS-Paket zu erstellen, um die erforderlichen Daten aus MySQL DB in MSSQL DB zu importieren. Mit SSIS können Daten aus verschiedenen Quellen importiert werden. Dann sollten Sie in der Lage sein, das Paket mit Windows Task Scheduler oder SQL-Jobs zu planen.
Wenn Sie mit Replikation Protokollversand oder ähnliches meinen, glaube ich, dass Sie kein Glück haben. Sie können jedoch auf jeden Fall eine MySQL-Datenbank als Verbindungsserver einrichten und Ihr eigenes Replikationsschema erstellen. Am einfachsten ist es, regelmäßige Schnappschüsse aller Tabellen mit Anweisungen zum Abschneiden und Einfügen zu erstellen. Fügen Sie Komplexität hinzu, wie es Ihre Anforderungen erfordern.
Sie können dazu GoldenGate für MySQL und MS SQL verwenden. Sie würden einfach das GoldenGate-Produkt auf jeder Seite installieren und dann wie bei einer homogenen Replikation vorgehen.
Alternativ können Sie für eine "Snapshot" -Replikation ein Python-Skript (oder ein ähnliches Skript) verwenden, um einfach eine Verbindung zu beiden Datenquellen herzustellen (mit UnixODBC und FreeTDS , um eine Verbindung zu MS SQL herzustellen) und die einseitigen Tabellen SELECT
für jede Zeile durchlaufen INSERT
auf dem anderen. Da MSSQL Transaktionen hat und Ihr Ziel ist, können Sie eine Transaktion starten, DELETE
alles aus allen Tabellen, die Kopie ausführen, COMMIT
und es wird sofort angezeigt, wenn verbundene Benutzer auf dem Ziel betroffen sind, es gibt keine Inkonsistenzen (sofern diese nicht vorhanden sind) auf der Quelle natürlich).