制作更具弹性的 MySQL 备份脚本

ima*_*ive 2 mysql

我有一个在 cron 中运行的标准 mysqlbackup 脚本。我们最近遇到了一个问题,我们从视图引用的表中删除了一列。因此,我们的备份脚本失败并显示类似于以下内容的错误:

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)
Run Code Online (Sandbox Code Playgroud)

如果您只是删除此视图,备份将再次起作用。我试图解决的是 a) 将来发生此错误时收到通知,或 b)(这可能不太可能),但如果可能的话,无论出现此类错误,都强制执行备份。

解决这个问题的最佳方法是什么?我假设唯一的,也是最好的方法是检查退出状态代码,并在出现故障时向系统管理员发送电子邮件通知。上述失败会出现在退出状态代码中吗?寻找创意/简单的解决方案。

Mar*_*erg 5

我会检查错误并相应地发送邮件/触发某些内容 - 但您也可以强制备份继续而不管错误如何:

mysqldump 参考页面

--force, -f

即使在表转储期间发生 SQL 错误,也继续。

此选项的一个用途是使 mysqldump 继续执行,即使它遇到由于定义引用已删除的表而变得无效的视图。如果没有 --force,mysqldump 会退出并显示错误消息。使用 --force,mysqldump 会打印错误消息,但它还会将包含视图定义的 SQL 注释写入转储输出并继续执行。