2011-01-16 8 views
0

Ich bin mit einer inkrementellen Backup-Lösung für eine MySQL-Datenbank in Centos beschäftigen. Ich muss ein Perl-Skript schreiben, um inkrementelles Backup zu machen. dann werde ich dieses Skript mit Crontabs ausführen. Ich bin etwas verwirrt. Es gibt Lösungen, aber nicht wirklich hilfreich. Ich habe viel geforscht. Es gibt so viele Möglichkeiten, vollständige Sicherungen und Teilsicherungen für Dateien durchzuführen. Ich kann sie leicht verstehen, aber ich muss eine inkrementelle Sicherung einer MySQL-Datenbank machen. Ich weiß nicht wie ich es machen soll. Kann mir jemand helfen, entweder eine Quelle oder einen Code zu empfehlen?Schreiben von Perl-Skript, um mysql inkrementelle Backup mit mysqldump

+0

Was speziell haben Sie versucht und was nicht funktioniert? Welche spezifische Dokumentation war unklar? – DVK

+1

MySQL docs haben ziemlich gute Zusammenfassung: http://dev.mysql.com/doc/refman/5.1/en/backup-methods.html – DVK

Antwort

0

mysqldump ist das Ticket.

Beispiel:

mysqldump -u [user_name] -p[password] --database [database_name] >/tmp/databasename.sql 

-u = mysql Datenbank-Benutzername

-p = mysql Datenbank Passwort

Hinweis: Es gibt keinen Platz nach der Option -p. Und wenn Sie dies in Perl zu tun haben, dann können Sie die Systemfunktion nutzen es zu nennen wie so:

system("mysqldump -u [user_name] -p[password] --database [database_name] >/tmp/databasename.sql") or die "system call failed: $?"; 

Beachten Sie, wenn der Sicherheitsrisiken in dies zu tun. Wenn jemand zufällig eine Liste der aktuellen Prozesse auf einem System auflistet, während dieser ausgeführt wird, können die Anmeldeinformationen angezeigt werden, die für den Datenbankzugriff verwendet wurden.

+0

Hallo Steve, danke für Ihre Antwort. Dies nimmt eine vollständige Sicherung der Datenbank, die ich bereits habe. Können Sie mir sagen, wie ich ein inkrementelles Backup der Datenbank bekommen soll? Was ich gelesen habe, sagt mir, dass ich mysqld mit dem Parameter --bin-log ausführen soll, um die letzten Änderungen in der Datenbank zu kennen und die inkrementelle Sicherung zu machen. Und auch Smooth hat mir gesagt, dass ich diese Aufgabe erledigen muss. Ich brauche einen Timing-Parameter in mysqldump, damit ich die letzten Änderungen erfahren kann. Ich habe jedoch nicht gesehen, dass ein Parameter Zeit braucht, um eine Sicherungsdatei zu erstellen.Hast du verstanden was ich meine? Kannst du mir jetzt helfen? Danke nochmal. Ozlem. – user403295

+0

Entschuldigung, ich habe keine inkrementellen Backups gemacht. Hier ist eine weitere Diskussion zu diesem Thema, die hilfreich sein kann: http://mobile.experts-exchange.com/Q_23185202.html. Viel Glück. Es würde mich interessieren zu hören, ob Sie erfolgreich waren. –

+0

Ich hatte diese Frage verlassen, würde es nicht vervollständigen. Das könnte Ihnen bei der weiteren Untersuchung helfen. ** mysqlbinlog --start-date = "2009-07-07 15:00:00" --stop-date = "2009-07-07 18:00:00" /backups/mysqlbin.0005/backups/mysqlbin. 0007 | mysql ** Wenn du es zum Laufen bringst, schaue ich gerne, wie Spielzeug es gemacht hat..Regards. – user403295

3

Das inkrementelle Backup-Methode, die Sie hier an wird dokumentiert durch MySQL gesucht haben:

http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

Was Sie gehen zu wollen, im Wesentlichen Ihre MySQL-Instanz alle Änderungen schreiben tun einrichten, um Ihre Datenbank zu diesem Binärprotokoll. Was das bedeutet ist, dass Updates, Löschungen, Einfügungen usw. in das Binärlog gehen, aber keine SELECT-Anweisungen (die die DB nicht ändern, daher nicht in das Binärlog gehen).

Sobald Ihre mysql-Instanz mit aktivierter Binärprotokollierung ausgeführt wird, nehmen Sie eine vollständige Sicherung vor und notieren sich die Masterposition. Um später eine inkrementelle Sicherung zu erstellen, möchten Sie mysqlbinlog von der Hauptposition aus ausführen, und die Ausgabe davon werden alle Änderungen an Ihrer Datenbank sein , seit Sie die vollständige Sicherung genommen haben. Sie sollten die Master-Position zu diesem Zeitpunkt erneut notieren, damit Sie den Punkt kennen, von dem Sie die nächste inkrementelle Sicherung ausführen möchten.

Wenn Sie dann mehrere inkrementelle Sicherungen immer und immer wieder ausführen, müssen Sie alle diese inkrementellen Sicherungen beibehalten. Ich würde empfehlen, eine vollständige Sicherung zu verwenden.

In der Tat würde ich empfehlen, immer eine vollständige Sicherung zu tun, wenn Sie können. Inkrementelle Backups zu erstellen, wird Ihnen nur Schmerzen bereiten, IMO, aber wenn Sie es tun müssen, ist dies sicherlich eine Möglichkeit, dies zu tun.