У меня есть сервер базы данных mysql на экземпляре EC2 с 3 дисками в массиве Raid 0. Сегодня утром на сервере произошел сбой, и после проверки журналов я заметил ошибку структуры, требующей очистки (то есть код системной ошибки 117). При этом я попытался запустить xfs_check на задействованном диске, но вернул следующее:
xfs_repair: /dev/md0 contains a mounted filesystem
fatal error -- couldn't initialize XFS library
У меня установлены все необходимые инструменты / пакеты, поэтому я проверил системный журнал, и он вернул следующее:
Filesystem "md0": XFS internal error xfs_da_do_buf(2) at line 2112 of file /build/buildd/linux-ec2-2.6.32/fs/xfs/xfs_da_btree.c. Caller 0xffffffff81261bb5
После попытки xfs_repair я все еще вижу тот же результат, что и выше, и ту же запись в системном журнале.
Поскольку проблема только в одном каталоге базы данных, есть ли способ исправить упомянутые проблемы или заставить mysql игнорировать каталог базы данных, чтобы продолжить работу (т.е. вручную удалить базу данных, оставив каталог lib без изменений). Любые предложения будут полезны.
размонтировать все, что смонтировано в данный момент. xfs_repair временами немного разборчив в этом вопросе. lsof / mountpartition, чтобы увидеть, что еще может удерживать этот раздел открытым, если вы не можете его размонтировать.
В зависимости от того, как он выключился, вам может потребоваться -L, чтобы очистить журналы, и независимо от ваших предпочтений, используйте -P в xfs_repair - xfs_repair обычно проходит и застревает и просто сидит там, -P позволяет продолжать.
Если вы хотите проверить прогресс, из другого сеанса терминала, strace -p (pid of xfs_repair), и вы можете увидеть, что он все еще что-то делает.
Я не знаю, какую версию xfsprogs / xfsdump вы используете, но посмотрите, доступно ли обновление для вашей ОС - есть несколько недавних обновлений (за последние 8 месяцев), которые устраняют некоторые из нечетных переполнений буфера . Версия инструментов XFS в настоящее время - 3.1.5.
Вы не сможете очень легко выборочно удалять каталоги во время ремонта - хотя это сообщение об ошибке предполагает, что вы увидите некоторую потерю данных или найдете файлы в / lost + found. В зависимости от того, насколько плохая структура, вы можете обнаружить небольшую потерю данных. Если вы действительно хотите углубиться, вы можете намеренно пройти по мета-структуре и очистить определенные биты, но, я думаю, вы можете найти это чрезвычайно сложным.
Как вариант, mkfs и восстановление из резервных копий.
При повторном чтении кажется, что файловая система смонтирована, вы можете закрыть mysql, переместить один неверный каталог базы данных из каталога mysql, перезапустить mysql. В какой-то момент файловая система должна быть очищена, но, если единственная проблема заключается в том, что один каталог, и вы можете смонтировать файловую систему, вы сможете записать / переместить этот каталог в сторону.