Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo eliminar Mysql con "#sql

Cómo eliminar Mysql con "#sql

¿Cómo elimina Mysql la tabla temporal que comienza con "#sql-"?

Fenómeno: después de reconstruir el índice, se descubre que el espacio en disco del servidor Mysql está casi lleno

Utilice el siguiente comando para reconstruir el índice

mysql> altere la tabla skatetab agregue un índice único (id, uid), elimine la clave principal, agregue la clave principal (uid, id);

Reconstruir el índice Durante el proceso, el servidor Mysql se reinició debido a que no había espacio suficiente. Después del reinicio, se encontró que el espacio era 100G menos. Así que verifiqué qué directorio ocupaba el 100G y finalmente descubrí que había muchos archivos temporales similares a #sql-*.ibd y #sql-*.frm con el mismo nombre de archivo en el directorio de datos.

Ahora que sabe que es una tabla temporal, elimínela. No debe eliminarla directamente a través de rm, porque si la información del diccionario y la información de Deshacer se guardan en ibdata, se informará un error después de reiniciar la base de datos.

Método de eliminación:

En el proceso de modificación de la tabla, si Mysql falla repentinamente, habrá algunas tablas intermedias en el directorio de datos. Estas tablas intermedias comienzan con "#sql El temporal. La tabla que comienza con -" se verá en su directorio de datos

#sql-*.ibd y el #sql-*.frm correspondiente. Si #sql-*.ibd y #sql- Si ambos *. Los archivos frm existen en el directorio de datos, puede eliminar la tabla directamente, similar a:

mysql> drop table `#mysql50##sql-928_76f7`;

Prefix" #mysql50# "Deje que Mysql ignore la codificación de seguridad del nombre del archivo. Este prefijo se introdujo en Mysql5.1

Porque hay dos #sql-*.ibd y #sql-*.frm en mi directorio de datos Todos los archivos se guardan, así que simplemente suéltelos También se recuperan más de 100 G de espacio en disco, como se muestra a continuación

mysql> drop table `#mysql50##sql-928_76f7`;

. Consulta correcta, 0 filas afectadas (16,28 segundos)

Nota: si solo hay #sql-*.ibd en el directorio de datos pero no #sql-*.frm, se requiere un procesamiento especial

p>

1. Cree una estructura de tabla en otro esquema de datos que sea igual a la tabla que se va a eliminar (incluidas las mismas columnas e índices)

mysql> cree una prueba de base de datos

mysql> crear tabla test.tmp como skatetab; // Solo copia la estructura y el índice de la tabla, no los datos

2. Copia el archivo .frm de la tabla temporal recién creada a los datos. directorio que se eliminará y modifique el nombre del archivo igual que "#sql-*.ibd"

shell> cp test/tmp.frm #sql-928_76f7.frm

3 Confirme #sql: guarde los archivos *.ibd y #sql-*.frm y luego suéltelos directamente, de la siguiente manera:

mysql> drop table `#mysql50##sql-928_76f7`;<. /p>