¿Cómo limpiar registros o encontrar archivos más grandes y reducir el espacio? Tampoco entiendo que 1.7T ni siquiera se use en este momento crítico.
Mysqld no se está ejecutando porque se utiliza el 99%.
# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 20G 19G 279M 99% /
/dev/root 20G 19G 279M 99% /
devtmpfs 32G 268K 32G 1% /dev
/dev/md3 1.8T 196M 1.7T 1% /home
tmpfs 32G 0 32G 0% /dev/shm
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named
/dev/root 20G 19G 279M 99% /var/named/chroot/var/named
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.conf
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.rfc1912.zones
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/rndc.key
/dev/root 20G 19G 279M 99% /var/named/chroot/usr/lib64/bind
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.iscdlv.key
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.root.key
Respuesta1
Los datos de MySQL se almacenan en /var/lib
. No hay más espacio en /var
. MySQL no se inicia. En realidad, bastante simple. Échale un vistazo /var/log
y límpialo. Recomendaría algo como (eliminar todos gz
los archivos en /var/log
):
$ find /var/log -iname "*.gz" -delete
Por supuesto, es posible que desees comprobar primero qué se está eliminando:
$ find /var/log -iname "*.gz"
Se entregan 1,7 TB a /home
. Sin embargo /var
no lo es /home
. Entonces /home
no se está utilizando. Sencillo también.
Claramente deberías haberte separado /var
en una partición mucho más grande cuando configuraste tu sistema. Ahora, la mejor solución que puedo encontrar es mover el directorio de datos de MySQL a una partición más grande ( /home
):
$ mv /var/lib/mysql /home
$ ln -s /home/mysql /var/lib/mysql
Si no desea utilizar un enlace, debe reconfigurar MySQL para utilizar el nuevo directorio de datos almacenado en /home
. Edita /etc/mysql/my.cnf
y cambia esto:
datadir = /var/lib/mysql
a esto:
datadir = /home/mysql
Ahora que MySQL tiene espacio disponible, debería iniciarse sin problemas. Sin embargo, realmente deberías reconsiderar tu esquema de partición si alojas una base de datos tan importante.
También es posible que desees investigar el contenido de tus registros, ya que las aplicaciones no deberían escribir tanto en ellos si todo va bien. Es posible que algo esté teniendo dificultades para funcionar correctamente en alguna parte.
Respuesta2
Este es un comando útil para encontrar los archivos más grandes:
du -ak /var | sort -nr | less
Uso:
du -ak
Resume el uso del disco de todos ( -a
) archivos en la /var
partición e imprime el tamaño en kilobytes ( -k
).
sort -nr
Concatena la lista de archivos y los ordena en orden -r
numérico ( ) inverso ( -n
).
less
Paginará el resultado para que pueda ver los infractores más importantes en la parte superior y avanzar y retroceder en la lista.
Respuesta3
Me gustaría señalar que también podría ser un problema con los registros binarios de MySQL en lugar de con los archivos de la base de datos en sí. Los binlogs se colocan en el directorio /var/log/mysql de forma predeterminada en muchos casos y tienden a consumir varias veces más espacio en disco que los archivos de bases de datos. Esto se debe a que los binlogs almacenan todas las consultas de modificación de datos SQL (ACTUALIZACIONES, INSERTACIONES, etc.) para realizar un seguimiento de los cambios en los datos de una base de datos. Los binlogs no deben eliminarse directamente mediante el comando shell rm, solo mediante el comando mysql en un motor de base de datos en ejecución. Para hacer esto, el servidor MySQL debe estar activo. Creo que mover el directorio /var/lib/mysql a la partición /home debería liberar suficiente espacio en la partición / para que el servidor mysql pueda iniciarse. Entonces el procedimiento debería ser el siguiente:
- Mueva los datos de MySQL a la partición /home como lo describe @John WH Smith.
- Cambie la variable datadir como lo describe @John WH Smith y ejecute el servidor mysql.
- Conéctese al servidor mysql como usuario root mediante un PMA, mysql o algún otro cliente.
- Purgue los registros binarios con los comandos RESET MASTER o PURGE BINARY LOGS TO (consulte la documentación de mysql para obtener más detalles).
- Detenga el servidor mysql. Edite el archivo de configuración mysql. Recuerde el valor de la variable 'log_bin'. Contiene una ruta y un nombre de archivos de registro binarios.
- Mueva todos los archivos binlog, incluido un índice binlog, al directorio /home/mysql/.
- Cambie el valor de la variable 'log_bin' a 'log_bin = /home/mysql/mysql-bin.log' y luego inicie la base de datos mysql.