Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man die gesamte MySQL-Datenbank mit allen Benutzern und Berechtigungen und Passwörtern sichern?

Der einfachste mysqldump-Befehl, den Sie verwenden können, ist:

mysqldump -u$user -p$pass -S $socket --all-databases > db_backup.sql

Das schließt die mysql-Datenbank ein, die alle users/privs-Tabellen enthält.

Es gibt Nachteile, dies auf einem Produktionssystem auszuführen, da es zu Sperren führen kann. Wenn Ihre Tabellen klein genug sind, hat dies möglicherweise keine signifikanten Auswirkungen. Sie werden es zuerst testen wollen.

Wenn Sie jedoch eine reine InnoDB-Umgebung ausführen, können Sie die --single-transaction verwenden Flag, das den Dump in einer einzigen Transaktion erstellt (get it) und so das Sperren der Datenbank verhindert. Beachten Sie, dass es Ausnahmefälle gibt, in denen die anfänglichen FLUSH TABLES Der vom Dump ausgeführte Befehl kann die Tabellen sperren. Wenn dies der Fall ist, beenden Sie den Dump und starten Sie ihn neu. Ich würde auch empfehlen, dass Sie, wenn Sie dies für Sicherungszwecke verwenden, den --master-data verwenden -Flag, um die Binärlogkoordinaten zu erhalten, von denen der Dump genommen wurde. Auf diese Weise können Sie bei einer Wiederherstellung die Dump-Datei importieren und dann mysqlbinlog verwenden Befehl zum Wiedergeben der binären Protokolldateien ab der Position, an der dieser Speicherauszug erstellt wurde.