Estoy configurando una base de datos maestra MySQL que se replica en algunas bases de datos esclavas.
Mi pregunta es cuáles son las mejores prácticas para monitorear y/o probar que las bases de datos esclavas estén actualizadas y que alertarían a un administrador cuando haya un error que provoque que se detenga la replicación.
Busqué herramientas de monitoreo, pero no pude encontrar nada adecuado.
Además, ¿cuáles son las "mejores prácticas" para probar la sincronización entre los esclavos? ¿Existe algo parecido a las pruebas unitarias para la replicación de bases de datos?
Pido disculpas si mi ignorancia sobre el tema ofende a alguien.
Respuesta1
El gran problema con la replicación es comprobar
- que todos los nodos están arriba,
- todos los nodos se están comunicando (no hay cerebro dividido)
- y procesar registros de replicación
- y el retraso de replicación
1, 3 y 4 se pueden capturar usando MOSTRAR ESTADO MAESTRO / MOSTRAR ESTADO ESCLAVO en los nodos relevantes, aunque el retraso de replicación solo tiene una precisión de 1 segundo y solo en cada salto. El kit de herramientas de Percona tiene scripts para obtener retrasos de replicación más precisos.
Uso de replicación multimaestro (p. ej.tungsteno,Percona) ahorra mucho trabajo pero requiere esfuerzo/software adicional para configurarlo.
Si la red entre ndoes falla, entonces todos los procesos pueden estar ejecutándose correctamente, pero no podrán transferir datos; necesita monitoreo en cada nodo para verificar que pueda comunicarse con el nodo ascendente.
una base de datos maestra MySQL que se replica en algunas bases de datos esclavas
La mejor práctica sería designar también a uno de los esclavos como maestro: replicación bidireccional. De esa manera, puede cambiar fácilmente en caso de una interrupción o para tareas de mantenimiento como reconstrucción de índices, copias de seguridad y cambios de esquema.
Dependiendo del número de nodos esclavos, es posible que también desee designar unnodo de desplieguepara propagar los cambios.
En términos de gestión de escaladas, programación de scripts para recopilar datos, etc., hay muchas herramientas disponibles que hacen esto: yo uso nagios, al igual que muchas otras personas.
Respuesta2
Mi pregunta es cuáles son las mejores prácticas para monitorear y/o probar que las bases de datos esclavas estén actualizadas,
Para una prueba sencilla, inserte/actualice datos en el maestro y asegúrese de que se repliquen en los esclavos.
Pero para la verificación de coherencia,pt-tabla-suma de comprobaciónes lo que estás buscando.
Por ejemplo:
pt-table-checksum localhost --empty-replicate-table --databases db --nocheck-replication-filters --replicate percona.checksums > /var/log/pt-table-checksum.log 2>&1
y eso alertaría a un administrador cuando haya un error que provoque que se detenga la replicación.
Si estás usando Nagios,check_mysql_healthEl complemento puede ayudar a monitorear el estado del esclavo (en ejecución o no). Pero para controlar la consistencia, eche un vistazo apmp-check-pt-table-suma de comprobaciónenchufar.
No te pierdas elsincronización de tabla ptsi tiene alguna inconsistente:
pt-table-sync -v --print --sync-to-master h=localhost,D=db,t=table
pt-table-sync -v --execute --sync-to-master h=localhost,D=db,t=table
Tenga en cuenta que probablemente debería utilizar la --print
opción primero.
Respuesta3
en esclavo hacer
SHOW SLAVE STATUS\G;
Si estás recibiendo estos:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
eso significa que ya casi has llegado, para probarlo intenta realizar cualquier transacción de escritura en MASTER y asegúrate de que se repliquen automáticamente en el esclavo.
Respuesta4
Busqué herramientas de monitoreo, pero no pude encontrar nada adecuado.
Puedes usar elPlantilla[s] de monitoreo MySQL de Percona para cactus. Consulte la plantilla de replicación de MySQL (que utiliza la pt-heartbeat
herramienta).
Salud