У меня есть большой форум phpBB, работающий на сервере Debian. В течение последних нескольких месяцев у меня периодически происходит сбой mySQL (примерно каждые 10-14 дней). Это проявляется в виде ошибки «слишком много подключений 1040». Если я перезапускаю службу, я получаю сообщение об ошибке, что одна из таблиц phpbb «помечена как поврежденная, и последнее (автоматическое?) восстановление не удалось [144]».
Если я вручную войду в mysql и запущу REPAIR для таблицы, это исправит ситуацию - восстановление займет много времени - в рассматриваемой таблице более 1,5 млн записей. После этого все идет нормально, пока все не повторяется через 10 дней.
Если я запускаю systemctl status mysqld
, я вижу несколько строк, говорящих:
Jun 05 05:20:01 servername mysqld[1105]: 2020-06-05 5:20:01 140590520212224 [ERROR] mysqld: Table './phpbb_posts' is marked as crashed and last (automatic?) repair failed
Jun 05 05:20:01 servername mysqld[1105]: 2020-06-05 5:20:01 140590520212224 [ERROR] mysqld: Table 'phpbb_posts' is marked as crashed and last (automatic?) repair failed
но, как говорится, дела идут нормально.
Немного поискав в Google, кажется, что служба mysql отключается и работает:
cd /var/lib/mysql/$DATABASE_NAME
myisamchk -r $TABLE_NAME
myisamchk -r -v -f $TABLE_NAME
вполне могли бы исправить положение. Я рад попробовать это - предположительно, я просто заранее создаю резервную копию соответствующего файла DATABASE_NAME на случай, если что-то пойдет не так? В каком случае я могу просто вернуть его на место? Предположительно, команда будет выполняться долго, учитывая размер таблицы?
Прежде чем я попробую это, я очень хотел бы понять, что произошло и что будет делать это исправление. Если кто объяснит, буду очень признателен :)
Заранее спасибо!
SHOW VARIABLES LIKE "max_connections";
- person Max Muster   schedule 06.06.2020