2012-02-11 44 views
7

Usando configuraciones simples de replicación con un MASTER y un SLAVE, ¿cómo se puede asegurar que el SLAVE y el MASTER estén completamente sincronizados?¿Cómo asegurar la replicación de MySQL? ¿El esclavo está completamente sincronizado con el MASTER de replicación?

Ahora sí, ambos comenzaron exactamente de la misma imagen y la replicación está funcionando e informan que todo está bien PERO: * Ocurrió que hubo errores que detenían la replicación y luego la replicación tuvo que detenerse y reanudarse más tarde . * Quizás un cambio ocurrió accidentalmente en el ESCLAVO y luego ya no es lo mismo que el MAESTRO. * Otros escenarios que puedan romper la sincronización.

Si bien es posible hacer un gran mysqldump de ambas bases de datos y comparar los archivos, me interesaría un método que se pueda implementar más fácilmente y también se puede verificar automáticamente para garantizar que todo esté sincronizado.

Gracias

+0

http://dba.stackexchange.com/questions/17501/monitoring-replication-on-mysql –

Respuesta

8

¿Usted ha intentado Percona Toolkit (antes conocido como Maatkit)? Puede usar una de sus herramientas que es pt-table-checksum para su caso. Puede consultar otras herramientas también en su sitio web.

pt-table-suma de comprobación realiza una comprobación de coherencia de replicación en línea por ejecutoras consultas de suma de comprobación en el maestro, que produce diferentes resultados en réplicas que son incompatibles con el maestro. El DSN opcional especifica el host maestro. El estado de salida de la herramienta es distinto de cero si se encuentran diferencias, o si se producen advertencias o errores .

El siguiente comando conectar con el maestro de replicación en localhost, suma de comprobación cada mesa, e informar de los resultados en cada réplica detectado:

+0

Todavía no lo he intentado pero parece prometedor. Gracias :) – Collector

+0

También tienen una herramienta llamada 'pt-table-sync' que le permite sincronizar las tablas si encuentra algo mal. Utiliza 'pt-table-checksum' para encontrar posibles problemas y emite declaraciones al maestro para obligar al esclavo a replicar, ¡así que úsalo bajo tus propios riesgos! – ESG

3

Si tiene versiones de servidor MySQL 5.6.14 o superior, puede usar MySQL Replication Synchronization Checker. Está incluido en el paquete del servidor MySql. Está diseñado para funcionar exclusivamente para servidores que admiten identificadores de transacciones globales (GTID) y tienen gtid_mode = ON.

Esta utilidad le permite verificar la sincronización de los servidores de replicación. Comprueba la coherencia de los datos entre un maestro y esclavos o entre dos esclavos. La utilidad informa los objetos faltantes, así como los datos faltantes. La utilidad puede operar en una topología de replicación activa, aplicando un proceso de sincronización para verificar los datos. Los servidores donde la replicación no está activa aún se pueden verificar, pero el proceso de sincronización se omitirá. En ese caso, le corresponde al usuario sincronizar manualmente los servidores.

See MySQL Documentation for more information

+0

Editado la respuesta para complacer cpbumz. Esta herramienta es realmente útil, – Franco

+0

Esta herramienta funciona como un encanto. He creado un archivo de un lote de línea para ejecutar esta herramienta cada noche y luego, usando otro servicio, obtengo el archivo de resultados por correo electrónico. Por cierto, la replicación de GTID también es un encanto. –

3

usted tiene razón para sospechar de una configuración de replicación maestro/esclavo aparentemente sano! Estábamos corriendo bien cuando de repente recibimos alertas de check_mk con respecto a una base de datos que existía en nuestro maestro que no existía en nuestro esclavo ... ¡pero los resultados de estado maestro y esclavo eran buenos! ¿Qué tan desconcertante es eso? La forma de probar la integridad del proceso es usar sumas de verificación para verificar los datos.

He visto mucha charla en Internet recomendando pt-table-checksum.Sin embargo, su limitations resultó ser demasiado oneroso para que nos sintiéramos cómodos. Lo más importante es que requiere e incluso establece la replicación basada en enunciados (ver el enlace pt-table-checksum). Como dice en el mysql 5.6 online documentation, (para la replicación basada en filas ...) "todos los cambios se pueden replicar. Esta es la forma más segura de replicación". Existen otras desventajas en la replicación basada en enunciados que ponen nerviosos a nuestros desarrolladores porque algunas funciones no se pueden replicar correctamente; ver el documento para una lista.

Ya hemos tenido problemas con un maestro y un esclavo que utilizan la replicación basada en enunciados, por lo que estamos tratando de evitarlo específicamente.

Vamos a probar mysqlrplsync que específicamente lo menciona "works independently of the binary log format (row, statement, or mixed)". También menciona, sin embargo, que gtid-mode debe estar activado y requiere MySQL 5.6.14 y superior ... lo que significa, creo, que el MySQL entregado con RHEL7/CentOS 7 al menos está fuera. Necesitará obtener la Edición de comunidad de MySQL, que se deja como ejercicio para el lector but you can go here for the packages o here for the repos, including RHEL derivatives and Debian.

Cuestiones relacionadas