16 votos

MySQL maestro-Maestro de Replicación de las bases de datos. Cómo?

Antecedentes: tengo dos MySQL 5.1 en servidores de configuración de Master-Master basada en la fila de replicación (RBR) después de esta excelente guía. Quiero que todas las bases de datos replicadas, y será la adición de nuevas bases de datos con regularidad.

Objetivo: me gustaría ser capaz de añadir nuevas bases de datos para la replicación con sólo añadir la DB a uno de los servidores; sin tener que parar dos esclavos, cambiar los archivos de configuración, reinicie el servidor MySQL, y el inicio de los esclavos de nuevo.

Pregunta: por lo que he leído, yo creo que puedo hacer esto simplemente omitiendo cualquier binlog-do-db, binlog-ignore-db, replicate-do-dby replicate-ignore-db valores en cada configuración del servidor, pero no puedo estar seguro. MySQL es la documentación sobre como Base de datos y Tablade nivel de opciones de replicación son evaluados me hacen pensar que no puede haber ninguna manera de lograr esto.

Las partes pertinentes de la mi /etc/mysql/my.cnf archivos se copian a continuación. Estoy en el camino correcto? Es lo que me quieres aún posible?

Maestro 1:

[mysqld]
binlog-format = row
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1

master-host = <master2_ip>
master-user = slave_user
master-password = <password>
master-connect-retry = 60

log-bin = /var/log/mysql/mysql-bin.log
relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index
expire_logs_days = 14
max_binlog_size = 2048M

Maestro 2:

[mysqld]
binlog-format = row
server-id = 2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2

master-host = <master1_ip>
master-user = slave_user
master-password = <password>
master-connect-retry = 60

log-bin = /var/log/mysql/mysql-bin.log
relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index
expire_logs_days = 14
max_binlog_size = 2048M

5voto

Ed Ball Puntos 1341

Esta es la forma en que lo hice para ambos maestros

log-bin = mysqld-bin
binlog-ignore-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
log-slave-updates
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
relay-log=mysqld-relay-bin

4voto

RolandoMySQLDBA Puntos 10660

Con respecto de la realización de bases de datos, todavía hay informes de errores en el uso de CREAR una BASE de datos con replicación basada en la fila.

Este informe se ha cerrado, pero el error apareció de nuevo en MySQL 5.1.47
Este informe está basado en MySQL Cluster (motor NDB)
Este informe se basa en replicar-salvaje-ignore-tabla de replicar.


Replicación basada en la fila de las causas de registros binarios a crecer a un ritmo extraordinario, que pueden elevar el tráfico de la red sólo envío del log binario de datos a través de la retransmisión de los registros de la trata de esclavos.

@Mike dice que tengo creación de base de datos para el trabajo y replicar bien. No dudo que en todos los. Lo que yo estoy es un poco recelosos de MySQL (eh Oracle) no haber conseguido todas las torceduras de replicación basada en la fila una vez que la base de datos se crea una instancia.

Es posible que desee cambiar a row_format MEZCLADA, si usted todavía desea basada en la fila de las entradas en los registros binarios. Internamente, el binario de formato de registro tiende a flotar entre la declaración y fija de todos modos: ( Ver http://bugs.mysql.com/bug.php?id=40146 ). Más errores de los informes se cierra con una mezcla de y rehuir de la vta - ( http://bugs.mysql.com/bug.php?id=39701 ), pero todavía persisten los problemas de forma intermitente.

NOTA FINAL

Para su propia cordura, por favor, volver a la instrucción basada en la replicación y por lo tanto hacer que CREAR la BASE de datos (que es una Instrucción SQL) estable y consistente para su posterior SQL contra la base de datos creada. De hecho, el más reciente informe de error muestra lo mejor es utilizar la replicación basada en declaración, independientemente de la documentación que se dice sobre el nivel de base de datos y del nivel de la tabla de opciones.

0voto

Anand Jeyahar Puntos 89

Hmm...Usted también tendrá que encontrar una manera de manejar/diferenciar incremento automático de las teclas y los campos. Esto se ve interesante..http://mysql-mmm.org/

-1voto

chocripple Puntos 1403

cmiiw yo pensé que usted debe ser capaz de crear una base de datos en master1 y master2 sin cambiar la conf o detiene el esclavo, pero asegúrese de que el maestro - maestro de replicación de ejecución. porque no definir la base de datos que necesita para replicarse, es decir todos los de la base de datos será replicar si no se define en mi.cnf.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: