По состоянию на 19:45 фиксируем проблемы в работе сервера базы данных, в текущий момент изучаем проблему.
Исходя из анализа произошло повреждение InnoDB таблиц, проводим анализ ситуации и оцениваем сроки восстановления.
Согласно рекомендациям разработчиков при получении ошибок InnoDB: Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB log files. требуется перевести сервер в режим только для чтения, сделать резервную копию баз данных (если это возможно), удалить существующие базы данных и выполнить восстановление данных из созданных резервных копий.
По состоянию на 20:20 мы перевели сервер базы данных в режим только для чтения и попробуем выполнить частичное восстановление баз данных исходя из результата выполнения mysqlcheck, ориентировочное время выполнения до 22:00. По мере появления новой информации мы сообщим об этом здесь.
По состоянию на 20:50 частичное восстановление данных не помогло, мы поставили создание резервных копий всех баз данных, после переустановим сервер базы данных и восстановим данные. На сервере около 700 баз данных, процедура может занять минимум несколько часов. О ходе выполнения работ будем продолжать сообщать здесь.
По состоянию на 21:05 создание резервной копии баз данных завершено, сервер базы данных полностью отключен, выполняем переустановку.
Восстановление баз данных начато в 21:25, по мере восстановления сайты будут восстанавливать свою работу.
По состоянию на 22:00 данные полностью восстановлены.
Исходя из анализа, в 19:42 одновременно ко многим сайтам пришли запросы к файлам xmlrpc.php и wp-login.php, это создало много процессов, которые привели к нехватки оперативной памяти, что в свою очередь привело к аварийному завершению процесса базы данных. Несмотря на то, что InnoDB считается надежным движком для таблиц, аварийное завершение привело к их повреждению, при этом без указания конкретных баз данных или таблиц. Сервер базы данных стал циклично перезагружаться. В данном случае единственное решение проблемы - это переустановка сервера базы данных и восстановление данных из резервных копий. Чтобы данные были актуальными, мы перевели сервер базы данных в режим только для чтения (параметр innodb_force_recovery), это позволило создать копию текущих данных, попутно контролируя статус выполнения команды mysqldump, чтобы исключить потерю каких-либо баз данных. Далее мы переустановили сервер базы данных и выполнили восстановление. Далее мы перезагрузили сервер для расширения оперативной памяти (это должно снизить шанс повторения подобной ситуации).
Общее время работ составило 2 часа 15 минут, так как большую часть времени база данных работала в режиме чтения, то мы получили только 2 обращения о проблемах. Приносим извинения за доставленные неудобства, если в работе сайтов наблюдаются до сих пор какие-то проблемы, либо сбой доставил неудобства - обратитесь в отдел поддержки с указанием проблемных сайтов.