No los elimine solo en el sistema operativo.
Debe dejar que mysqld lo haga por usted. Así es como mysqld lo maneja:
El archivo mysql-bin.[index]
mantiene una lista de todos los registros binarios que mysqld ha generado y rotado automáticamente. Los mecanismos para limpiar los binlogs junto con mysql-bin.[index]
son:
PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';
Esto borrará todos los registros binarios antes del binlog o la marca de tiempo que acaba de especificar.
Por ejemplo, si corres
PURGE BINARY LOGS TO 'mysql-bin.000223';
Esto borrará todos los registros binarios anteriores mysql-bin.000223
.
Si tu corres
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;
Esto borrará todos los registros binarios antes de la medianoche hace 3 días.
Si desea que binlog se elimine automáticamente y se mantenga durante 3 días, simplemente configure esto:
mysql> SET GLOBAL expire_logs_days = 3;
luego agregue esto a /etc/my.cnf
[mysqld]
expire_logs_days=3
y mysqld los borrará por ti
MOSTRAR ESTADO ESCLAVO \ G
Esto es critico. Cuando corras SHOW SLAVE STATUS\G
, verás dos registros binarios del Maestro:
Master_Log_File
Relay_Master_Log_File
Cuando la replicación tiene poco o ningún retraso, estos generalmente tienen el mismo valor. Cuando hay mucho retraso de replicación, estos valores son diferentes. Solo para hacerlo simple, elija lo que Relay_Master_Log_File
sea, y regrese al Maestro y ejecute
PURGE BINARY LOGS TO 'Whatever Relay_Master_Log_File Is';
De esa manera, la replicación no se interrumpe.
[mysqld] expire_logs_days=3
(y debe incluir la[mysqld]
secciónSET GLOBAL expire_logs_days = 3;
desde el cliente mysql no los aceptará. Ejemplo En el MySQL Docs: dev.mysql.com/doc/refman/5.5/en/mysqld-option-tables.htmlmysql> SET GLOBAL expire_logs_days = 3;
yexpire-logs-days=3
en/etc/my.cnf
... ¿Son iguales? ¿Esto es redundante o no? ¿O es importante ejecutar ySET GLOBAL...
luego agregarexpire-logs-days=..
? Gracias.PURGE BINARY LOGS BEFORE DATE(NOW());
¿por qué no hay valores predeterminados razonables para esto? No tengo ningún lugar, nunca explicitamente cambié el tamaño del archivo de registro a una cantidad gigantesca. Tenía 10.0 GB de archivos de registro, después de ejecutar este comando, el tamaño de mi carpeta mysql.bin se redujo a 1.6GB.Esto realmente depende de su estrategia de respaldo. Una de las principales razones para mantener los registros binarios es restaurar su base de datos a un "punto en el tiempo". Si su base de datos falla y requiere restauración, debería restaurar la última copia de seguridad completa y luego reproducir los registros binarios comenzando por la posición de la copia de seguridad completa.
Por lo tanto, si hace una copia de seguridad completa todos los días y tiene un valor de 7 días de registros binarios, es probable que pueda eliminar los últimos 4 a 6 días de registros binarios. Puede controlar cuántos días de registros binarios se mantienen con la
expire_logs_days
configuración.Puede eliminar los registros binarios que no necesita viendo primero cuál es el registro más antiguo que desea mantener:
y luego en mysql:
fuente
Prueba esto:
como decía el documento :
Esto eliminará todos los archivos de registro binarios relacionados, que pueden no ser lo que desea.
fuente