Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Tabellen auf zwei Hosts synchronisieren

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von strzata, 25 Juni 2017.

  1. strzata

    strzata Benutzer

    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
     
  2. BerndB

    BerndB Datenbank-Guru

    Hallo,

    Es gibt auch MultiMaster. Da sollte das ganze kein Problem sein
     
  3. strzata

    strzata Benutzer

    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 ...
     
  4. BerndB

    BerndB Datenbank-Guru

    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
     
  5. strzata

    strzata Benutzer

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden