Transfer von Datenuntermengen

Transfer von Datenuntermengen

am 09.05.2007 17:52:09 von Johannes Vogel

Hi Leute

Ich habe zwei MySQL-Server A und B, wobei ich von einer Maschine (B)
über mysql -h auf die andere zugreiffen kann. Jetzt würde ich
gerne auf B ein Query ausführen, welches eine Tabelle in A mit anderen
Tabellen von B joined.

Ausschliessen möchte ich Master/Slave-Infrastrukturen, weil ich keine
Lust habe, das einzurichten und das Probleme seitens Firewall geben
könnte - die ich nicht bedienen darf.

Weiter möchte ich gerne auf B arbeiten, weil das ein Linux ist und A ein
Windoof. Also kann ich auch nicht B's Daten in A reinkopieren.

Meine Idee: Da ich nur auf Teile der Tabelle in A zugreiffen will, eine
View zu erstellen, diese mit mysqldump zu dumpen und bei B wieder
einladen. Leider hatte ich kein Erfolg, weil mysqldump einfach nur die
View-Definition dumped, statt die Daten darin (wohl korrekterweise).

Any idea?
Johannes

Re: Transfer von Datenuntermengen

am 09.05.2007 17:54:53 von Daniel Fischer

Johannes Vogel!

> Meine Idee: Da ich nur auf Teile der Tabelle in A zugreiffen will, eine
> View zu erstellen, diese mit mysqldump zu dumpen und bei B wieder
> einladen. Leider hatte ich kein Erfolg, weil mysqldump einfach nur die
> View-Definition dumped, statt die Daten darin (wohl korrekterweise).

Das ist korrekt, ja. Du könntest vorher das View materialisieren
(kaum Aufwand: CREATE TABLE meinMaterialisiertesView SELECT * FROM
meinView).

Alternativ kannst du dir auch die Storage Engine FEDERATED angucken. Dabei
würde dein DB-Server auf B genau wie ein auf B lokal laufender
MySQL-Client auf die DB auf A zugreifen, firewalltechnisch gibt es also
nichts zu beachten, da du geschrieben hast, dass dieser Zugriff von einem
lokal laufenden Client aus funktioniert.

Ein JOIN zwischen einer Tabelle auf A und einer Tabelle auf B ist dann
ganz normal wie jeder andere JOIN über den DB-Server auf B möglich.

Das MySQL-Handbuch zu FEDERATED:

http://dev.mysql.com/doc/refman/5.0/en/federated-use.html



Gruß
Daniel

Re: Transfer von Datenuntermengen

am 09.05.2007 18:54:11 von Johannes Vogel

Hi Daniel

Daniel Fischer wrote:
>> Meine Idee: Da ich nur auf Teile der Tabelle in A zugreiffen will, eine
>> View zu erstellen, diese mit mysqldump zu dumpen und bei B wieder
>> einladen. Leider hatte ich kein Erfolg, weil mysqldump einfach nur die
>> View-Definition dumped, statt die Daten darin (wohl korrekterweise).
> Das ist korrekt, ja. Du könntest vorher das View materialisieren
> (kaum Aufwand: CREATE TABLE meinMaterialisiertesView SELECT * FROM
> meinView).

Ach so, ja.. :-)

> Alternativ kannst du dir auch die Storage Engine FEDERATED angucken. Dabei
> würde dein DB-Server auf B genau wie ein auf B lokal laufender
> MySQL-Client auf die DB auf A zugreifen, firewalltechnisch gibt es also
> nichts zu beachten, da du geschrieben hast, dass dieser Zugriff von einem
> lokal laufenden Client aus funktioniert.

Noch besser!

> Ein JOIN zwischen einer Tabelle auf A und einer Tabelle auf B ist dann
> ganz normal wie jeder andere JOIN über den DB-Server auf B möglich.

Herzlichen Dank! Mit FEDERATED habe ich's gelöst.
Johannes