Wie erstelle ich einen MySQL-Datenbankspeicherauszug ( .sql
Datei) mit all seinen Triggern und Prozeduren?
Antworten:
mysqldump
Sichert standardmäßig alle Trigger, jedoch NICHT die gespeicherten Prozeduren / Funktionen . Es gibt 2 mysqldump-Parameter, die dieses Verhalten steuern:
--routines
- Standardmäßig FALSE--triggers
- Standardmäßig WAHRFügen Sie im mysqldump
Befehl Folgendes hinzu --routines
:
mysqldump <other mysqldump options> --routines > outputfile.sql
Informationen zu mysqldump-Argumenten finden Sie in der MySQL-Dokumentation .
-routines
statt --routines
?
--routines
Funktioniert jedoch nur, wenn der Benutzer über ausreichende Zugriffsrechte für die mysql.proc
Tabelle verfügt. GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
Es mag für erfahrene Benutzer von MYSQL offensichtlich sein, aber ich habe einige Zeit damit verschwendet, herauszufinden, dass der Standardwert keine Funktionen exportieren würde. Deshalb wollte ich hier erwähnen, dass --routines param auf true gesetzt werden muss, damit es funktioniert.
mysqldump --routines=true -u <user> my_database > my_database.sql
Ich habe das folgende Skript erstellt und es hat bei mir einwandfrei funktioniert.
#! /bin/sh
cd $(dirname $0)
DB=$1
DBUSER=$2
DBPASSWD=$3
FILE=$DB-$(date +%F).sql
mysqldump --routines "--user=${DBUSER}" --password=$DBPASSWD $DB > $PWD/$FILE
gzip $FILE
echo Created $PWD/$FILE*
und Sie rufen das Skript mit Befehlszeilenargumenten auf.
backupdb.sh my_db dev_user dev_password