Очистка БД

Re: Очистка БД

от Vadim Dvorovenko -
Количество ответов: 2
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода
связи (forign key) нужны для обеспечения целостности данных. Но можно обеспечивать целостность данных и просто на уровне php-кода. Если с кодом все в порядке, а руками вы в базу не лезете (не ваш случай), то целостность данных не будет нарушена. В старых версиях mysql не было foreign key, от этого всё пошло. Когда техническая возможность появилось, оказалось, что качество кода достаточное, чтобы не добавлять ключи.
теперь, когда нет данных в родительской таблице, вам придется удалять из дочерних запросами вида DELETE FROM mdl_course_modules where no exists (select * mdl_course where mdl_course.id = mdl_course_modules.course_id)

каскадное удаление у вас может быть только, если оно было сделано руками кем-то из "доработчиков" системы. Из коробки и опытными разработчиками moodle такое не используются.

восстанавливайте бэкап частями, исключив из него таблицу с логами, чтобы сэкономить треть времени. Согласен с Вадимом, сам по себе объем логов вообще на производительность нее влияет.

запускать cron из cli нужно регулярною Задача очистки может срабатывать не при каждом запуске.
задачи планировщика можно запускать и без cron, по требованию, есть специальный скрипт, чтобы запустить только нужную задачу.

писал где-то в соседней теме, как можно пользоваться средствами мониторинга сервера, чтобы понять, где узкое место. В первую очередь нужно понять, каких именно ресурсов не хватает
В ответ на Vadim Dvorovenko

Re: Очистка БД

от Геннадий Юрич -
Благодарю за ответ!

Это, выходит, столько мусора у нас, что хоть всё заново ставь.
Админа, как такового, давно нет, а удалять выпускников фильтрацией по группам - морока, ещё и с постоянно вылезающими "503" после удаления очередной "группы", вот и влез руками на свою голову...
Коллега пробовал делать дамп - оборвался с ошибкой. Попробуем исключить таблицу с логами.
В ответ на Геннадий Юрич

Re: Очистка БД

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
В mysql бекап можно делать путем копирования каталога с БД. Только нужно чтобы в это время туда никто не писАл.
Это будет значительно быстрее чем mysqldump.
Смотрите логи на тему ошибки 503! У php есть 2 причины: лимит процессорного времени и лимит по памяти, плюс к этому может быть превышение таймаута выполнения запроса в веб-сервере.
cron при своей работе может требовать значительно больше памяти и процессорного времени.