Tengo una pregunta sobre cómo eliminar registros binarios en el entorno de replicación:
Tenemos un entorno con 1 maestro y 2 esclavos (ejecutando mysql 5.5). A veces, nos encontramos con problemas de espacio durante tiempos de procesamiento pesados, por lo que el directorio bin log se llena. Los registros caducan cada 3 días. Me preguntaba, ¿hay alguna razón por la cual los registros se deben mantener durante 3 días en todas las cajas: maestro y ambos esclavos? ¿Tendría sentido, por ejemplo, mantener registros durante 3 días en un maestro, pero durante 1 día en esclavos? ¿Cuál es la mejor manera de hacerlo?
¡Gracias!
Respuestas:
ESCLAVO
Si sus esclavos no son maestros, entonces los esclavos no necesitan registro binario en absoluto. Puede poner un límite a la cantidad de espacio de registro de retransmisión acumulado por un esclavo. Para acelerar los registros de relé a 4G, agregue
relay_log_space_limit
a /etc/my/.cnf en cada esclavoy reiniciar mysql
Si no puede configurar esto, al menos debería tener algún tipo de alerta
SHOW SLAVE STATUS\G
y verificar el valor deRelay_Log_Space
(bytes totales consumidos por los registros de retransmisión).MAESTRO
En cuanto al Maestro, podrías establecerlo
expire_logs_days
en 1, pero hay una advertencia severa que tengo para ti ...Si se rompe la replicación, tiene 1 día para solucionarlo. De lo contrario, un registro binario en el maestro puede rotar y no puede ejecutar ningún comando CHANGE MASTER TO para realinear la replicación. Me iría
expire_logs_days
a las 3 en el Master.SUGERENCIA # 1
Si tiene que realizar un procesamiento masivo durante la noche, tal vez debería ejecutar los procesos masivos en el maestro con
SET SQL_LOG_BIN=0;
al inicio de la sesión. Esto, por supuesto, no se replicará al Esclavo. Puede realizar la misma carga masiva en paralelo a ambos esclavos.SUGERENCIA # 2
Otra cosa que podría hacer para administrar la acumulación de registros binarios maestros es esto.
Corre
SHOW SLAVE STATUS\G
con ambos esclavos. MiraRelay_Master_Log_File
. Eso representa el registro binario en el maestro cuyo último comando se ejecutó en el esclavo.En este ejemplo, Relay_Master_Log_File es mysql-bin.009590. Todos los registros binarios anteriores a este se pueden eliminar de Master. Podrías ejecutar esto en el Master:
Esto borrará los registros más antiguos y aún dejará la réplica intacta.
CONSIDERACIÓN
Los registros binarios son archivos que compilan en serie (como una cola FIFO) todas las transacciones SQL completadas como una declaración SQL o un cambio de fila. Un registro de retransmisión es un archivo que recopila entradas de registro binario de un servidor remoto (también conocido como Maestro).
En replicación MySQL
Si conmutas por error a un esclavo y quieres convertirlo en un maestro
log-bin=mysql-bin
a /etc/my.cnf en el esclavoDeberá configurar la replicación de otros esclavos para el maestro recién ascendido y asegurarse de que los datos del esclavo coincidan con el maestro recién ascendido
ACTUALIZACIÓN 2012-08-13 17:47 EDT
De acuerdo con la opción de documentación de MySQL
relay-log
, debe definirla. Aquí es por qué:fuente