Base de datos: Cómo solucionar si el disco MySQl está lleno

Tabla de contenido

Solución

Problemas

Restauración de base de datos

Las causas de la fragmentación de MySQL.

Ventajas de la eliminación de escombros


Hoy te hablaré de cómo limpiar el disco MySQL cuando está lleno, ¡espero que te sea de ayuda!

Solución

Revisé muchos recursos en línea y necesitaba desfragmentar el disco. La razón es que datafree ocupa demasiado espacio. Los detalles se pueden ver a través de este sql.

SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size,
CONCAT(TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB') AS max_data_size,
CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB') AS data_free,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
FROM information_schema.tables WHERE TABLE_NAME = 'datainfo';

Esta es una imagen posterior. La imagen anterior no se conserva. En ese momento, mostraba que data_free en una tabla alcanzaba los 20 G.

El método recomendado en Internet es el siguiente para fragmentar la tabla.

ALTER TABLE datainfo ENGINE=InnoDB;
ANALYZE TABLE datainfo;

optimize table datainfo;

Problemas

Verifique que la versión 5.562 de la base de datos no sea compatible con inodb o elija actualizar la base de datos. En ese momento sucedieron malas noticias: la tabla fue eliminada, pero aún no se liberó el espacio en disco. Por lo tanto, la forma de desfragmentar la tabla no funcionará porque la tabla ya no existe. . .

1. Utilice el comando para ver la ubicación de la instalación de mysql y la ubicación del archivo de configuración.

mysql 1118 945 0 14:28 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock

2. Cerrar mysql

service mysql stop  

3. Elimine los archivos ibdata1, ib_logfile0 e ib_logfile1 en el directorio datadir.

4. Mueva los parámetros de inicio de mysql.

mv /etc/my.cnf ./abc

5. Reinicie mysql y descubra que se libera espacio en el disco.

inicio del servicio mysql

Restauración de base de datos

1. Utilice la herramienta de copia de seguridad Navicate para realizar una copia de seguridad de la base de datos.

Una vez que la copia de seguridad se realiza correctamente, se genera el archivo psc. 200409141055.psc

2. Cree una nueva instancia de base de datos y establezca el nombre de la base de datos y el juego de caracteres.

3. Luego restaure la base de datos de respaldo y haga clic en Restaurar

4. Inicie la restauración. Después de la primera restauración, descubrí que la tabla de la base de datos se creó correctamente después de la restauración, pero no había datos en la tabla. Más tarde, busqué información en línea y descubrí que se detuvo cuando encontré un error. Entonces cambié la configuración de restauración y restauré nuevamente. Así estaba configurado antes.

La restauración se realiza como una transacción y se detiene cuando se encuentra un error. Cambie la configuración y restaure nuevamente, los datos en la base de datos están ahí y no hay problemas con la verificación.

Las causas de la fragmentación de MySQL.

El almacenamiento de la tabla se fragmentará. Cada vez que se elimina una fila de contenido, el espacio quedará vacío. Una gran cantidad de operaciones de eliminación durante un período de tiempo hará que este espacio vacío se vuelva más grande que el contenido de la lista de almacenamiento. El espacio utilizado es más grande;

Al realizar una operación de inserción, MySQL intentará utilizar un espacio en blanco, pero si un determinado espacio en blanco no ha sido ocupado por datos del tamaño apropiado, aún no podrá ocuparse por completo, lo que provocará fragmentación;

Cuando MySQL escanea los datos, el objeto que escanea es en realidad el límite superior del requisito de capacidad de la lista, que es la parte máxima del área donde se escriben los datos;

Ventajas de la eliminación de escombros

Reduzca IO al acceder a tablas, mejore el rendimiento de MySQL, libere espacio en tablas y reduzca el uso de espacio en disco.

Aviso

  • MySQL recomienda oficialmente no desfragmentar con frecuencia (cada hora o diariamente) y, por lo general, solo es necesario desfragmentarlo una vez a la semana o mensualmente, según la situación real (actualmente borramos los fragmentos de tabla en todas las instancias de MySQL a las 2 a. m. cada mes).
  • Durante la operación de OPTIMIZE TABLE, MySQL bloqueará la tabla. Por tanto, esta operación debe realizarse durante un periodo horario en el que el sitio web tenga menos tráfico.
  • Limpiando 1,05 millones de datos de estudiantes, OPTIMIZAR TABLA biblioteca.estudiante; la prueba local toma 37 segundos.

Supongo que te gusta

Origin blog.csdn.net/xishining/article/details/118470141
Recomendado
Clasificación