После восстановления MariaDB таблицы на месте, но очистка старых записей не запускается или приложение сообщает об отсутствующей процедуре. Сначала проверьте, попали ли в SQL-дамп процедуры, функции, события и триггеры; затем отделите ошибку импорта от ошибки выполнения.
Наличие таблиц и открывающаяся главная страница не подтверждают полноту восстановления. Нужна сверка объектов по именам и определениям, а для фоновой операции — проверка ожидаемого результата на изолированном стенде.
1. Уточните, где выполнялось задание
Процедура или функция хранит логику в базе. Триггер срабатывает при заданном изменении таблицы, а событие Event Scheduler выполняет SQL по расписанию. Задание cron или воркер приложения находится вне этих объектов: обычный дамп прикладной БД не восстановит его системное расписание.
Составьте опись: имя объекта, тип, база, назначение и ожидаемый результат. Если исходный сервер доступен, получите список с правами на просмотр соответствующих объектов:
SHOW PROCEDURE STATUS WHERE Db = 'site_db';
SHOW FUNCTION STATUS WHERE Db = 'site_db';
SHOW TRIGGERS FROM site_db;
SHOW EVENTS FROM site_db;
Здесь site_db — пример имени базы. Пустой список под ограниченной учётной записью ещё не доказывает отсутствие объектов: попросите администратора проверить видимость. Если сервер утрачен, опирайтесь на прежнюю опись, миграции и код приложения; без эталона полнота остаётся неподтверждённой.
2. Проверьте параметры экспорта
В mariadb-dump процедуры и функции включаются параметром --routines, события — --events. Триггеры включены по умолчанию, но их мог отключить --skip-triggers.
Для SQL-копии нужной базы явно проверьте набор --routines --events --triggers в задании резервирования. Это параметры состава, а не готовый рецепт согласованного бэкапа: выбор таблиц, права, версии клиента и режим копирования проверяются отдельно.
Убедитесь, что экспорт завершился успешно, и просмотрите закрытый журнал ошибок. Ненулевой размер файла не означает, что выгрузка полная. Наличие инструкций создания нужных объектов внутри дампа полезно для первичной проверки, но поиск одного слова PROCEDURE не заменяет восстановление и сверку.
Если объектов нет в дампе, повторный импорт того же файла их не вернёт. Исправьте экспорт, получите новую копию либо найдите совместимые определения в проверенных миграциях.
3. Сверьте объекты после импорта
Проверяйте копию на отдельном экземпляре MariaDB. До импорта убедитесь, что его Event Scheduler выключен; отключите cron, воркеры и реальные внешние отправки, исключите доступ стенда к боевым системам. Общая подготовка описана в инструкции по пробному восстановлению.
Сохраните код завершения и ошибки импорта. Сравните списки объектов с описью, затем проверьте определения через SHOW CREATE PROCEDURE, SHOW CREATE FUNCTION, SHOW CREATE TRIGGER и SHOW CREATE EVENT, указывая нужную базу и имя.
Проверяйте не только количество: два разных набора могут содержать одинаковое число объектов. Сверяйте тела SQL, параметры, таблицы назначения и ссылки на другие схемы; отдельно учтите различия sql_mode и кодировок.
Если определение в файле есть, а объекта после загрузки нет, разберите первую относящуюся к нему ошибку: права создания, несовместимый синтаксис или отсутствующую зависимость. После исправления повторите тест на чистой базе, чтобы остатки прошлого импорта не скрыли пропуск.
Объект есть, но операция получает отказ
Проверьте DEFINER — учётную запись, указанную в определении. Для процедур и функций режим SQL SECURITY определяет, чьи права используются: владельца определения или вызывающего пользователя; это описано в правилах доступа MariaDB.
Существование процедуры не подтверждает возможность её вызова пользователем приложения. Не заменяйте все DEFINER на администратора ради успешного теста: согласуйте нужную учётную запись и минимальные права, затем проверьте вызов в предназначенном контексте.
4. Отделите расписание от результата
Для существующего события проверьте состояние сервера и самого объекта:
SHOW VARIABLES LIKE 'event_scheduler';
SELECT EVENT_NAME, STATUS, TIME_ZONE, LAST_EXECUTED
FROM information_schema.EVENTS
WHERE EVENT_SCHEMA = 'site_db';
Event Scheduler должен работать, чтобы выполнять события. При этом проверьте статус события, начало и конец расписания, часовой пояс. Не включайте планировщик сразу после импорта: сначала разберите все задания и их возможные побочные действия.
Поле LAST_EXECUTED показывает время запуска, а не доказывает бизнес-результат; состав полей приведён в описании EVENTS. Например, для тестовой очистки задайте контрольные записи и проверьте, какие удалились и какие сохранились, а также журнал ошибок. Процедуру и триггер аналогично проверяют безопасным тестовым действием на стенде.
Когда копию можно считать проверенной
Зафиксируйте комплект копии, версии СУБД и клиента, ожидаемые и найденные объекты, ошибки импорта и результаты тестов. Успех означает, что нужные определения восстановлены и контрольные операции дали ожидаемый результат; известные пропуски должны остаться в протоколе.
Web-Puls может наблюдать за доступностью публичного сайта после восстановления, но HTTP-проверка не подтверждает состав дампа или исполнение событий БД.
Если объект есть, а причину отказа установить не удалось, отправьте заявку на диагностику: укажите сайт, версии MariaDB, тип объекта и обезличенную ошибку без дампа и секретов. Специалист оценит задачу; формат и стоимость работ согласуются до начала.