GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sichern und Wiederherstellen der MySQL-Datenbank mit mysqlhotcopy


mysqlhotcopy ist ein Perl-Skript, das mit der MySQL-Installation geliefert wird. Dies sperrt die Tabelle, leert die Tabelle und führt dann eine Kopie der Datenbank durch. Sie können mysqlhotcopy auch verwenden, um das Backup mit scp
.

automatisch direkt auf einen anderen Server zu kopieren

1. mysqlhotcopy-Befehl:

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold

Das obige Beispiel führt eine Sicherung von sugarcrm, einer MySQL-Datenbank, im Verzeichnis /home/backup/database durch.

  • –allowold:Diese Option benennt das alte Backup in {Datenbankname}_old um, bevor ein neues Backup erstellt wird. Wenn in diesem Beispiel das sugarcrm-Backup bereits unter /home/backup/database vorhanden ist, wird das alte Backup nach /home/backup/database/sugarrcrm_old verschoben, bevor /home/backup/database/sugarrcrm erstellt wird.
  • –keepold:Diese Option weist mysqlhotcopy an, das alte Backup (d. h. das umbenannte _old) aufzubewahren, nachdem das Backup abgeschlossen ist.

Sehen Sie sich die mysqlhotcopy-Dokumentation mit perldoc wie unten gezeigt an.

[local-host]# perldoc mysqlhotcopy

Im Folgenden sind die verfügbaren Optionen aufgeführt, die an den mysqlhotcopy-Befehl übergeben werden können.

hinzufügen

Option

Beschreibung

–addtodest Zielverzeichnis nicht umbenennen (falls vorhanden); fügen Sie einfach Dateien hinzu
–erlaubt Nicht abbrechen, wenn ein Ziel vorhanden ist; Benennen Sie es um, indem Sie ein _old Suffix
–checkpoint=db_name.tbl_name Checkpoint-Einträge einfügen
–chroot=Pfad Basisverzeichnis des Chroot-Gefängnisses, in dem mysqld arbeitet
–debuggen Schreiben Sie ein Debugging-Protokoll
–Trockenlauf Melden Sie Aktionen, ohne sie auszuführen
–flushlogs Protokolle leeren, nachdem alle Tabellen gesperrt wurden
–Hilfe Hilfemeldung anzeigen und beenden
–host=host_name Verbinden Sie sich mit dem MySQL-Server auf dem angegebenen Host
–halten Vorheriges (umbenanntes) Ziel nicht löschen, wenn fertig
–noindices Nehmen Sie keine vollständigen Indexdateien in die Sicherung auf
–Passwort[=Passwort] Das für die Verbindung zum Server zu verwendende Passwort
–port=port_num Die für die Verbindung zu verwendende TCP/IP-Portnummer
–leise Sei still außer bei Fehlern
–Regexp Alle Datenbanken kopieren, deren Namen mit dem angegebenen regulären Ausdruck übereinstimmen
–resetmaster Setzen Sie das Binärlog zurück, nachdem Sie alle Tabellen gesperrt haben
–resetslave Setzen Sie die Datei master.info zurück, nachdem Sie alle Tabellen gesperrt haben
–socket=Pfad Für Verbindungen zu localhost
–tmpdir=Pfad Das temporäre Verzeichnis
–user=Benutzername, Der MySQL-Benutzername, der beim Verbinden mit dem Server verwendet werden soll
–Version Versionsinformationen anzeigen und beenden

2. mysqlhotcopy-Befehlsausgabe:

Der obige mysqlhotcopy-Befehl zeigt eine Ausgabe ähnlich der folgenden an.

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
Locked 98 tables in 0 seconds.
Flushed tables (`sugarcrm`.`accounts`, `sugarcrm`.`accounts_audit`, `sugarcrm`.`accounts_bugs`) in 0 seconds.
Copying 295 files...
Copying indices for 0 files...
Unlocked tables.
mysqlhotcopy copied 98 tables (295 files) in 0 seconds (0 seconds overall).

Standardmäßig befindet sich die MySQL-Datenbank unter /var/lib/mysql/{db-name}. mysqlhotcopy erstellt eine Sicherungskopie der Tabellendateien von diesem Standardspeicherort der Datenbank in das Sicherungsverzeichnis. Das Backup-Verzeichnis /home/backup/database/sugarrcrm enthält exakte Kopien aller Dateien aus dem Verzeichnis /var/lib/mysql/sugarrcrm der echten MySQL-Datenbank.

[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l
295
[local-host]# ls -1 /home/backup/database/sugarcrm | wc -l
295

Bitte beachten Sie, dass jede Tabelle drei entsprechende Dateien mit der Endung *.frm, *.MYD und *.MYI hat. Das Datenbankverzeichnis enthält auch eine db.opt-Datei, die die datenbankbezogenen Parameter enthält.

Im obigen Beispiel können Sie sehen, dass mysqlhotcopy ein Backup von 98 sugarcrm-Datenbanktabellen erstellt. Die Gesamtzahl der Dateien im Sicherungsverzeichnis =98 Tabellen * 3 + 1 db-Konfigurationsdatei =296 Dateien.

3. Wiederherstellung aus mysqlhotcopy

Um das Backup aus dem mysqlhotcopy-Backup wiederherzustellen, kopieren Sie einfach die Dateien aus dem Backup-Verzeichnis in das Verzeichnis /var/lib/mysql/{db-name}. Stellen Sie sicher, dass Sie mysql stoppen, bevor Sie die Dateien wiederherstellen (kopieren), um auf der sicheren Seite zu sein. Nachdem Sie die Dateien nach /var/lib/mysql/{db-name} kopiert haben, starten Sie mysql erneut.

4. Fehlerbehebung bei mysqlhotcopy

So lösen Sie das Problem Kann DBD/mysql.pm nicht finden? mysqlhotcopy ist ein Perl-Skript und benötigt das Perl-DBD-Modul. Möglicherweise erhalten Sie beim Ausführen von mysqlhotcopy die folgende Fehlermeldung, wenn das Perl-DBD-Modul nicht installiert ist.

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains:
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8 .) at (eval 7) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: DBM, ExampleP, File, Proxy, Sponge.
at /usr/bin/mysqlhotcopy line 177

Stellen Sie sicher, dass Sie das perl-DBD-Paket wie unten gezeigt installieren.

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
Preparing...                ########################################### [100%]
1:perl-DBD-MySQL         ########################################### [100%]

Wie behebt man das Problem mit der Perl-DBD-Installation? Während der Installation der Perl-DBD erhalten Sie möglicherweise die folgende Fehlermeldung.

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages index using db3 -  (-30974)
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
error: Failed dependencies:
libmysqlclient.so.15 is needed by perl-DBD-MySQL-3.0007-1.fc6.i386
libmysqlclient.so.15(libmysqlclient_15) is needed by perl-DBD-MySQL-3.0007-1.fc6.i386

Laden Sie MySQL-shared-compat von mysql.com herunter und installieren Sie es. Dies sollte den oben erwähnten Fehler bei der Installation des Perl-DBD-Pakets beheben.

[local-host]# rpm -ivh MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm
Preparing...                ########################################### [100%]
1:MySQL-shared-compat    ########################################### [100%]

Verwenden Sie andere Methoden zum Sichern oder Wiederherstellen Ihrer MySQL-Datenbank? Bitte hinterlassen Sie Ihre Kommentare.


Linux
  1. MySQL:So sichern (dumpen) und wiederherstellen Sie eine Datenbank mit mysqldump

  2. So sichern und wiederherstellen Sie die Postgres-Datenbank

  3. So sichern und wiederherstellen Sie die MySQL-Datenbank über die Befehlszeile

  4. Wie kann ich die MySQL-Datenbank mit dem Befehl in SSH wiederherstellen?

  5. MySQL-Benutzer- und Datenbankgrundlagen

Sichern und Wiederherstellen von Ubuntu-Anwendungen mit Aptik

So erstellen Sie eine Sicherungskopie und stellen die MSSQL/MySQL-Datenbank in Plesk wieder her

Wie erstelle ich eine MySQL-Datenbanksicherung mit cPanel cron?

Wie kann ich eine MySQL-Datenbank mit cPanel sichern?

Wie stellt man eine Datenbanksicherung mit JetBackup 5 wieder her?

So stellen Sie eine MySQL-Datenbank aus einer .SQL-Sicherung wieder her