Per Cron datenbank abgleichen
Per Cron datenbank abgleichen
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
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
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:
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.
Um ein Programm alle 5 Min. ausführen zu lassen, sieht die Syntax so aus:
Code: Alles auswählen
*/5 * * * /pfad/zum/programm
Ich hoffe, ich konnte Dir ein paar Anregungen geben,
Gruss, mistersixt.
- ManInTheShak
- Beiträge: 108
- Registriert: 30.09.2003 19:50:54
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.
(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.
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
richtig ??[/code]
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
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
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]
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
- 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
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
Grüße, Marco
screen ist dein Freund!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
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.
- ManInTheShak
- Beiträge: 108
- Registriert: 30.09.2003 19:50:54
Warum so Schwierig über einen getunnelte verbindung ?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
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]Code: Alles auswählen
ssh -N -T -L 4000:218.21.24.65:3306 res008@www.xxxxx.de
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>
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]