Datenbank sichern

    • Offizieller Beitrag

    also ich sichere mit mysql-front. klappt auch alles wunderbar nur beim rücksichern brauche ich stunden bzw. bald tage.

    aktuell ist die db 110 mb groß, da dauert die rücksicherung schon ca. 20 stunden. sichern geht in ca. 10 min.

    welches prog gibt es noch um datenbanken zu sichern und rückzusichern?

  • Ich vermute dass es am längsten dauert die Daten vom und zum Server zu übertragen. Zugegeben, ich kenne deine Anbindung nicht, aber wenn du nicht gerade eine T-1-Leitung (1,544 Mbit/s up & down) oder schneller hast, stellt diese dass Nadelöhr da. Um 110 MiByte zum Server zu übertragen braucht man bei einer normalen DSL-1000-Leitung der Telekom bereits rund zwei Stunden.

    Ich kenne MySQL-Front leider nicht, meine Erfahrungen beschränken sich auf phpMyAdmin und MySQL 4 auf der Linux-Kommandozeile.
    Dazu benötigst du z.B. einen telnet bzw. ssh-Zugang auf den Server der das Kontromisslos hostet. Wenn du über einen verfügst kannst du zum Sichern der kompletten Datenbank wie folgt vorgehen:

    • Start / Ausführen / telnet kontromisslos.de / Enter
    • login: <dein_benutzername> (z.B. kontromisslos) / Enter
    • Password: <dein_passwort> (das PW wird während der Eingabe weder angezeigt noch maskiert) / Enter
    • jetzt befindet du dich auf der Kommandozeile des Servers, zum Sichern der DB gibts du folgendes ein: /usr/local/mysql/bin/mysqldump -p <name_der_db> > kontrodb.sql (es gibt dort noch ein --opt Argument welches wohl bei MySQL-Serverversionen unter 4.1.0 angewendet werden sollte um ein besseres Backup zu erhalten - hierzu kan nich leider wenig sagen, das Argument gehört vor bzw. hinter -p)
    • Funktioniert dies nicht, versuche mysqldump ohne den Pfad der davor steht auszuführen. Funktioniert auch dass nicht frage deinen Serververwalter wo mysqldump auf dem Server liegt
    • Enter password: <passwort_für_den_mysql_server> (wird beim eintippen weder angezeigt noch maskiert / Enter
    • Das Sichern der Datenbank dauert bei ca. 10 MByte einige Sekunden, beim Kontro kann sich das auf einige Minuten erhöhen.
    • Um kein 110 MByte-File herunterladen zu müssen ist es sinnvoll das nun gemachte Backup noch mit gzip zu packen, das geht flott mit gzip kontrodb.sql - nach einigen Minuten müsste die 110 MiByte DB auf rund 30-45 MiByte geschrumpft sein
    • Nun kannst du das .sql.gz-File bequem per FTP vom Server holen und auf deinem Rechner sichern - es dürfte im Root-Verzeichnis deines Accounts liegen

    So - oder so in der Art - dürfte sich die Datenbank sichern lassen. Mit dem Wiederaufspielen habe ich leider entsprechend wenig Erfahrung da es einfach noch nicht nötig war. Ich denke dass sich das in etwa wie folgt darstellen müsste:

    • Backup-Datei (.sql.gz) an die Stelle des Webservers spielen wo die Backups immer abgelegt wurden
    • per telnet in den Server einloggen
    • gzip -d kontrodb.sql.gz - jetzt wird die DB zurück ins .sql-Format entpackt
    • wie es jetzt weitergeht kann ich leider nur vermuten... /usr/local/mysql/bin/mysql -p <name_der_db> < kontrodb.sql - der Pfeil (< >) stellt die Richtung des Datenflusses dar.

    Zum Nachlesen:

    Ich fürchte ich war keine große Hilfe. Ein Backup geht auf diese weise jedenfalls ziemlich fix. Wie lange allerdings das (wieder) einlesen der Daten dauert kann ich nicht sagen, da habe ich keine Erfahrungswerte.
    Die geringen Erfahrungen die ich in Hinblick auf MySQL habe lassen mich auch keine Aussage darüber treffen inwieweit man nur kleine Teile (einzelne Tabellen oder auch nur Zeilen) über diese Befehle wiederherstellen kann. Möglich ist es wahrscheinlich schon - fragt sich nur wie...

    schön schwammig, hm?
    time
    [edit: einen listenpunkt vergessen]

    Einmal editiert, zuletzt von timeserver (22. Mai 2004 um 15:50)

  • Haach ja, einzelne Teile, das wäre schön, wenn das ginge!

    (Da könnte man dann den Thread, der im Philo aktuell beschrieben wird, schnell woanders hinschieben, dann das Backup vom Philo drüberspielen, und den Thread wieder rückverschieben und alles wäre wie gehabt ... 8) )

  • Ich fürchte du stellst dir das zu einfach vor Mindy. In der Datenbank sind alle Postings zusammengefasst in einer Tabelle, dort wird nicht in Foren unterteilt.
    Das ganze sieht im allgemeinen Bereich in etwa wie folgt aus:

    • bb_boards - Hier werden die einzelnen Foren und ihre Eigenschaften gespeichert - Das Philosophieforum wird hier unter der Nummer 21 geführt
    • bb_threads - Hier werden die einzelnen Threads mit ihren Überschriften und Eigenschaften (z.B. geschlossener Beitrag, Umfrage usw.) gespeichert - Dieser Thread wird dort unter der Nummer 1515 geführt und wird über eine Verknüpfung dem Forum Nummer 3 (Techniks) zugeordnet
    • bb_posts - Hier werden die einzelnen Postings samt Eigenschaften (Autor als Benutzer-ID, Editiert, Icon usw.) gespeichert, so z.B. wie dieses hier - Dein Beitrag hätte hier die Nummer 38433 und wird über eine Verknüpfung dem Thema 1515 zugeordnet

    Du siehst also dass es nicht damit getan wäre einen bestimmten Bereich aus der .sql-Datei herauszukopieren und über ein Datenbanktool einzugeben.

    Der Weg des Backups sieht in etwa folgendermaßen aus:

    • ausgehend von der .sql-Datei
    • In der Tabelle der Threads müssen alle Zeilen extrahiert werden in denen du als Autor angegeben bist - also alle Zeilen in denen die User-ID 34 vorkommt
    • In der Tabelle der Postings müssen alle Zeilen extrahiert werden die auf eine der Thread-Nummern verweisen die eben extrahier wurden - diese Zahl wird mit Sicherheit im dreistelligen Bereich liegen
    • Die extrahierten Zeilen müssen im Rahmen einer neuen .sql-Datei korrekt zusammengeführt werden, sodass es u.U. möglich ist ein Teilupdate der Foren-Datenbank vorzunehmen

    Da es sich hierbei um einen ausgesprochen aufwendigen und extrem zeitaufwendigen Arbeitsablauf handelt ist das Rückspielen der Daten nicht von heute auf morgen erledigt.

    Ich kann jedoch folgenden Vorschlag machen: Soweit mir Robert die .sql-Datei zur Verfügung stellt die noch die Philosophie-Daten beinhaltet kann ich versuchen die Datenbank bei mir lokal einzulesen. Wenn das klappt werde ich versuchen den jetzigen Zustand des Kontromisslos bei mir lokal herzustellen - quasi die gelöschten Threads ebenfalls löschen - um dann zu versuchen den oben angesprochenen Backup-Prozess durchzuführen. Falls das ganze funktioniert bereite ich eine entsprechende .sql-Datei vor die dann hier von Robert eingelesen werden kann.
    Zusätzlich zu der .sql-Datei benötige ich allerdings leider auch die Forensoftware um testen zu können ob das ganze überhaupt so klappt wie es der Fall sein soll. Da ich sie jedoch ausschließlich lokal nutzen werde sollte das keine allzu großen Probleme bereiten (?). (Hauptsache sie ist nicht zu sehr gehackt und die Tabellenstruktur unterscheidet sich nicht von der zu Zeiten der .sql-Datei).

    Update: Sorry, ich hatte den Thread wohl ausversehen für etwa eine halbe Stunde geschlossen. Dass war nicht meine Absicht; so ist es halt wenn man mit den Gedanken gerade ganz woanders ist :)

    das ganze wird jedoch seine zeit brauchen,
    time
    [edits: size-tag falsch gesetzt & update]

    2 Mal editiert, zuletzt von timeserver (23. Mai 2004 um 14:52)

  • Gottogott time, das ist ja der reinste Horror! 8o:jb:

    Also: Wenn es dich interessiert, dich mit dieser Sache zu beschäftigen, weil du da weitere technische Erfahrungen machen und noch was lernen kannst, dann wäre es natürlich toll, wenn du es versuchen würdest! :ehrfu:

    Jedoch kann dies kein Mensch verlangen! Und außerdem bin ich ja selber schuld. :nix:

    Du kannst aber auch mal beginnen (wenn Robert dir die nötigen Dinge zur Verfügung stellt), und wenn dir das zuviel wird, hörst du einfach wieder auf.

    Solltest du es jedoch tatsächlich schaffen :geil: , dann wirst du mit Sicherheit hier im Forum festgekettet, damit du uns nie mehr entfleuchen kannst! droh ;)
    Willst du dieses Risiko eingehen? :neu: :D

  • Ich kanns ja mal versuchen.
    Das Sortieren ist eigentlich nur Fleißarbeit, man muss zusehen dass man konzentriert bleibt und nichts - oder zumindestens nicht allzu viel - übersieht.
    Probleme sehe ich beim Datenimport auf meinem Rechner. Wenn das klappt werde ich erst einmal testen ob das Löschen und wieder einlesen per .sql-Datei klappt ohne die bestehende Datenbank zu vernichten.
    Wenn das klappt mache ich mich an die Fleißarbeit. Und wenn ich da zwischenzeitlich keine Lust mehr habe, mache ich am Tag danach weiter, es wird ja ein Ende abzusehen sein. Im Anschluss versuche ich den jetzigen Zustand des Philosophie-Forums herzustellen (alle Threads löschen deren Autor du bist) um diese dann per .sql-Datei (die Fleißarbeit) zu reimportieren. Wenn das klappt schicke ich Robert diese Datei mit einigen Anweisungen und Hinweisen (z.B. sollte das Board während des Einlesens in den Wartungsmodus versetzt werden).

    Noch etwas zu phpMyAdmin:
    Man kann eine DB in Teilen sichern und diese Teile auch einzeln und unabhängig voneinander wieder einlesen, das Sichern von Datenbanken die mehr als ein paar MiByte groß sind ist jedoch annähernd unmöglich.
    Die Bearbeitung von Datenbanken ist jedoch recht komfortabel und schnell, so können z.B. Stänge von Daten ausgelesen werden auf die normalerweise kein Zugriff besteht oder die man mühsam einzeln herausfischen müsste.

    das risiko scheue ich nicht,
    time

  • Also den Schluss hab ich jetzt nicht so ganz verstanden, aber das muss ich ja auch nicht! ;) Ich vertraue dir voll und ganz. :)

    Danke, dass du es versuchst! :bussi:

    • Offizieller Beitrag

    timeserver

    das sql file schicke ich dir. sind aber 100 mb.

    verträgt das dein postfach?

    lokal brauchst du nur die wwb version 2.1.3 einspielen und in die noch leeren tabellen das sql file drüberziehen. das klappt. so mache ich das im angeschlossenen testforum immer.

    ich möchte allerdings anmerken, dass es aus meiner sicht mit dem einfügen nicht klappen wird, da auch der postingzähler der user und des forums und die zeitschienen aktualisiert werden müssten. da sehe ich eher schwarz.

    übrigens habe ich schon mal einen versuch zum o.g. thema durchgeführt. ich habe lokal das forum rekonstruiert und dann alle anderen beiträge im forum gelöscht die nicht mit eingespielt werden sollten. dann die datenbank gesichert und in das bestehnde testforum eingespielt. da beiträge waren auch da, aber alle verknüpfungen zu anderen themen und postern fehlen.

    aber wenn du es packst :ehrfu:

  • Kannst du die .sql-Datei bitte packen? (zip, rar, gz oder bz2 bitte)
    Mein Postfach verträgt leider so gut wie gar nichts, sodass du mir das entweder über ICQ oder einen Upload auf den Kontro-Server zukommen lassen müsstest den ich dann meinerseits wieder herunterlade.

    Ich denke dass der Beitragszähler nicht so dass Dramatische wäre. Selbst wenn die Nummerierung dann in Teilen nicht mehr ganz stimmt, wäre dass doch kein Weltuntergang, oder?
    In Sachen Zeitschiene teile ich deine Angst, weil ich nicht weiß wie die DB des WBB2 strukturiert ist.

    Mit etwas Glück lässt sich das ganze mit einer Aktualisierungs-Funktion des Forums beheben, dass diese die DB analysiert und die entstandenen Ungereimtheiten ausgleicht. Ich kann nur hoffen dass es funktioniert...
    Für die Tests hat mit Mindi bereits zwei Titel von Beiträgen geliefert. Mal schauen wie das ganze dann funktioniert.

    icq 86361483,
    time
    [edit: weltuntergang]

    Einmal editiert, zuletzt von timeserver (23. Mai 2004 um 19:01)

  • @ time: Falls du noch irgendwelche Titel, Namen, Anzahl der Postings, Zeiten oder sonstige Daten aus den Threads brauchst, melde dich bitte.

    Ich habe ja alles einkopiert.

  • In einem ersten lokalen Test hat das Löschen und Wiederherstellen eines Beitrages ohne Komplikationen funktioniert. Daher bin ich zur Zeit dabei die .sql-Datei zur Wiederherstellung der gut 20 verlorenen Threads zusammenzustellen, das wird auch noch etwas dauern, zum Wochenende hin werde ich damit jedoch aller Wahrscheinlichkeit nach fertig sein.

    Dass der Beitragszähler dann nicht mehr richtig tickt ist richtig, dass lässt sich über das Administrator Control Panel jedoch einfach beheben.

    Ich rechne mit Problemen bzw. Ausfällen im Bereich der gelöschten Umfrage und der Beitragsbenachrichtigungen.
    Die Umfrage dürfte zwar wieder auftauchen, allerdings ohne das Abstimmungsergebnis, da dieses an einem Ort der Datenbank gespeichert wird den ich nicht so einfach manipulieren kann.
    Auch wird wohl niemand der eines der Themen abboniert hat über neue Beiträge in diesem Thema informiert werden, denn auch die Abbonements befinden sich in einem anderen Teil der DB.

    ich bin recht zuversichtlich, brauche aber später noch eine aktuelle kontro-db zum testen,
    time

  • Du bist einfach phantastisch, time! :sonne: (die Ketten schon mal bereit legt ;) )

    Was das Abstimmungsergebnis der Umfrage angeht - könnte man das eventuell manuell eingeben? Die Zahlen habe ich ja da ...
    Wenn nicht, ist es auch nicht schlimm!

    Re. Abonnements: Wir wollen ja nicht päpstlicher sein als der Papst! Also wenn du das andere hinkriegst, ist das schon mehr als toll! :ehrfu:

  • Ich habe ein .sql-File zusammenstellen können dass die gelöschten Beiträge wieder in die Datenbank einfügen kann.
    In einem Trockentest hat dies auch ohne Probleme funktioniert. Da dieser Test auf einem Windows-System durchgeführt wurde, wird der "heiße" Durchlauf - wenn es nach mir geht - unter besonderen Sicherheitsvorkehrungen durchgeführt und das Forum für die Dauer der dazu nötigen Backups und des Updates geschlossen. Wenn alles gut geht wird das nicht länger als eine Stunde dauern.

    Ich mache gerne noch weitere Trockendurchläufe mit anderen Versionen der Datenbank, bin jedoch zuversichtlich dass sich auch damit keine Probleme einstellen werden.

    war zwar eine lange und langweilige arbeit aber ich denke es hat gelohnt,
    time

  • Wenn das klappt, hat es sich auf jeden Fall gelohnt, time! :]:bounce2:
    Und ich weiß gar nicht, wie ich dir danken soll ... :ehrfu:

  • Juhuuuuuuuu!!!! Ihr seid Spitze!! DANKE!!
    Eins für Robert :lieb: und noch ein paar für time! :lieb: :lieb: :lieb:

    (Der Time kriegt nachher noch einen extra Thread von mir!) ;)

    Und anschließend werde ich mir das mal alles angucken, ob ihm nicht das eine oder andere Fehlerchen unterlaufen ist! :D

    [SCHILD]KLASSE![/SCHILD]