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

Exportieren Sie die MySQL- oder MariaDB-Datenbank

Eine regelmäßige Datenbanksicherung ist einer der entscheidenden Schritte nach der Inbetriebnahme des Projekts. Die Sicherungshäufigkeit kann entweder einmal am Tag oder wöchentlich sein. Die tägliche Sicherung wird für Anwendungen bevorzugt, bei denen Datenbankänderungen häufiger vorkommen. Bei hochverfügbaren Datenbanken muss statt vertikaler Skalierung auf einen entsprechenden Cluster-Aufbau geachtet werden. Dieses Tutorial erklärt die Verwendung von mysqldump Befehl, um die Datenbanksicherung zu erstellen. Derselbe Befehl kann automatisiert werden, um geplante Sicherungen durchzuführen.

Notizen :Dieses Tutorial behandelt nur die am häufigsten verwendeten Optionen mit mysqldump Befehl. Sie können sich auch auf die offizielle Dokumentation beziehen, um alle möglichen Optionen zu erkunden. Die gleichen Befehle können verwendet werden, um sowohl MySQL- als auch MariaDB-Datenbankserver zu sichern.

Lokale Sicherung

Sicherung - In diesem Abschnitt wird erläutert, wie Sie eine lokale Sicherung in einer Datei erstellen, indem Sie entweder einzelne oder mehrere Datenbanken exportieren.

Berechtigungen - mysqldump erfordert die unten aufgeführten Berechtigungen, um die Datenbank zu exportieren. Dem Benutzerkonto, das zum Exportieren der Datenbank verwendet wird, müssen entsprechende Berechtigungen zugewiesen werden.

  • SELECT - um Tabellen zu dumpen
  • ANSICHT ANZEIGEN - um Ansichten auszugeben
  • TRIGGER - Trigger ausgeben
  • LOCK TABLES - falls die Option --single-transaction nicht verwendet wird

Befehl - Unten erwähnt ist die Verwendung von mysqldump Befehl, um ein lokales Backup für Windows- und Linux-basierte Systeme einschließlich Ubuntu zu erstellen. Die drei Punkte bedeuten, dass mehrere Werte angegeben werden können.

# Regular command - Usage - Windows, Linux
mysqldump [options] db_name [tbl_name ...] > <file path>
mysqldump [options] --databases db_name ... > <file path>
mysqldump [options] --all-databases > <file path>

Die Beispiele zur Verwendung des regulären Befehls sind unten aufgeführt. Diese Beispielbefehle verwenden den Benutzer enterprise Backups der Datenbank Enterprise zu erstellen . Benutzer und Passwort müssen nicht angegeben werden, falls das Benutzerkonto auth_socket verwendet Algorithmus zur Anmeldung beim MySQL-Server. Der Systembenutzer kann direkt auf die Datenbank zugreifen. Weitere Informationen zu Passwortalgorithmen finden Sie unter How To Use Native Password With MySQL 5.7 und How To Install MySQL 8 on Ubuntu.

Notizen :Die Option -p muss nicht verwendet werden, falls dem Benutzer kein Passwort zugewiesen wurde.

Unten aufgeführt sind die Beispiele zum Sichern einer einzelnen Datenbank mit Benutzername, Host und Port. Das Passwort muss nicht angegeben werden mit diesen Befehlen aus Sicherheitsgründen. Sie können das Passwort für mysqldump angeben in der Konfigurationsdatei, die als sichere Option für cron gilt Arbeitsplätze. Eine andere Möglichkeit besteht darin, den cat-Befehl zu verwenden, um ein verschlüsseltes Passwort zu verwenden (ähnlich wie bei Plesk), wie in den Beispielen gezeigt. Das System fordert zur Eingabe des Passworts auf, falls es nicht im Befehl angegeben ist. Diese Befehle können verwendet werden, um entweder die gesamte Datenbank oder einzelne oder mehrere Tabellen zu exportieren.

# All tables - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise > enterprise.sql

# All tables - with username, with password - insecure
mysqldump -u enterprise -p'mypwd' enterprise > enterprise.sql

# All tables - with username, with password - Plesk way
mysqldump -u enterprise -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql

# All tables - with host, with port, with username, without password - prompts for password
mysqldump -h localhost -p 3306 -u enterprise -p enterprise > enterprise.sql

# Single table(user) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise [user] > enterprise.sql

# Multiple tables(user, profile) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise user profile > enterprise.sql

Unten aufgeführt finden Sie Beispiele zum Sichern mehrerer Datenbanken mit Benutzername, Host und Port.

# Multiple databases - with username, without password - prompts for password
mysqldump -u enterprise -p --databases enterprise vblog mshop > mydbs.sql

# Multiple databases - with username, with password
mysqldump -u enterprise -p'mypwd' --databases enterprise vblog mshop > mydbs.sql

Unten erwähnt ist das Beispiel, um alle Datenbanken mit Benutzername, Host und Port zu sichern.

# All databases - with username, without password - prompts for password
mysqldump -u enterprise -p --all-databases > mydbs.sql

# All databases - with username, with password
mysqldump -u enterprise -p'mypwd' --all-databases > mydbs.sql

Die PowerShell-Benutzer unter Windows benötigen einen anderen Befehl, wie unten erwähnt.

# PowerShell on Windows
shell> mysqldump [options] db_name [tbl_name ...] --result-file=<file path>
shell> mysqldump [options] --databases db_name ... --result-file=<file path>
shell> mysqldump [options] --all-databases --result-file=<file path>

# Example
shell> mysqldump -u enterprise -p enterprise --result-file=mydump.sql

Die oben genannten Befehle exportieren die ausgewählte Datenbank und Tabellen an den im Befehl angegebenen Speicherort.

Datenbanksicherung

In diesem Abschnitt wird erläutert, wie Sie die Datenbanksicherung mithilfe der Shell Pipes in eine andere Datenbank übernehmen, die für Sicherungszwecke verwendet wird. Wir können entweder die Datenbank in die lokale Datei exportieren und diese Datei dann verwenden, um sie in eine andere Datenbank zu importieren, oder direkt mit Shell Pipes in eine andere Datenbank exportieren.

Mit dem unten aufgeführten Befehl kann die Datenbank direkt in eine andere Datenbank exportiert werden. Stellen Sie außerdem sicher, dass Sie Zugriff auf beide Server haben, bevor Sie den Befehl ausführen.

# Export database to another database - Same server
mysqldump -u enterprise -p enterprise | mysql enterprise_backup

# Export database to another database - Different server
mysqldump -u enterprise -p enterprise | mysql -h host.example.com -p 3306 enterprise

So können wir eine Datenbank exportieren oder sichern.