5

Digamos que tengo una base de datos de Cars. Tengo Makes and Models (FK to Makes). Planeo que los usuarios rastreen sus autos. cada coche tiene un FK a modelo. Ahora, tengo muchos usuarios y quiero dividir mi base de datos para distribuir la carga. Las tablas de Makes and Models no cambian mucho, pero deben compartirse entre fragmentos. Mi idea es usar la replicación de MySQL desde un DB maestro de marcas y modelos a cada base de datos esclava. Mi pregunta es: ¿Puedo escribir con seguridad en las bases de datos de esclavos suponiendo que no escribo en esas tablas en el maestro?MySQL: Escribir en el nodo esclavo

Y a propósito del tema, ¿hay alguna forma de garantizar que una base de datos esclava tenga los datos más recientes? Por ejemplo, alguien acaba de agregar la marca 'Taurus' y luego quiere agregar su auto. ¿Puedo asegurarme de que la base de datos esclava que están utilizando tiene los últimos datos maestros?

Respuesta

5

Sí, en general, puede escribir de forma segura en una tabla de los esclavos que no está escrita en el maestro. Si hace cosas como insertar filas auto_increment en los esclavos y en el maestro, de forma independiente, tendrá problemas. Debe configurar esa tabla para excluirse de la replicación por completo, realmente.

Para comprobar si tiene los datos más recientes, SHOW SLAVE STATUS incluye un campo Seconds_Behind_Master que le indica si el esclavo está actualizado. Obviamente quieres que sea cero. Para estar seguro de que los datos insertados y replicados están presentes, por supuesto, debe esperar un segundo y y luego ver que Seconds_Behind_Master es cero.

+0

hacer ¿sabes si hay un comando de bloqueo para sincronizar con el maestro? –

+0

No hay. (Ignorando 'LOAD DATA FROM MASTER', que no hace lo que usted quiere, y está roto de todos modos.) – chaos

+0

¿Hay algún mecanismo de escritura directa: un esclavo simplemente reenvía la solicitud de escritura al maestro? – Velkan

2

Esta era una buena solución espigué mientras que la búsqueda

Incluí el punto principal como algunos asientos aquí:

http://erlycoder.com/43/mysql-master-slave-and-master-master-replication-step-by-step-configuration-instructions-

MySQL de replicación maestro-maestro y autoincrement índices

Si está usando la replicación maestro-esclavo, lo más probable es que diseñe su aplicación para escribir en el maestro y leer desde el esclavo o varios esclavos. Pero cuando utiliza la replicación maestro-maestra, va a leer y escribir en cualquiera de los servidores maestros. Entonces, en este caso, aumentará el problema con los índices autoincrementales. Cuando ambos servidores tendrán que agregar un registro (uno diferente cada servidor simultáneamente) a la misma tabla. Cada uno les asignará el mismo índice e intentará replicar al bálsamo, esto creará una colisión. El truco simple permitirá evitar tales colisiones en el servidor MySQL.

En el Maestro 1/Esclavo 2 añadir a /etc/my.cnf:

auto_increment_increment= 2 
auto_increment_offset = 1 

En la Master 2/esclavo 1 añadir a /etc/my.cnf:

auto_increment_increment= 2 
auto_increment_offset = 2 
Cuestiones relacionadas