我有一个标准的mysqlbackup脚本在cron中运行。 我们最近遇到了一个问题,我们从视图引用的表中删除了一列。 因此,我们的备份脚本失败,出现类似如下的错误:
mysqldump: Couldn't execute 'show create table `v`': View 'foo_breakage.v' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them (1356)
如果您只是放弃这个视图,备份将再次工作。 我试图解决的是要么a)在将来发生这种错误时通知b)(这可能不太可能),而是强制备份通过,而不pipe这样的错误如果可能的话。
解决这个问题的最好方法是什么? 我假设唯一的,最好的方法是检查退出状态代码,并在发生故障时向pipe理员发送电子邮件通知。 上述故障会在退出状态代码中显示吗? 寻找创意/简单的解决scheme。
我会检查错误和邮件/触发相应的东西 – 但你也可以强制备份继续,无论错误:
从mysqldump参考页面 :
–force,-f
即使在表转储过程中发生SQL错误,也要继续。
此选项的一个用途是使mysqldump继续执行,即使遇到已经变为无效的视图,因为定义引用了已经被删除的表。 没有–force,mysqldump退出并显示错误信息。 使用–force,mysqldump打印错误消息,但是它也将包含视图定义的SQL注释写入转储输出并继续执行。
简单的解决scheme:使用sourceforge.net的“automysqlbackup”脚本并将其扔在cron上。
它甚至自动旋转每日/每周备份+电子邮件与所有的结果。