.sqlTüm tetikleyicileri ve prosedürleriyle bir MySQL veritabanı dökümü ( dosyası) nasıl oluşturulur ?
Yanıtlar:
mysqldumptarafından irade yedekleme varsayılan tüm tetikleyiciler ama DEĞİL saklı prosedürler / fonksiyonlar . Bu davranışı kontrol eden 2 mysqldump parametresi vardır:
--routines - Varsayılan olarak YANLIŞ--triggers - Varsayılan olarak DOĞRUbu yüzden mysqldumpkomutta şöyle ekleyin --routines:
mysqldump <other mysqldump options> --routines > outputfile.sql
-routinesyerine diyorsun --routines?
--routinesancak yalnızca kullanıcının mysql.proctabloya yeterli erişim hakları varsa çalışır . GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
MYSQL'in uzman kullanıcıları için bu açık olabilir, ancak varsayılan değerin işlevleri dışa aktarmayacağını anlamaya çalışırken biraz zaman harcadım. Bu yüzden burada --routines parametresinin çalışması için true olarak ayarlanması gerektiğinden bahsetmeyi düşündüm .
mysqldump --routines=true -u <user> my_database > my_database.sql
Aşağıdaki komut dosyasını oluşturdum ve benim için gayet iyi çalıştı.
#! /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*
ve komut satırı argümanlarını kullanarak komut dosyasını çağırırsınız.
backupdb.sh my_db dev_user dev_password