Mailinglisten-Archive |
>Ich arbeite momentan an einem ziemlich grossen Projekt. Die Datenbank w= ird >ziemlich oft geupdatet und is leider auch relativ gross. >Nun will mein Kunde dass alle 1000 Besucher automatisch ein BackUp der >MySQL-DB erstellt wird und an eine von ihm vorgegebene Adresse geschick= t >wird. Hoffentlich ist das ein Diskussionsanfang =FCber eine M=F6glichkeit, die= ich durchgef=FChrt habe und f=FCr nicht gerade optimal halte: Erste Variante: per Script oder cron-Job auf Dateiebene die Datenbankdateien (oft IMHO in /usr/var/mysql) kopieren und anschlie=DFen= d gzippen oder wie auch immer backuppen. Vorteil: sollte am schnellsten sein. Nachteil: die Daten des mysqld m=FCssen zuvor geflushd werden, son= st ist der gesicherte Datenbestand nicht korrekt und es d=FCrfen w=E4hrend = des Kopierens keine neue Daten geschrieben werden. Beides erreicht man sicherlich damit, dass MySQL kurzzeitig sauber heruntergefahren wird (oder durch flushen und anschlie=DFendem "Locken" der Tabellen). Darauf = hat jedoch nicht jeder Zugriff! Anderer Ansatz: Theoretisch kann man bei MySQL ein "select blabliblub into outfile" initiieren, so dass auf MySQL-Ebene der Datenbestand in eine Datei gesichert wird. Vorteil: man kann sich sicher sein, dass zu diesem Zeitpunkt keine weitere Schreiboperationen innerhalb der Tabelle stattfinden (Datenkonsistenz), und es werden die Datenbest=E4nde in eine= m Format geschrieben, das auch nahtlos wieder gelesen werden kann (insert into blabliblub from outfile). Nachteil: in einem Projekt klappte es bei= Puretec nicht, da MySQL keinen Schreibzugriff auf das entsprechende Verzeichnis hat (das ist nur vereinfacht dargestellt, selbst mit dem Freigeben aller von mir ver=E4nderbaren und irgendwie betroffenen Ordnde= rn hat es nicht funktioniert). Alternative (Dank an phpMyAdmin): Ich lese aus jeder Datenbank die Inhalte aus (select * from blabliblub) und generiere in einer Datei hunderte von sql-insert-Kommandos, die bei einem Ausfall das Wiedereinspielen durch SQL-Kommandos simuliert. Vorteil: klappt mit jeder PHP/MySQL-Installation, sofern man nur Schreibrechte auf ein Verzeichnis besitzt. Nachteil: neben den obigen Sync-Problemen ist es langsamer und bei bin=E4ren Datenbest=E4nden siche= rlich auch mit erheblichem Datenumfang verbunden (bin=E4r->ascii). Sind die Daten erstmal auf Dateiebene gesichert, kann dies dann noch gziped werden (sofern installiert) und eventuell per EMail verschickt werden (ich verschicke sie nicht per EMail, da ich annehme, dass in dem Fall einer Standard-php-Installation eine Datei maximal 8MB gro=DF werde= n kann (php-Speicherlimit) und ich zudem sendmail doch st=E4rker belaste, vielmehr speichere ich die Dateien in einem passwortgesch=FCtzten Ordner= der HTML-Pr=E4sentation, aus dem heraus bei Bedarf ein HTML-Download initiiert werden kann - nebenei: da Puretec die HTML-Datenbest=E4nde h=E4ufiger sichert bin ich damit auf der sicheren Seite). Kommentare hierzu sind willkommen... -- Oliver Michalak www.werk01.de / omich_(at)_werk01.de / 0177-75 75 393
php::bar PHP Wiki - Listenarchive