He escrito un simple complemento de Nagios que llama a mysqlcheck (que comprueba las tablas dañadas) y dará una advertencia si alguna está dañada.
Sin embargo, ninguna de mis tablas está corrupta ahora. Así que no estoy 100% seguro de que mi complemento funcione bien. Tengo un servidor de desarrollo que no es crítico para la misión. ¿Cómo puedo forzar que una (o cualquiera) de las tablas estén corruptas para poder probar mi alerta de nagios?
Para el registro, el servidor es Ubuntu Dapper y mysql es la versión 5.0
Respuestas:
En general, no puede hacer una copia de seguridad de las bases de datos copiándolas de / var / lib / mysql y luego volviéndolas a copiar porque se corrompen, debe usar mysqldump en su lugar.
Entonces, si va a una de las carpetas de la base de datos en / var / lib / mysql, es decir / var / lib / mysql / myDB / y se mete con algunos de los archivos que deberían hacerlo :-)
Por lo tanto, recomendaría copiar uno de los archivos, editar un poco con un editor hexadecimal y volver a copiarlo.
fuente
fuente
Puede usar una herramienta de fuzzing como zzuf para fuzzear un archivo de base de datos preexistente, por ejemplo
fuente
Esto debería hacerlo:
fuente
Sugeriría que una forma más realista de simular fallas sería sacar la alfombra de debajo de los pies de MySQL mientras realiza una actualización intensiva. Emitir SIGKILL al
mysqld
proceso debería ser suficiente. Lo más probable es que cuando reinicie MySQL las tablas en cuestión se marcarán como bloqueadas.Alternativamente, sugeriría aplicar las sugerencias de otras personas, pero al
.MYI
archivo indec en lugar del archivo de datos.fuente
ejemplo:
fuente
quizás una ejecución de comando que haga algo como lo siguiente:
fuente