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