Seite 1 von 1

Hat jemand Ahnung von MySQL?

Verfasst: 10.02.2006 11:55
von Kukulkan
Hallo,

Sorry für den blöden Titel, aber ich hab was spezielles zu MySQL und irgendwie erhalte ich in allen Foren immer nur keine Antwort. Evtl. hat ja hier jemand eine Idee?

Ich habe einen Server auf dem meine (in PB geschriebene) Anwendung Daten in einer MySQL-Datenbank einfügt und verändert (INSERT und UPDATE). Die selbe Datenbank wird auch durch die (in PHP realisierte) Webseite verändert (INSERT, UPDATE und DELETE).

Erstes Problem: Ein tägliches Backup ist viel zu wenig. Am besten wäre ein Snapshot alle 5 Minuten (oder kürzer). Die Datenbank wird aber sehr gross werden (ca. einige GB in ein bis zwei Jahren). Ganze Backups zu ziehen fällt flach.

Zweites Problem: Das Backup soll auf einem entfernten Rechner in einer MySQL-Datenbank nachvollzogen werden oder zumindest so abgelegt sein dass es wieder in eine MySQL-Datenbank zurückgespielt werden kann.

Drittes Problem: Der zweite Rechner ist nicht im selben Haus wie der Server. Verbindung besteht sporadisch (DSL. Initiiert zB durch ein PB-Programm). FTP ist ebenso möglich wie das versenden und empfangen von e-Mail.

Einige Ideen hatte ich schon, scheitern aber an allem Möglichen.

Eine halbwegs passable Idee: Ich exportiere alle paar Minuten alle veränderten Datensätze. Diese Informationen versende ich per e-Mail (oder lege Sie auf einen FTP-Server etc.). Der Backup-Rechner holt diese e-Mails alle zwei Stunden ab und überträgt die daraus resultierenden Daten auf eine MySQL-Datenbank auf dem Backup-Rechner. Geht nicht, weil ich nicht nur INSERTS sondern auch UPDATES auf jeden Fall benötige. Dabei verweisen Datensätze auf andere ID's in anderen Tabellen. Das wird kaum konsistent durchzuführen sein. Dazu kommt, dass ich immer die veränderten Datensätze wissen muss. Könnte einen Trigger auf ein 'LastModified' Datumsfeld setzen, aber wie lese ich dann die Daten aus und füge Sie beim Backup-Rechner wieder ein?

Cluster fallen wegen der fehlenden Dauerverbindung aus.

Replikation kapier ich irgendwie nicht und kapier auch nicht wie ich das mit einer nur gelegentlichen Internetverbindung automatisieren kann.

Kann mir jemand helfen? Bitte :|

Volker

Re: Hat jemand Ahnung von MySQL?

Verfasst: 10.02.2006 12:53
von MonkeyBoogie
Volker Schmid hat geschrieben:Cluster fallen wegen der fehlenden Dauerverbindung aus.
Dann baust du dir deinen eigenen Cluster :)
Du brauchst als Start nur eine konsistente Datenbank mit genau den
gleichen Daten on- und offline. Danach logst du einfach alle Queries auf
dem Webserver und lädst die logs herunter (auch per email) und importierst
sie. Damit garantierst du ja, das die Queries, wie sie online eingefügt wurden
auch "offline" eingefügt werden.

Verfasst: 10.02.2006 15:29
von Kukulkan
Hi MonkeyBoogie,

Vielen Dank für deine Antwort! :D
Danach logst du einfach alle Queries auf dem Webserver und lädst die logs herunter (auch per email) und importierst sie.
Das hatte ich auch schon überlegt. Das Problem bestand darin, alle Query's zu erfassen. Ich muss dazu mein Programm und den gesamten PHP Source anpassen um alle Query's zu loggen. Das erschien mir zu umständlich. Dazu kommt, dass ein verlorengegangener Query (verlustige e-Mail) das ganze Konzept komplett über den Haufen werfen kann. Da muss mir noch was besseres einfallen...

Es muss doch schon andere gegeben haben die das Problem hatten.

Volker

Verfasst: 10.02.2006 15:58
von MonkeyBoogie
Volker Schmid hat geschrieben:Dazu kommt, dass ein verlorengegangener Query (verlustige e-Mail) das ganze Konzept komplett über den Haufen werfen kann.
Und warum legst du die Queries nicht in eine eigene Tabelle und wenn du die
Daten abgeholt hast, löschst du alle Queries. Die sind dann solange vorrätig,
bis _ein_ Programm sie löscht.
Bzw kann man daraus ja auch verschiedene Histories erstellen, wenn man
die Queries nicht löscht.
"SELECT * FROM TABLE WHERE time > $LastBackupTime "
"SELECT * FROM TABLE WHERE time > $OldBackupTime AND < $SpecifiedTime "