Tabellen auf zwei Hosts synchronisieren

strzata

Benutzer
Beiträge
24
Guten Abend,
nirgendwo kann ich finden, wie man in einem Script (oder StoredProcedure) mit zwei Connections zu zwei unterschiedlichen Hosts machen kann. Für einen Datenabgleich, der auf Knopfdruck angestossen werden soll, brauche ich die Tabelle Tab1 von Host1 (localhost) und die Tabelle Tab2 von einem anderen Host. Hab irgendwo gelesen, dass man mit der Syntax [host1].[db1].[tab1] eine Abfrage erreichen kann, aber bei unserer 5.6 kommt da nur ein Error.

Eine Replikation können wir leider nicht machen, da schon auf dem Server eine MasterTo Master eingerichtet ist. Mit einer Programmiersprache (z.B. Vb.Net) ist es über den MySqlDataAdapter kein Problem. Da kann ich eine Conn1 auf localhost und eine Conn2 zum anderen Server parallel laufen lassen. Mit dem DataAdapter kann ich dann über die jeweilige Conn meine Tabellen füllen lassen. Geht es nicht auch ohne Vb.Net oder Php in einem Script?

Grüße Norbert
 
Werbung:
Danke! Aber mein Server-Admin bekommt das nicht hin. Und ich gleich gar nicht. Ich könnte im Höchstfall ein Script, eine Batch oder eine StoredProcedure schreiben, wenn ich nur die Syntax wüsste ...
 
Schau dir mal das an. Connect storage Engine. Damit kannst du auf deinem Server eine Tabelle eines fremden Server einbauen.

Dann kannst du beide Tabellen einfach lokal behandeln.

Angelegt werden die ganz einfach wenn das Plugin installiert ist.

Welche schon bei dir installiert sind kannst du dir einfach mit

Code:
SHOW ENGINES;

anzeigen lassen

Code:
create table essai (
  num integer(4) not null,
  line char(15) not null)
engine=CONNECT table_type=MYSQL
connection='mysql://root@localhost/test/people';

Schau mal hier: CONNECT MYSQL Table Type: Accessing MySQL/MariaDB Tables
 
Werbung:
Das ist ja wirklich eine professionelle Antwort. Danke!
Also eine CONNECT Engine gibt es bei unserer 5.6 nicht. Maximal FEDERATED, aber auch "Not Supported". Damit soll es ja auch irgendwie gehen. Da läge noch eine Menge Stress vor mir, vor allem, weil ich den Linux Server mit der MySql-DB nicht selbst warten kann. Daher hab ich mich jetzt für VB.Net entschieden. Da gibt es den Merge-Befehl. Der grenzt fast an Zauberei. Hab gestern eine Tabelle mit 8000 Rows(Linux Server) mit einer mit 7600 Rows (Localhost) abgeglichen. Das hat 1500 millisec gekostet. Das werde ich heute noch verfeinern und für alle hundert Tabellen so programmieren. Ich ziehe mir also mit seinem SELECT jeweils zwei Tabellen in eine DataTable und hetze das MERGE drauf. Die synchronisierte Tab wird dann wieder weggeschrieben. Das sind pro Tabellenpaar 5 Zeilen Programmcode. Ich glaube, das bringt mich jetzt am schnellsten zum Ziel. Dennoch vielen Dank für Deine Hilfsbereitschaft!
Viele Grüße Norbert
 
Zurück
Oben