MySQL备份是否包含自定义函数与事件?恢复异常问题咨询
MySQL备份恢复:自定义函数、事件丢失的解决办法
一、搞定自定义函数的备份与恢复
- 备份必须带上函数
用mysqldump的话,一定要加--routines参数(这个参数会把存储过程和自定义函数都包含进去)。要是用Workbench的备份向导,去"高级选项"里勾上"Include Create Procedure/Function/Event",别漏了这个选项。
示例命令:mysqldump -u 用户名 -p 数据库名 --routines > backup.sql - 解决依赖顺序坑
你碰到的视图依赖函数导致恢复失败,是因为默认备份的SQL里,视图会比函数先创建。两种解决办法:- 手动改备份SQL的顺序,把函数定义挪到所有依赖它的视图、表前面;
- 恢复的时候先单独导入函数部分,再导整个备份文件。
二、让自定义事件恢复正常
- 备份要包含事件
mysqldump得额外加--events参数才能备份事件,Workbench同样要在高级选项里勾选"Include Events"。完整的备份命令参考:mysqldump -u 用户名 -p 数据库名 --routines --events > full_backup.sql - 检查事件调度器是否开启
恢复后看不到事件,大概率是MySQL的事件调度器没开。执行下面的SQL检查:SHOW VARIABLES LIKE 'event_scheduler'; -- 要是显示OFF,就执行开启命令 SET GLOBAL event_scheduler = ON; -- 想永久生效的话,改my.cnf/my.ini,加一行event_scheduler=ON,然后重启MySQL服务 - 确认事件是否真的恢复了
恢复完用SHOW EVENTS FROM 数据库名;看看事件在不在。要是不在,先检查备份文件里有没有CREATE EVENT的语句,再确认恢复用的账号有没有EVENT权限。
三、未保存的打开查询能不能恢复?
MySQL Workbench本身不会自动保存未保存的查询,但可以试试这俩办法:
- 找Workbench的临时文件目录:Windows一般在
C:\Users\<你的用户名>\AppData\Roaming\MySQL\Workbench\sql_workspaces,macOS是~/Library/Application Support/MySQL/Workbench/sql_workspaces,Linux在~/.mysql/workbench/sql_workspaces,里面可能有缓存的未保存文件; - 要是刚关了Workbench,重新打开的时候可能会弹出恢复未保存文件的提示,别错过这个弹窗。
内容的提问来源于stack exchange,提问作者angryteacup
相关产品推荐
相关产品推荐

