Archiv verlassen und diese Seite im Standarddesign anzeigen : Meinung: Datenbank Backup und Restorescript
Hallo alle zusammen...
Ich hab mir angesichts der teilw. auftretenden Timeoutprobleme und der nicht bei jedem Hoster vorhandenen Datenbankbackup und Restoremöglichkeiten mal ein Script anderer Art gebastelt. Damit ist es möglich beliebigst große DB Inhalte zu sichern und wieder einzuspielen.
Funktionsweise im groben:
1. Auslesen derr vorhandenen Datenbanktabellen
2. Erstellen der Datei mit den Create Statements
3. Gestaffeltes Backup der Inserts.
Gestaffelt heisst hier, das bei einer Tabelle mit x Tausend Einträgen diese in mehreren Aufrufen gesichert wird und die Dateien dann durchnummeriert als tar.gz abgelegt werden. Dies sieht dann z.B. so aus.
Screenshot (http://www.inspire-world.de/backupindex.gif)
Sind alle Daten gesichert werden die einzelnen tar.gz Dateien in einer .tar Datei zusammengefasst und können per Browser oder FTP runtergeladen werden.
Beim einspielen in die DB werden die Dateien auf den Server geladen, vom Script in das Restore Verz. entpackt und man kann den ganzen Inhalt wieder gestaffelt einspielen. So kommt man um jedes Timeoutlimit rum und kann das Backup einspielen.
Mich würde mal eure Meinung dazu interessieren? Meine Datenbank mit über 1 Milion Einträgen hab ich damit zumindest problemlos sichern können.
Das Script selbst ist in Perl geschrieben, in PHP bin ich noch nocht so fit ;)
Gruß Helmut
Eine wirklich gute Idee...
FlashNash
10.06.2004, 12:42
Eine gute Idee, muss ich auch sagen, denn die Timeout-Probs haben ja sicher sehr viele Anwender mit Ihrem Hoster. Jedoch könnte man noch besser eine Meinung darüber äußern, wenn man es ausprobieren kann. Ich finde nix zum downloaden des Scriptes, oder bin ich blind und habe etwas übersehen? :rolleyes:
Hallo,
nun das Script ist noch nicht ganz fertig. Ich hab jetzt noch was gebastelt womit man die zu sichernden, bzw. die die nicht zu sichernden an/abwählen kann per Checkbox.
Siehe Bild: http://www.inspire-world.de/boarduploads/dbb1.gif
In Aktion: beim sichern: http://www.inspire-world.de/boarduploads/dbb2.gif
Wenn das fertig ist poste ich gern den DL Link, ich wollte eigentlich mit dem Beitrag erstmal die Grundsätzliche Meinung dazu erfragen. Das Script ist hauptsächlich deshalb entstanden weil ich meine 68 MB Daten auch nicht ohne Timeoutlimit in die DB rein bekam. Jetzt kann ich das Abends als letzte Aktion vorm Bierchen anwerfen und brauch das nur noch als tar.gz downloaden.
Gruß Helmut
FlashNash
10.06.2004, 23:26
Das hört sich alles sehr gut an. Still waiting 4 DL Link. :D
Gandalf2003
11.06.2004, 08:39
mach weiter so Helmut, dann wähle ich Dich auch mal:D
Hallo,
mach weiter so Helmut, dann wähle ich Dich auch mal
Helmut for Präsident?!? :D
Aber nur mit Praktikantin... :p
Zurück zum Thema...
Wer das Script selbst einmal testen möchte kann dies unter http://www.inspire-world.de/cgiservice/index.shtml MySQL Backup & Restore herunterladen. Wie gesagt, das ist mein erstes Script zum Thema MySQL Backup und Restore. In Erwartung der Hinweise und Kritiken...
Gruß Helmut
FlashNash
11.06.2004, 20:49
@Helmut
Ich habe das Script installiert und ausgeführt d.h. ein Backup der SQL erzeugt. Das lief alles tadellos bis zum Ende des Backups ... habs am Montor beobachtet. Als die letzte SQL-Tabelle gesichert worden war, habe ich ein ´error 500: Interner Serverfehler´ erhalten.
Ich finde auf der Domain auch kein Backupfile der SQL-Datenbank, das ich nach dem Backup downloaden kann. Was könnte da falsch gelaufen sein? Ich hoste derzeit noch bei Puretec, keinen eigenen Server! An Speicherplatz kann es nicht liegen, habe noch ca. 240MB frei auf der Domain und meine DB ist nur ca. 55MB groß.
Edit ON
Auch ein zweiter u. dritter Versuch liefert mir ein Error 500! Kann es sein, dass das blöde Puretec GZIP die gesicherten Daten nicht geZIPt bekommt und bei dem Prozess sich ein erneuertes TimeOut ergibt?
Edir OFF
Nochmal EditON
Nach dem 4. Backupversuch finde ich jetzt massenhaft Files in: /cgi-bin/sqlback/datenbanken/dbXXYYZZ ... die XXYYZZ spiegeln den Namen meiner Datenbank wieder.
NochmalEditOFF
Hi,
also ich hab ja auch einen Account, (keinen eigenen Server) bei Puretec. Das Script hab ich da auch getestet. Auch paar andere Kumpel haben da schon auf verschiedenen Servern das Ding laufen lassen, ohne Error.
Das kann allerdings sein das es bei Puretec aufgrund der wirklich sehr kurzen Laufzeiten der Scripte (6 sec) einen Error gibt beim abschließenden taren.
Auf meinem Hauptaccount bei All-inkl.com hab ich ja das VB liegen mit etwa 67 MB Daten, das schnurrt ohne zu mucken durch bis zum Schluss.
Ich werd mir das nochmal anschauen und das abschließende Packen wohl auch noch staffeln wenn es zuviele Daten sind.
Am Ende, da wo bei Dir der Error kommt, passiert eigentlich folgendes:
Die Backupdateien die schon als tar.gz im Verzeichnis /datenbanken/$dbname/ liegen werden zusammengefasst zu einer tar Datei. Dies dient nur dazu das man die quasi in einer "Verpackung" hat zum downloaden.
Da muss ich mal testen wieviel Puretec hergibt und das "einpacken" noch staffeln.
Gruß Helmut
Hi,
also ich hab grade getestet bei Puretec. Datenbank mit 65MB Daten = ~110000 Einträge ohne Probleme gesichert. Haste vielleicht keine Schreibrechte vergeben auf das HTML Script Verzeichnis, das brauch chmod 777
Die abschließende Operation des Backups hat bei mir auch nicht lang gedauert, die Meldung kam dass das Backup durch ist und fertig war die Chose.
Gruß Helmut
FlashNash
12.06.2004, 01:13
@Helmut
Ich habe explizit noch einmal die Rechtevergabe überprüft .... sind alle okay. Habe das Backup noch einmal runnen lassen. Gleiches Ergebnis wie vorher ... alles löppt einwandfrei bis zu dem Moment, wo das Backup fertig ist. Zum Schluss kommt wieder der Error 500. Ich habe den Eindruck, es liegt an dem Zusammenfassen zu einer tar Datei, denn die einzelnen Backupfiles (z.B. access.10000.19.sql.tar.gz oder adminhelp.10000.917.sql.tar.gz usw.) kann ich ja mit FTP ja sehen. Ich kann Dir gerne mal via PM den Zugriffsaccound für das Backup geben, falls Du das selber einsehen möchtest.
FlashNash
12.06.2004, 07:27
@Helmut
Ich habe nun mal ein Backup mit nur ein paar wenigen Feldern durchgeführt. Dann erhalte ich kein Error 500, der Backupvorgang wird fehlerfrei beendet und ich kann auch eine TAR downloaden. Offensichtlich liegt der Error 500 doch an einem Timeout-Prob beim einpacken. Könntest Du das eventuell noch so abändern, dass beim erzeugen des TAR das blöde Timeout bei Puretec berücksichtigt wird d.h. dass das packen auch in kleineren Häppchen geschieht?
Was noch praktisch wäre, wenn es einen Button gäbe mit dem man durch einen Mausklick alle Tabellen ´deselecten´ kann.
Wenn diese beiden kleinen ´Sächelchen´ noch in der Routine integriert würden, dann ist es das beste was ich bisher für Puretec in den Händen hatte. Kompliment!
Hi,
Ich kann Dir gerne mal via PM den Zugriffsaccound für das Backup geben, falls Du das selber einsehen möchtest
Das wär nicht schlecht, so kann ich das mal testen. Mich wundert es allerdings sehr das ich gestern ohne Probleme die Sachen als Tar hinbekomen hab und das bei Dir nicht klappen will.
Was noch praktisch wäre, wenn es einen Button gäbe mit dem man durch einen Mausklick alle Tabellen ´deselecten´ kann.
Werd ich noch mit einbauen. Das ist ja nicht das Problem.
Cu Helmut
@FlashNash,
ich hab hier mal eine Datei für Das Script gemacht die das abschließende taren gestaffelt macht. Teste diese mal bitte. Bei mir haut das soweit wunderprächtig hin, extra bei Puretec getestet.
Gruß Helmut
FlashNash
14.06.2004, 18:35
@Helmut
Thx für die Mühe die Du Dir machst. Ich werde das nacher mal ausprobieren und danach hier berichten.
FlashNash
14.06.2004, 20:04
@Helmut
Habs ausprobiert und das funzt jetzt alles einwandfrei! Sehr praktisch wäre es noch wenn man vor dem restoren der Daten, eine andere d.h. alternative Datenbank auswählen / eingeben / benennen könnte.
Das wäre dann sinnvoll wenn man z.B. aus der Master-DB ein Backup erstellt und dieses in eine Slave-DB (Testdatenbank), mit anderem Namen als die Master-DB, zurückspeichern möchte. Mit dieser zusätzlichen Option zzgl. des oben erwähnten Deselect-Button, wäre das ´Ding´ echt rund und für alle Timeout geplagten vB-Backup Anwender das ideale Werkzeug! :D
Hallo,
Habs ausprobiert und das funzt jetzt alles einwandfrei!
Das freut mich. :)
Sehr praktisch wäre es noch wenn man vor dem restoren der Daten, eine andere d.h. alternative Datenbank auswählen / eingeben / benennen könnte.
Kannste doch eigentlich. Wen Du auf dem Server z.B. 3 DB's hast und die in der Datenbankdatenkonfig drinstehen hast geht das ja.
Allerdings ist das Script zuallererst mal dafür das man seine Daten runter und wieder rein bekommt ins Datenbänkle. Es kann aber schon gut sein das im Laufe der Zeit noch ein paar Features dazukommen werden...
Wenn es mal was neues gibt werd ich mich hier wieder zu Wort melden.
Gruß Helmut
FlashNash
14.06.2004, 23:19
Kannste doch eigentlich. Wen Du auf dem Server z.B. 3 DB's hast und die in der Datenbankdatenkonfig drinstehen hast geht das ja.
Ahja, werd ich nochmal antesten. Klar, wenn die DB dem Script bekannt ist, sollte ea ja auch gehen.
Wenn es mal was neues gibt werd ich mich hier wieder zu Wort melden.
Das wäre fein. Futures allzeit welcome. Ich wende Dein Script jedenfall erstmal an, weil meine Timeoutprobs damit beseitigt sind. Bisher konnte ich immer nur ein Backup in Peak-off Zeiten (nachts) ziehen. Mit dem Script gings tadellos auch über Tag. :D
FlashNash
15.06.2004, 09:46
@Helmut
Ich muss doch noch einmal ein bischen ´nachnerven´. Gestern hatte ich ein erstes Backup mit Deinem Script angelegt. Nun wollte ich das Backup in meine Test-SQL restoren. Da ich seit dem gestrigen Backup zwei nicht mehr benötigte Tabellen aus der Master-SQL gelöscht hatte, habe ich heute natürlich erst einmal erneut ein Backup von der Master-SQL erzeugt, damit nur die noch aktuell benötigten Tabellen in meine Test-SQL restored werden.
Seltsamerweise werden beim Start von ´Backup zur. in DB´ diese beiden gelöschten Tabellen noch angezeigt. Egal, wenn ich dann mit Schritt 3. weiter mache, werden in der Test-SQL die Tabellen erzeugt, jedoch OHNE diese beiden gelöschten Tabellen. So weit so gut, mach ich mit ´Schritt 4´ weiter, dann erhalte ich aber den folgenden Fehler:
http://www.Ruhrpottboard.de/img4post/sqlbackerror2.jpg
Nun habe ich das File createstatement.sql mal überall dort reingepackt, wo es nach meiner Ansicht erwartet werden könnte und zwar gleich mal als *.sql und als *.tar.gz (welches wird denn eigentlich erwartet ... *.sql oder *.tar.gz ??)
/cgi-bin/sqlback/datenbanken
/cgi-bin/sqlback/datenbanken/sqldbuvw
/cgi-bin/sqlback/datenbanken/sqldbxyz
/cgi-bin/sqlback/restore
/cgi-bin/sqlback/restore/files
/sqlback/
So, bleiben ja kaum noch Sub´s über, wo es nicht drinn liegt. :rolleyes: Trotzdem erhalte ich den obigen Fehler! Die Tabellen sind jedoch in meiner Test-DB angelegt bzw. bereits vorhanden. Wenn ich die Tabellen in der Test-SQL wieder komplett lösche, geht das ganze Spiel wieder von neuem los und ich komme immer wieder nur bis zu der obigen Fehlermeldung.
Irgendwann hatte ich auch noch den folgenden Fehler, der läßt sich derzeit aber nicht mehr reproduzieren.
http://www.Ruhrpottboard.de/img4post/sqlbackerror1.jpg
Noch als Hinweis: Ich hatte seit meinem gestrigen ersten Backup, beide Datenbanken aus der ´Datenbanken Verwaltung´ komplett gelöscht und heute erneut eingetragen.... daran kann es aber wohl nicht liegen, denke ich.
Eine letzte Frage:
Wenn ich das Backup downloade erhalte ich ja ein *sql.tar.gz File in dem sich wiederum ´die kleinen Häppchen´ als *.sql.tar.gz
Files befinden. Wenn ich nun die Daten zurückspeichern möchte, was für Files genau werden vom Restore erwartet? Die
´kleinen Häppchen´ als *.sql.tar.gz oder muss ich die auch noch einzeln auspacken ... und ... wo genau werden die erwartet?
/sqlback
/cgi-bin/sqlback/restore/files
/cgi-bin/sqlback/datenbanken/dbxyz
So... das hast Du nun davon, dass Du Zeit und Arbeit investierst und anderen Usern ein Backupscript zur Verfügung stellst. :D
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.