it-swarm.com.de

So erstellen Sie eine vollständige Sicherung der mysql-Datenbank mit dem Befehlszeilenprogramm mysqldump

Wie kann ich mit mysqldump eine vollständige Sicherung der mysql-Datenbank erstellen? Wenn ich ein Backup mache, werden meine Tabellen aus der angegebenen Datenbank nur gesichert. Die Prozeduren und Funktionen sind nicht.

Hier ist der Sicherungsbefehl, den ich verwende:
(Betriebssystem ist Windows Vista.)

mysqldump -u username -p db1 > backup.sql
45
MySQL DBA

Das hängt ein bisschen von deiner Version ab. Vor 5.0.13 ist dies mit mysqldump nicht möglich.

Von der mysqldump-Manpage (Version 5.1.30)

 --routines, -R

      Dump stored routines (functions and procedures) from the dumped
      databases. Use of this option requires the SELECT privilege for the
      mysql.proc table. The output generated by using --routines contains
      CREATE PROCEDURE and CREATE FUNCTION statements to re-create the
      routines. However, these statements do not include attributes such
      as the routine creation and modification timestamps. This means that
      when the routines are reloaded, they will be created with the
      timestamps equal to the reload time.
      ...

      This option was added in MySQL 5.0.13. Before that, stored routines
      are not dumped. Routine DEFINER values are not dumped until MySQL
      5.0.20. This means that before 5.0.20, when routines are reloaded,
      they will be created with the definer set to the reloading user. If
      you require routines to be re-created with their original definer,
      dump and load the contents of the mysql.proc table directly as
      described earlier.
14
Knut Haugen

Wenn Sie eine vollständige Sicherung durchführen möchten, d. H. Alle Datenbanken, Prozeduren, Routinen und Ereignisse, ohne Verbindungen zu unterbrechen:

mysqldump -u [username] -p -A -R -E --triggers --single-transaction > full_backup.sql
  1. -A Für alle Datenbanken (Sie können auch --all-databases Verwenden)
  2. -R Für alle Routinen (gespeicherte Prozeduren & Trigger)
  3. -E Für alle Ereignisse
  4. --single-transaction Ohne Sperren der Tabellen, d. H. Ohne Unterbrechen einer Verbindung (R/W).

Wenn Sie nur eine Sicherung der angegebenen Datenbank (en) erstellen möchten:

mysqldump -u [username] -p [database_name] [other_database_name] -R -e --triggers --single-transaction > database_backup.sql

Wenn Sie nur eine bestimmte Tabelle in einer Datenbank sichern möchten:

mysqldump -u [username] -p [database_name] [table_name] > table_backup.sql

Wenn Sie eine Sicherungskopie der Datenbankstruktur erstellen möchten, fügen Sie einfach --no-data Zu den vorherigen Befehlen hinzu:

mysqldump -u [username] –p[password] –-no-data [database_name] > dump_file.sql

mysqldump hat viele weitere Optionen, die alle in der mysqldump Dokumentation oder durch Ausführen von man mysqldump in der Befehlszeile dokumentiert sind.

73
NarasimhaTejaJ

Verwenden Sie diese Befehle: -

mysqldump <other mysqldump options> --routines > outputfile.sql

Wenn wir NUR die gespeicherten Prozeduren und Trigger sichern möchten und nicht die MySQL-Tabellen und -Daten, sollten wir so etwas wie Folgendes ausführen:

mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt <database> > outputfile.sql

Wenn Sie sie auf eine andere Datenbank/einen anderen Server importieren müssen, müssen Sie Folgendes ausführen:

mysql <database> < outputfile.sql
15

Zusätzlich zum Flag --routines müssen Sie dem Sicherungsbenutzer Berechtigungen zum Lesen der gespeicherten Prozeduren erteilen:

GRANT SELECT ON `mysql`.`proc` TO <backup user>@<backup Host>;

Meine minimalen GRANT-Berechtigungen für den Sicherungsbenutzer lauten:

GRANT USAGE ON *.* TO ...
GRANT SELECT, LOCK TABLES ON <target_db>.* TO ...
GRANT SELECT ON `mysql`.`proc` TO ...
5
jonfm

Ich benutze MySQL 5.5.40. Diese Version hat die Option --all-databases

mysqldump -u<username> -p<password> --all-databases --events > /tmp/all_databases__`date +%d_%b_%Y_%H_%M_%S`.sql

Dieser Befehl erstellt eine vollständige Sicherung aller Datenbanken auf dem MySQL-Server in einer Datei mit dem aktuellen Datum und der aktuellen Uhrzeit.

2
sunil

Verwenden Sie '-R', um gespeicherte Prozeduren zu sichern, aber denken Sie auch daran, dass Sie --single-transaction (Wenn Sie nur innodb sichern) oder --lock-all-tables (Wenn Sie auch myisam-Tabellen benötigen)

2
Vitaly Kushner

nter MySQL 5.7 arbeite ich mit CentOS7.

Zum Ablegen.

Befehl:

mysqldump -u user_name -p database_name -R -E > file_name.sql

Beispiel:

mysqldump -u root -p mr_sbc_clean -R -E > mr_sbc_clean_dump.sql

Für die Bereitstellung von Dump.

Befehl:

mysql -u user_name -p database_name < file_name.sql

Beispiel:

mysql -u root -p mr_sbc_clean_new < mr_sbc_clean_dump.sql
0
M. Hamza Rajput

m einen Speicherauszug zu erstellen, gehen Sie wie folgt vor:

  1. Öffnen Sie CMD und wechseln Sie in den Ordner bin, in dem Sie MySQL installiert haben
    Beispiel: C:\Programme\MySQL\MySQL Server 8.0\bin. Wenn du das siehst
    Ordner mysqldump.exe wird dort sein. Oder Sie haben den obigen Ordner in Ihrer Pfadvariablen der Umgebungsvariablen eingerichtet.

  2. Wenn Sie jetzt in CMD auf mysqldump klicken, können Sie sehen, dass CMD den Dump-Befehl identifizieren kann.

  3. Führen Sie nun "mysqldump -h [Host] -P [Port] -u [Benutzername] -p --skip-Trigger --no-create-info --single-transaction --quick --lock-tables" aus = false ABC_databse> c:\xyz.sql "
  4. Der obige Befehl fordert zur Eingabe eines Passworts auf und beginnt dann mit der Verarbeitung.
0
Rahul Maurya