2010-06-07 18 views
16

Tengo un servidor MySQL con registro binario activo. Una vez al día, el archivo de registros se "gira", es decir, MySQL parece dejar de escribir en él y crea un nuevo archivo de registro. Por ejemplo, actualmente tengo estos archivos en/var/lib/mysql¿Es seguro borrar registros binarios MySQL girados?

-rw-rw---- 1 mysql mysql 10485760 Jun 7 09:26 ibdata1 
-rw-rw---- 1 mysql mysql 5242880 Jun 7 09:26 ib_logfile0 
-rw-rw---- 1 mysql mysql 5242880 Jun 2 15:20 ib_logfile1 
-rw-rw---- 1 mysql mysql 1916844 Jun 6 09:20 mybinlog.000004 
-rw-rw---- 1 mysql mysql 61112500 Jun 7 09:26 mybinlog.000005 
-rw-rw---- 1 mysql mysql 15609789 Jun 7 13:57 mybinlog.000006 
-rw-rw---- 1 mysql mysql  54 Jun 7 09:26 mybinlog.index 

y mybinlog.000006 está creciendo.

¿Puedo simplemente tomar mybinlog.000004 y mybinlog.000005, comprimirlos y transferirlos a otro servidor, o tengo que hacer otra cosa antes?

¿Qué información se almacena en mybinlog.index? ¿Solo la información sobre el último registro binario?

ACTUALIZACIÓN: Entiendo que puedo eliminar los registros con PURGE BINARY LOGS que actualiza el archivo mybinlog.index. Sin embargo, debo transferir los registros a otra computadora antes de eliminarlos (pruebo si la copia de seguridad es válida en otra máquina). Para reducir el tamaño de la transferencia, deseo bzip2 los archivos. ¿Qué hará PURGE BINARY LOGS si los archivos de registro ya no están "allí"?

Respuesta

5

fin encontré la respuesta en el sitio web de MySQL. En caso de que alguien necesita esta información:

Antes de MySQL 5.0.60, PURGA BINARIO registros para los afinará BINARIO registros antes no se comportaban de la misma manera (y ninguno de los dos se comportó correctamente) cuando los archivos de registro binario enumeran en el El archivo .index ha sido eliminado del sistema por otros medios (como el uso de rm en Linux). Comenzando con MySQL 5.0.60, ambas variantes de la declaración fallan con un error en tales casos. (Bug # 18199, Bug # 18453) Para manejar tales errores, edite el archivo .index (que es un archivo de texto simple) manualmente para asegurarse de que solo enumera los archivos de registro binarios que están realmente presentes, luego ejecute nuevamente los registros de PURGE BINARY declaración que falló.

Esto significa que debería editar manualmente el archivo .index y todo estará bien. Lo interesante es que el archivo .index es un archivo de texto normal. Ni siquiera me di cuenta de eso hasta ahora.

+0

Hola, recientemente me encontré con este problema también. ¿Qué hiciste? Tengo más de 300 GB de archivos de registro? ¿Borro los archivos y el contenido del archivo de texto de índice? – Spartacus38

+0

Tengo el mismo problema con el que el comando de registros binarios de purga no elimina los registros binarios y no se muestra ningún error. Me pregunto si la idea de Milán funcionará. Como es un DB de producción, servidor, soy cauteloso. – mezi

+0

Funciona. Desde el año 2010, hice eso en producción muchas veces. –

24

Puede eliminar registros binarios antiguos. En lugar de eliminarlos directamente, es más seguro usar la declaración de MySQL PURGE BINARY LOGS que también actualiza su archivo mybinlog.index. Este archivo almacena los nombres de archivo, que han sido utilizados para el registro binario, ver

http://dev.mysql.com/doc/refman/5.0/en/purge-binary-logs.html

Además, se puede configurar el servidor MySQL-eliminar viejos registros binarios de forma automática. Establezca las variables max_binlog_size y expire_logs_days en la configuración de su servidor a los valores apropiados.

Los archivos ibdata y ib_logfile no tienen nada que ver con el registro binario. Son utilizados por el motor de almacenamiento innodb. No se confunda con el hecho de que no parecen crecer: si tiene innodb-tables en su servidor, estos archivos son importantes y borrarlos puede ocasionar la pérdida de datos. Puede leer más sobre InnoDB en la documentación:

http://dev.mysql.com/doc/refman/5.0/en/innodb-configuration.html

+0

necesito para comprimir archivos de registro y luego transferir a través de la red a otro equipo donde solicite periódicamente para asegurarse de copia de seguridad es válida. Si los bzip, la extensión cambiará a .bz2. Creo que PURGE BINARY LOGS no los eliminaría en ese caso. Podría descomprimir archivos después de la transferencia, pero eso no suena como debería. –

4
mysql> PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY; 

¡ELIMINAR TODOS los archivos de bin antes de 3 DÍAS!

o

PURGE MASTER LOGS BEFORE '2010-10-08 00:00:00'; 
Cuestiones relacionadas