Я написал простой плагин Nagios, который вызывает mysqlcheck (который проверяет поврежденные таблицы) и выдаст предупреждение, если таковые имеются.
Однако ни одна из моих таблиц сейчас не повреждена. Так что я не уверен на 100%, что мой плагин работает нормально. У меня есть dev-сервер, который не критичен по мисс. Как я могу заставить одну (или любую) из таблиц там быть поврежденными, чтобы я мог проверить свое предупреждение nagios?
Для записи сервер Ubuntu Dapper и MySQL версии 5.0
Ответы:
Как правило, вы не можете создавать резервные копии баз данных, копируя их из / var / lib / mysql, а затем копируя их обратно, потому что они повреждены, вместо этого вы должны использовать mysqldump.
Поэтому, если вы войдете в одну из папок для базы данных в / var / lib / mysql, т.е. / var / lib / mysql / myDB /, и возитесь с некоторыми файлами, которые должны это сделать :-)
Поэтому я бы порекомендовал скопировать один из файлов, немного отредактировать с помощью шестнадцатеричного редактора и скопировать его обратно.
источник
источник
Вы можете использовать инструмент фаззинга, такой как zzuf, для фаззинга уже существующего файла базы данных, например
источник
Это должно сделать это:
источник
Я бы предположил, что более реалистичный способ симулировать ошибку - вытащить коврик из-под ног MySQL, пока он выполняет интенсивное обновление. Выдача SIGKILL на
mysqld
процесс должна быть достаточной. Скорее всего, при перезапуске MySQL соответствующие таблицы будут помечены как сбойные.В качестве альтернативы я бы предложил применять предложения других людей, но не к
.MYI
файлу данных, а к индексу.источник
пример:
источник
возможно выполнение команды, которая делает что-то вроде следующего:
источник