¿Cómo resolver el problema del aumento del tamaño de los archivos Binlog de MySQL?

¿Cómo resolver el problema del aumento del tamaño de los archivos Binlog de MySQL?

El recuento de archivos MySQL Binlog aumenta día a día y su tamaño aumenta en gigabytes. ¿Cómo puedo detener el aumento de tamaño de los archivos binlog? Están llenando el espacio del disco.

Respuesta1

Con MySQL8, han activado el registro binario de forma predeterminada y la purga (caducidad/eliminación) predeterminada de los registros binarios está establecida en 30 días.

Una vez que esté en su SSH y en MySQL, puede usar los siguientes comandos

Para mostrar registros binarios

mysql> SHOW BINARY LOGS;

Para purgar registros binarios manualmente hasta algún momento

mysql> PURGE BINARY LOGS TO 'binlog.000142';

Cambiar el vencimiento de la purga automática predeterminada de 30 días (predeterminado) a 3 días

mysql> SET GLOBAL binlog_expire_logs_seconds = 259200;
Query OK, 0 rows affected (0.00 sec)

mysql> SET PERSIST binlog_expire_logs_seconds = 259200;
Query OK, 0 rows affected (0.01 sec)

El valor anterior está en segundos, es decir, 3 días en segundos = (60 segundos x 60 minutos x 24 horas x 3 días) = ​​259200

Respuesta2

Si no necesita conservar esos registros binarios, puede "recortarlos" dentro de MySQL de esta manera:

mysql> PURGE BINARY LOGS BEFORE '2021-01-01 00:00:00';

Por supuesto, puedes cambiar la fecha cuando quieras. Si desea recortar a un archivo de registro binario específico, puede hacerlo así:

mysql> PURGE BINARY LOGS TO 'mysql-bin.12345';

Asegúrese de especificar el archivo real que está recortando.

IMPORTANTE:No se limite a eliminar los archivos del sistema de archivos. MySQL se quejará en algún momento en el futuro de manera terrible. Ahórrese el tiempo de inactividad innecesario utilizando PURGE BINARY LOGS comando desde dentro de MySQL.

Respuesta3

Los binlogs son necesarios para la replicación y ciertas formas de respaldo. Parece que tú tampoco lo estás haciendo.

Para cambiar la configuración, me gusta agregar un archivo nuevo, como (donde "rj" son mis iniciales):

/etc/mysql/mysql.conf.d/rj.cnf

y poner anulaciones, como las que se muestran a continuación. en eso. Después de realizar cambios,

sudo systemctl restart mysql

log_bincontrola la creación de binlogs.

Para mantenerlos purgados, agregue binlog_expire_logs_seconds = 86400(o algún otro número).

Otra configuración controla el tamaño máximo de cada archivo binlog; eso no afectará el espacio total en disco utilizado, excepto que el último archivo permanecerá hasta que "caduque". Se inicia un nuevo binlog después de cualquier reinicio (o reinicio de mysql), por lo que es posible que vea muchos archivos pequeños.

Entonces, mi archivo rj.cnf podría tener algunos de estos:

# Added by Rick James
[mysqld]
log_bin =                           # turn off
binlog_expire_logs_seconds = 86400  # 1 day
max_binlog_size = 104857600         # 100M

Respuesta4

Puede utilizar el script disponible en https://github.com/Thibs/monitor_mysql_binary_logging/blob/main/monitor_mysql_binary_logging.sh

para administrar el tamaño/número de sus archivos de registro binarios

información relacionada