Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12665[/thread]

Rechner-Absturz: was machen meine Daten in der DB?

Leser: 1


<< >> 5 Einträge, 1 Seite
Hagen
 2008-10-22 12:03
#115688 #115688
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo!

Folgende Situation:
Auf einem Laptop läuft eine Anwendung (wahrscheinlich entweder Perl/Tk mit MySQLite oder Xampp) und es werden diverse Einträge in die Datenbank gemacht.

Was passiert mit den Daten, wenn der Rechner plötzlich abstürzt/einen Defekt hat (in dem vorliegendem Fall ist das leider nicht so unwahrscheinlich, da der Laptop mechanisch etwas stärker beansprucht wird (Außeneinsatz, Zelt)):

a) bleibt die Datenbank in einem lesbaren Zustand (hängt wahrscheinlich auch vom Betriebssystem/Dateissystem ab)

b) bleiben alle Daten erhalten (auch die zuletzt eingegeben oder können die sich nur im RAM befunden haben)

Hat sich vielleicht schon jemand mit der Problematik beschäftig oder kann mir einen Tipp geben, wo ich weitere Informationen dazu finden kann?

Ein spontaner "Backupansatz" war, sämtliche Aktionen in eine Datei (oder mehrere) zu schreiben, so dass ich im Notfall die DB wieder herstelle könnte. Würde man diese Dateien gleich auf einem externen Medium speichern (USB-Stick), könnte man damit den alten Zustand wieder herstellen.

Macht das Sinn oder gibt es bessere Lösungen? (Ein Raid ist derzeit (leider) nicht machbar).

Gruß

Hagen
Gruß
Hagen
pq
 2008-10-22 12:28
#115689 #115689
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wenn der rechner sich aus welchem grund auch immer plötzlich ausschaltet, hast du gar keine
garantie, dass die daten noch irgendwie verwendbar sind. wie auch, wenn mitten in einem
schreibvorgang abgebrochen wird. evtl. kann beim nächsten start die db selbst versuchen,
daten wieder herzustellen.
mach ein regelmässiges backup, am besten setz einen replikanten auf, von dem du dann immer
einen dump ziehst.
ausgeführte statements müsstest du eigentlich aus dem binlog ziehen können (bei mysql, k.a.
wie/wo das bei anderen dbs gespeichert wird). hab ich aber auch noch nicht gemacht.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
nepos
 2008-10-22 12:36
#115690 #115690
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ganz allgemein hängt das von der DB-Engine ab.
Wenn du eine DB-Engine hast, die z.B. mit Transaktionen arbeitet, dann sollte die Datenbank auch nach einem Crash in einem konsistenten Zustand sein.
SQLite hat da was drin, PostgreSQL auch. Bei MySQL kenn ich mich nicht aus, da hab ich aber das hier gefunden: http://www.mysqlperformanceblog.com/2006/07/30/mys...
Spieler
 2008-10-23 12:32
#115715 #115715
User since
2007-09-24
70 Artikel
BenutzerIn
[default_avatar]
Hallo,
http://www.postgresql.org/docs/8.2/interactive/runtime-config-wal.html

fsync (boolean)

If this parameter is on, the PostgreSQL server will try to make sure that updates are physically written to disk, by issuing fsync() system calls or various equivalent methods (see wal_sync_method). This ensures that the database cluster can recover to a consistent state after an operating system or hardware crash.

Hilft aber natürlich nicht, wenn das Dateisystem beschädigt ist.

Grüße, Christoph
nepos
 2008-10-23 13:25
#115716 #115716
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das ist per Default an und es wird explizit gewarnt, das auszuschalten.
<< >> 5 Einträge, 1 Seite



View all threads created 2008-10-22 12:03.