"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

MySQL Datenbank kopieren

jb 17.11.2005 - 07:29 721 7
Posts

jb

Here to stay
Registered: May 2000
Location: /home/noe/
Posts: 3514
Der Inhalt einer MySQL Tabelle soll regelmäßig von einem Rechner auf einen anderen kopiert werden, leider ist der Quellrechner durch eine Firewall so abgeschirmt, sodaß ich nur per HTML (phpmyadmin) die Daten rausholen kann. Ein manueller Export per Hand und anschließender Import per Hand ist mir aber zu umständlich, das soll automatisch laufen.

Auf dem Zielrechner habe ich SSH Zugriff und könnte auch einen Cron-Job einrichten (lassen), der mir ein Script automatisch ausführt. Zugriff auf die dortige Datenbank habe ich auch. Ein Script, daß die Daten am Zielrechner in die Datenbank schickt läuft auch schon.
Ich habe zwar am Quellrechner auch SSH Zugriff, das bringt aber nix, weil ja nur Port 80 offen ist und ich deshalb die Daten nicht zum anderen Rechner rüberbringe.

Es geht also nur darum, die Daten vom Quellrechner automatisiert irgendwie rüberzubekommen. Meine Idee wäre gewesen, daß das Script Phpmyadmin beim Quellrechner aufmacht (ist natürlich per htaccess geschützt), die Tabelle rauszieht und in eine Datei auf den Zielrechner schreibt.

Falls einer Bedenken hat, das Ganze ist 100% legal, ich habe Accounts auf Quell und Zielrechner vom jeweiligen Admin bekommen und auch die Erlaubnis, die Daten rauszuspielen, nur dürfen wir keine Ports auf der Firewall aufmachen.
Wer hat eine Idee, wie das Ganze möglichst einfach realisiert werden kann?
Bearbeitet von jb am 19.11.2005, 00:01

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Ich würde auf dem Quellrechner ein PHP oder CGI-Script schreiben, das die Tabelle in ein File schmiert und dieses dann per HTTP zurückliefert. Das würde ich dann vom Zielrechner aus aufrufen.

jb

Here to stay
Registered: May 2000
Location: /home/noe/
Posts: 3514
Hehe, ich hab scheinbar mal wieder zu kompliziert gedacht...

Das SQL File hab ich jetzt schon mal so hingebogen, daß es im Browser angezeigt wird (einfach ins Verzeichnis kopiert wo die html und php Dateien liegen).
Gibts einen PHP Befehl, der Daten von einer URL auslesen und in ein File oder in eine Variable schreiben kann?

Das SQL File hat ca. 900kByte und ca. 15000 Datensätze, die Datensätze schauen schon so aus:
Zitat
INSERT INTO tabellenname VALUES (3, 4, '01.06.2002', 0);
Bearbeitet von jb am 17.11.2005, 13:30

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von jb
Gibts einen PHP Befehl, der Daten von einer URL auslesen und in ein File oder in eine Variable schreiben kann?
file_put_contents (..., $_GET[...])

jb

Here to stay
Registered: May 2000
Location: /home/noe/
Posts: 3514
Zitat von watchout
file_put_contents (..., $_GET[...])

Also das ist es nicht, aber "file_get_contents" scheint das zu sein, was ich brauche. Er macht aber leider bei ca. 350kByte Schluß, muß also das ursprüngliche SQL File auf 3 oder 4 Teile aufsplitten, alternativ könnte ich auch schaun, daß nur die wirklich geänderten Datensätze übernommen werden. Aber das wird schon was.

Meine Idee wäre, Username und Paßwort per Variable zu übergeben, also die Url z.b. mit http://www.xyz.de/index.php?user=abc&pw=1234 aufrufen, oder ist das als komplett unsicher und darum unbrauchbar?


Oder ich "file_get_contents" irgendwie Username und Paßwort mitgeben?

Crash Override

BOfH
Registered: Jun 2005
Location: Germany
Posts: 2951
Wieso PHP? müsste der entfernte Rechner nicht mit wget rankommen wenn die Datei im geschützten Verzeichnis liegt?

probiere mal: man wget

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von jb
Also das ist es nicht, aber "file_get_contents" scheint das zu sein, was ich brauche. Er macht aber leider bei ca. 350kByte Schluß, muß also das ursprüngliche SQL File auf 3 oder 4 Teile aufsplitten, alternativ könnte ich auch schaun, daß nur die wirklich geänderten Datensätze übernommen werden. Aber das wird schon was.

Meine Idee wäre, Username und Paßwort per Variable zu übergeben, also die Url z.b. mit http://www.xyz.de/index.php?user=abc&pw=1234 aufrufen, oder ist das als komplett unsicher und darum unbrauchbar?


Oder ich "file_get_contents" irgendwie Username und Paßwort mitgeben?
mir is nicht ganz klar was du wirklich machen willst - aber mit file_get_contents kannst du definitiv kein file schreiben.
UN/PW kann man in http://einer URL üblicherweise per prot://UN:PW@serverpath übergeben.

jb

Here to stay
Registered: May 2000
Location: /home/noe/
Posts: 3514
Ich glaub mit WGET komme ich am weitesten, hab das mal getestet und es schaut recht gut aus, danke mal für eure Bemühungen!

Die Lösung wird jetzt so aussehen:
Das SQL File auf dem Quellrechner wird in ein bestimmtes Verzeichnis kopiert von wo aus ich per Web Zugang habe (über Htaccess geschützt).
Auf dem Zielrechner rennt ein Cronjob, der per Wget das File vom Quellrechner abholt und anschließend gleich in die Datenbank schreibt.
Daraus erstellt dann das Script die Webseite auf dem Zielrechner.
Bearbeitet von jb am 19.11.2005, 00:06
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz