Bei der Erstellung einer automatisierten Lösung zum Sichern und Wiederherstellen eines gesamten MySQL-Servers bin ich auf die mysql
Datenbank gestoßen, die anscheinend Benutzerkonten, Berechtigungen, Metadaten usw. enthält. Soll diese Datenbank gesichert werden? Bricht die Sicherung und der Versuch, sie wiederherzustellen, die Dinge?
Ich hatte eine verdammte Zeit damit, nach "mysql backuping mysql database" zu suchen, wie Sie sich vorstellen können.
mysql
backup
database
backup-restoration
database-backup
Daniel Beardsley
quelle
quelle
Antworten:
Hier ist etwas Interessantes zu beachten: Durch
mysql
das Sichern der Datenbank sind Sie stark eingeschränkt, da Sie eine solche Datenbank nur auf der gleichen Version von mysql wiederherstellen können, von der Sie die Sicherung ausgeführt haben. Hier ist warum:Hier ist mysql.user von MySQL 5.0.45
Hier ist mysql.user aus MySQL 5.1.32
Hier ist mysql.user von MySQL 5.5.12
Wenn Sie versuchen, mysql.user auf eine MySQL-Version zurückzusetzen, für die es nicht gedacht war, treten zufällige Berechtigungsprobleme auf. Die Möglichkeit, die mysql-Benutzerberechtigungen versionsunabhängig zu sichern, besteht darin, die Benutzerberechtigungen in SQL zu sichern. Auf diese Weise sind die Benutzerstipendien vollständig portierbar. Es gibt zwei Möglichkeiten, dies zu erreichen:
OPTION 1: Verwenden von MAATKIT
mk-show-grants generiert die SQL, die für jede MySQL-Instanz benötigt wird, zu der Sie eine Verbindung herstellen. (Beachten Sie, dass MAATKIT auf das Percona Toolkit migriert wird. Dieses Tool wird höchstwahrscheinlich als pt-show-grants bezeichnet.)
OPTION 2: Schreiben Sie das Dumping der SQL-GRANTS
Ich habe meine eigene Emulation von mk-show-grants geschrieben. Es werden anonyme Benutzer ausgelassen. Es sieht aus wie das:
Wenn Sie eine dieser Optionen verwenden, wird eine stabilere Sicherung der Benutzerbewilligungen erstellt.
AUF EINEM SEPARATEN HINWEIS
Nun , wenn Sie diese verwenden log-Ausgabe - Option
Die MySQL-Datenbank füllt das langsame Protokoll (falls aktiviert) als MySQL-Tabelle im MySQL-Schema und nicht als Textdatei. Wenn Sie also physische Sicherungen durchführen, werden solche MySQL-Tabellen-basierten Protokolle eingeschlossen. Glauben Sie mir, es ist den Speicherplatz nicht wert, wenn das allgemeine Protokoll und das langsame Abfrageprotokoll aktiviert sind und sich im mysql-Schema häufen. Halten Sie sich einfach an die MySQL Grants Dump-Optionen.
UPDATE 19.09.2011 15:54 EDT
Es gibt einen sehr wichtigen Faktor bei der Sicherung von MySQL-Berechtigungen über SQL Grants:
Jeder Benutzer gibt sein Kennwort in einem geänderten MD5-Format heraus. Bei MySQL 4.0 und früheren Versionen handelt es sich um eine hexadezimale Zeichenfolge mit 16 Zeichen. Ab MySQL 4.1 sind es 41 Zeichen (ein Sternchen, gefolgt von einer 40-stelligen hexadezimalen Zeichenfolge).
Überprüfen Sie vor dem Wiederherstellen eines SQL Grants-Dumps die SQL Grants-Dump-Datei auf hexadezimale Kennwörter mit 16 Zeichen. Wenn Sie auch nur eines sehen, müssen Sie Folgendes zu /etc/my.cnf (oder my.ini für Windows) auf dem MySQL-Server hinzufügen, auf dem Sie wiederherstellen möchten:
Mit der old_password- Direktive können 16- Zeichen- und 41- Zeichen -Kennwörter in derselben laufenden mysql-Instanz koexistieren und korrekt authentifiziert werden. Alle künftig erstellten Passwörter bestehen aus 16 Zeichen.
Ein Neustart von MySQL ist nicht erforderlich. Führen Sie einfach Folgendes aus:
quelle
SHOW GRANTS
SQL-Generierung besser folgendermaßen buchstabierenQUOTE()
:SELECT CONCAT('SHOW GRANTS FOR ',QUOTE(user),'@',QUOTE(host),';') FROM mysql.user WHERE user<>'';
Ja, Sie möchten die
mysql
Datenbank auf jeden Fall sichern - sie ist ein wesentlicher Bestandteil Ihres Service. Während Sie den Inhalt anhand anderer Informationen rekonstruieren können, ist die Schwierigkeit, dies zu tun, unerschwinglich, wenn Sie versuchen, den Service schnell wieder aufzunehmen.quelle
Sie können die MySQL-Datenbank zwischen den Versionen wiederherstellen, zumindest in relativ neuen Versionen.
mysql_upgrade
In neuen Versionen von MySQL ist ein Tool namens enthalten, das die Systemtabellen für Sie aktualisiert.http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html
quelle
Solange Sie eine ähnliche MySQL-Version wiederherstellen, können Sie die MySQL-Datenbank aus einer Sicherung wiederherstellen. Wenn Sie sich nicht sicher sind, unterscheiden Sie einfach die MySQL-Datenbankschemata (das aus der Sicherung und das aus dem neuen MySQL-Server).
quelle