Назад | Перейти на главную страницу

Создание более устойчивого сценария резервного копирования MySQL

У меня есть стандартный сценарий 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)

Если вы просто откажетесь от этого представления, резервное копирование снова будет работать. То, что я пытаюсь решить, - это либо а) получать уведомление в будущем, когда произойдет эта ошибка, или б) (это, вероятно, маловероятно), но принудительно выполнить резервное копирование независимо от такой ошибки, если это вообще возможно.

Как лучше всего подойти к этой проблеме? Я предполагаю, что единственный и лучший подход для этого - проверить код состояния выхода и отправить системным администраторам уведомление по электронной почте в случае сбоя. Появится ли указанная выше ошибка в коде статуса выхода? Ищу креативные / простые решения.

Я бы проверил наличие ошибок и отправил бы что-то по почте / инициировал бы что-то соответственно, но вы также можете принудительно продолжить резервное копирование независимо от ошибок:

из справочная страница mysqldump:

--force, -f

Продолжайте, даже если во время дампа таблицы возникает ошибка SQL.

Одно из применений этой опции - заставить mysqldump продолжать выполнение, даже если он встречает представление, которое стало недопустимым, поскольку определение относится к таблице, которая была удалена. Без --force mysqldump завершает работу с сообщением об ошибке. С --force mysqldump печатает сообщение об ошибке, но также записывает комментарий SQL, содержащий определение представления, в вывод дампа и продолжает выполнение.

Простое решение: используйте сценарий «automysqlbackup» с sourceforge.net и загрузите его в cron.

Он даже автоматически меняет ежедневные / еженедельные резервные копии + отправляет вам электронное письмо со всеми результатами.