如何使用mysqldump R与E参数备份MySQL存储过程及触发器?
- 内容介绍
- 文章标签
- 相关推荐
本文共计889个文字,预计阅读时间需要4分钟。
直接执行以下命令将不会包含存储过程、函数或触发器:
根本原因在于权限与安全策略:这些对象属于“程序性逻辑”,需显式启用导出开关,否则 mysqldump 为兼容旧版本和最小权限场景,默认禁用。
--routines(-R)参数:导出存储过程和函数
--routines(简写为 -R)告诉 mysqldump 把数据库中所有 PROCEDURE 和 FUNCTION 的定义一并写入输出 SQL 文件。
- 必须有
SELECT权限在mysql.proc表(MySQL 5.7 及以前)或mysql.routines(8.0+),普通用户常因缺此权限而静默失败 - 导出内容是
CREATE PROCEDURE/CREATE FUNCTION语句,不含调用逻辑或运行时状态 - 若只想导出某几个过程,
mysqldump不支持按名过滤,得靠后续grep或脚本提取 - 示例命令:
mysqldump -u root -p -R --no-data myapp_db > schema_with_routines.sql(加--no-data可只导结构+过程,不导表数据)
--triggers(-E)参数:导出触发器
--triggers(简写为 -E)控制是否导出触发器。
本文共计889个文字,预计阅读时间需要4分钟。
直接执行以下命令将不会包含存储过程、函数或触发器:
根本原因在于权限与安全策略:这些对象属于“程序性逻辑”,需显式启用导出开关,否则 mysqldump 为兼容旧版本和最小权限场景,默认禁用。
--routines(-R)参数:导出存储过程和函数
--routines(简写为 -R)告诉 mysqldump 把数据库中所有 PROCEDURE 和 FUNCTION 的定义一并写入输出 SQL 文件。
- 必须有
SELECT权限在mysql.proc表(MySQL 5.7 及以前)或mysql.routines(8.0+),普通用户常因缺此权限而静默失败 - 导出内容是
CREATE PROCEDURE/CREATE FUNCTION语句,不含调用逻辑或运行时状态 - 若只想导出某几个过程,
mysqldump不支持按名过滤,得靠后续grep或脚本提取 - 示例命令:
mysqldump -u root -p -R --no-data myapp_db > schema_with_routines.sql(加--no-data可只导结构+过程,不导表数据)
--triggers(-E)参数:导出触发器
--triggers(简写为 -E)控制是否导出触发器。

