如何创建 MySQL 数据库转储(
.sql
文件)及其所有触发器和过程?
mysqldump
将按默认备份所有触发器,但不存储过程/函数。有 2 个 mysqldump 参数控制此行为:
--routines
– 默认为 FALSE--triggers
– 默认为 TRUE 所以在
mysqldump
命令中,添加 --routines
,例如:
mysqldump <other mysqldump options> --routines > outputfile.sql
对于 MYSQL 的专家用户来说这可能是显而易见的,但我在尝试找出默认值不会导出函数时浪费了一些时间。所以我想在这里提到 --routines 参数需要设置为 true 才能使其工作。
mysqldump --routines=true -u <user> my_database > my_database.sql
我创建了以下脚本,它对我来说效果很好。
#! /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*
然后使用命令行参数调用脚本。
backupdb.sh my_db dev_user dev_password
我们可以使用 -R 而不是使用 --routine 标志。
mysqldump -u mysqluser -R databasename > /tmp/databasename.sql
例如,您可以使用其
例程(过程和函数)(-R或--例程)和触发器(--触发器)导出
apple
数据库表的架构和数据 默认情况下隐式使用)到 backup.sql
,如下所示。 *不可能只导出过程或函数,--skip-triggers可以排除默认包含在隐式--triggers
中的触发器,我的答案解释了如何完美导出数据库:
mysqldump -u john -p -R apple > backup.sql
或者:
mysqldump -u john -p --routines apple > backup.sql
或者。 *您可以明确使用
--triggers
,如下所示:
↓↓ Here ↓↓
mysqldump -u john -p -R --triggers apple > backup.sql