Per Cron datenbank abgleichen

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
Deejoy
Beiträge: 140
Registriert: 20.12.2003 00:09:23

Per Cron datenbank abgleichen

Beitrag von Deejoy » 14.06.2004 20:58:43

Ich möchte eine Datenbank mit meiner Lokalinstallierten über SSH abgleichen. Das ganze soll alle 5 min passieren. Ich gehe mal davon aus das man die mit einem Cron lösen kann. Jetzt bräuchte ich nur mal einen ansatz wie ds ganze ausehen müsste. Wie erfolgt der zugriff etc etc

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 15.06.2004 09:54:29

Wenn Du das per cron machen willst - also automatisiert - brauchst Du schon mal eine Public-Key-Athentisierung per ssh, sprich, Du musst ssh so konfigurieren, dass Du kein Password eingeben brauchst/musst.

Um ein Programm alle 5 Min. ausführen zu lassen, sieht die Syntax so aus:

Code: Alles auswählen

*/5 * * * /pfad/zum/programm
Datenbanken abgleichen, mmh, das ist nicht trivial, zumal Du das alle 5 Min. machen willst. Ich glaube, da kommst Du in Schwierigkeiten. Wenn Du es nur einmal am Tag abgleichen willst, dann würde ich evtl. die Datenbank nachts anhalten, dann per rdist über ssh synchronisieren und anschliessend wieder starten.

Ich hoffe, ich konnte Dir ein paar Anregungen geben,

Gruss, mistersixt.

Benutzeravatar
ManInTheShak
Beiträge: 108
Registriert: 30.09.2003 19:50:54

Beitrag von ManInTheShak » 15.06.2004 10:33:09

Wenn es eine MySQL Datenbank würde ich dir empfehlen dir die Dokumentation
(http://dev.mysql.com/doc/mysql/de/Replication.html) mal anzusehen.
Bei MySQL wird die Replikation über die binäre Logdatei gelöst.

Alternativ kannst du eibne Sicherung / Dump machen, der dann in deiner lokalen DB einspielst.

Benutzeravatar
Deejoy
Beiträge: 140
Registriert: 20.12.2003 00:09:23

Beitrag von Deejoy » 15.06.2004 13:21:54

Ja es ist ein schwieriges unterfangen. das Problem ist ich brauch die Datenbank alle 5 min weil es sich dabei um eine Realtimeschnittstelle handelt.
Da ich aber die datenbank um gewisse dinge noch erweitern möchte brauch ich diese lokal und das halt alle 5 min um akteull zu bleiben.

@ManInTheShak
Ja das ding habe ich auch schon gelesen klappt aber nicht weil es eine Replikation macht. Ich brauche ja nur die Daten der Datenbank auf meiner. Wenn ich aber richtig gelesen habe gibt es doch auch die möglichkeit es über ein php Script zu machen !
PHP liest die daten aus die ich über ssh bekomme und schreibt sie in meine Datenbank.Müste doch gehen oder ? Das ganze dann über einen cron.
jetzt müßte ich nur wissen wie man ein phpscript über cron anspricht.
Angenommen ich würde ein php Script unter var/www/abgleich.php speichern.
dann sieht der cron so aus

Code: Alles auswählen

*/5 * * * /var/www/abgleich.php 
richtig ??[/code]

Benutzeravatar
Deejoy
Beiträge: 140
Registriert: 20.12.2003 00:09:23

Beitrag von Deejoy » 15.06.2004 13:31:41

So da habe ich aber noch ne frage zu ssh.

ICh stell die evrbindug zu meinem Server derzeit über den putty client her. So dort logge ich mich ein und um auf die Datenbank per ssh zugreifen zu können gebe ich folgendes ein

Code: Alles auswählen

ssh -N -T -L 4000:218.21.24.65:3306 res008@www.xxxxx.de 
danach verlangt er noch nach dem Passwort und dann steht die Verbindung. Leider jedoch nur solange ich putty geöffnet habe. Wenn ich putty schließe geht nach kurzer Zeit auch die verbindug verloren. kann ich diese nicht dauherhaft aufrecht erhalten bzw. auch jede 30 min überprüfen lassen[/code]

Benutzeravatar
emge
Beiträge: 1525
Registriert: 20.10.2003 22:05:46
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: 50° 45' 0" N 12° 10' 0" E

Beitrag von emge » 15.06.2004 13:40:35

Mein Vroschlag wäre, einen SQL-Dump von der Original-Datenbank zu ziehen. Diese SQL-Datei kannst du dann an den Ziel-Host senden. Dort wird die Datei entweder von einem speziellen Skript direkt angenommen und in die lokale Datenbank importiert oder ein Skript überwacht ein bestimmtes Verzeichnis, ob eine neue Version deines Dumps auftaucht und stösst dann den Import an. Eine Weitere Alternative wäre, dass der lokale Rechner ein Script auf dem DB-Rechner anstößt, dass den Dump zieht, den Inhalt einliesst und dann in die lokale DB importiert. Diese Varianten lassen sich eigentlich alle mit Apache/PHP/Cron realisieren. Für die Sicherheit einer Apache/PHP-basierten Lösung würde ich aber meine Hand nicht ins Feuer legen.

Grüße, Marco

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 15.06.2004 13:50:05

Deejoy hat geschrieben:danach verlangt er noch nach dem Passwort und dann steht die Verbindung. Leider jedoch nur solange ich putty geöffnet habe. Wenn ich putty schließe geht nach kurzer Zeit auch die verbindug verloren. kann ich diese nicht dauherhaft aufrecht erhalten bzw. auch jede 30 min überprüfen lassen
screen ist dein Freund!

auf dem zielrechner screen starten und das machen, was du willst, dann mit "Ctrl-A D" detachen. Dann kannst du dich ausloggen. Beim nächsten login ein "screen -r" und du bist wieder da (screen läuft natürlich die ganze Zeit im Hintergrund weiter)
Zuletzt geändert von Joghurt am 15.06.2004 14:19:15, insgesamt 1-mal geändert.

Benutzeravatar
Deejoy
Beiträge: 140
Registriert: 20.12.2003 00:09:23

Beitrag von Deejoy » 15.06.2004 13:52:51

Klasse hast du vielleicht ne doku über screen ?? Kenne ich noch nicht das sind alles für mich kleine Übungen die ich mit praktischen gleich verbinde :)

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 15.06.2004 13:55:33

Ich nicht, aber :google:
http://www.kuro5hin.org/story/2004/3/9/16838/14935

Ansonsten "info screen"

Benutzeravatar
Deejoy
Beiträge: 140
Registriert: 20.12.2003 00:09:23

Beitrag von Deejoy » 15.06.2004 13:59:13

Ja habe auch noch was im Buch eben gefunden. Gleich mal ausprobiert mal sehen ob alles richtig war

Benutzeravatar
Deejoy
Beiträge: 140
Registriert: 20.12.2003 00:09:23

Beitrag von Deejoy » 15.06.2004 14:07:19

fett klasse danke funktioniert bestens

Benutzeravatar
ManInTheShak
Beiträge: 108
Registriert: 30.09.2003 19:50:54

Beitrag von ManInTheShak » 15.06.2004 20:29:34

Deejoy hat geschrieben:So da habe ich aber noch ne frage zu ssh.

ICh stell die evrbindug zu meinem Server derzeit über den putty client her. So dort logge ich mich ein und um auf die Datenbank per ssh zugreifen zu können gebe ich folgendes ein

Code: Alles auswählen

ssh -N -T -L 4000:218.21.24.65:3306 res008@www.xxxxx.de 
danach verlangt er noch nach dem Passwort und dann steht die Verbindung. Leider jedoch nur solange ich putty geöffnet habe. Wenn ich putty schließe geht nach kurzer Zeit auch die verbindug verloren. kann ich diese nicht dauherhaft aufrecht erhalten bzw. auch jede 30 min überprüfen lassen[/code]
Warum so Schwierig über einen getunnelte verbindung ?
Ich gehe mal davon aus das beide Maschinen Unix/Linuxmaschinen sind die über die Standard MySQL Programme verfügen.

Du kannst den gesamten Vorgang noch vereinfachen indem du die SSH-Verbindung mit private/public Key löst. [1] Dann must das Passwort für die SSH-Verbindung nicht mehr eingeben.
Dann kannst du einfach ein mysqldump auf dem Server ausführen und das Ergebnis an nen MySQL Client weitergeben, der dann die Daten auf deinem lokalem Rechner einspielt.
Idealer weise sollte man vorsichtig mit den verwendeten Usern umgehen da die MySQL Passwörter im Befehlsaufruf stehen. Hier sollten separate User verwendet werden.

Beispiel (Eine Zeile):

Code: Alles auswählen

ssh -l <sshuser> <servername> mysqldump -u <mysqluser> --password=<mysqlpasswort> --opt --add-drop-table <dbnamen> | mysql -u <lokalermysqluser> --password=<lokalesmysqlpasswort> <lokalerdbname>
Beim mysqldump werden in diesem Beispiel die lokalen Datenbanken erst gelöscht und dann mit Daten gefüllt.

Dieses Verfahren verwende ich in einem Cronjob um eine Entwicklungsdatenbank zu aktualisieren, jeduch nur täglich, da es sich um eine größere Datenbank handelt.

[1] http://www2.uibk.ac.at/zid/software/uni ... ickey.html
[edit] google liefert hierzu auch recht vielhttp://www.google.de/search?q=ssh+public+key&lr=lang_de[/edit]

Benutzeravatar
Deejoy
Beiträge: 140
Registriert: 20.12.2003 00:09:23

Beitrag von Deejoy » 15.06.2004 20:36:01

Das ganze hört sich gut an werde es mal ausprobieren. Weiter fragen kommen bestimmt. Jetzt lese ich mich erstmal durch

Antworten