Antecedentes : tengo dos servidores MySQL 5.1 configurados en la replicación basada en filas Master-Master (RBR) siguiendo esta excelente guía . Quiero todas las bases de datos replicadas, y agregaré nuevas bases de datos regularmente.
Objetivo : me gustaría poder agregar nuevas bases de datos a la replicación simplemente agregando la base de datos a uno de los servidores; sin tener que detener a ambos esclavos, cambiar los archivos de configuración, reiniciar los servidores MySQL e iniciar los esclavos nuevamente.
Pregunta : Por lo que he leído, yo creo que puedo hacer esto simplemente omitiendo alguna binlog-do-db
, binlog-ignore-db
, replicate-do-db
, y replicate-ignore-db
ajustes en la configuración de cada servidor, pero no puedo estar seguro. Los documentos de MySQL sobre cómo se evalúan las opciones de replicación a nivel de base de datos y tabla me hacen pensar que podría no haber forma de lograr esto.
Las partes relevantes de mis /etc/mysql/my.cnf
archivos se copian a continuación. ¿Estoy en el camino correcto? ¿Es posible lo que quiero?
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
Master 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
fuente
Respuestas:
Así lo hice para ambos maestros
fuente
log-slave-updates
configuración porque no vi la necesidad. Todo funciona a la perfección. Puedo agregar y quitar bases de datos y los cambios se replican. ¡Gracias! Recompensa otorgada.Con respecto a la creación de bases de datos, todavía hay informes de errores sobre el uso de CREATE DATABASE con replicación basada en filas.
Este informe está cerrado, pero el error apareció nuevamente en MySQL 5.1.47.
Este informe se basa en MySQL Cluster (motor de almacenamiento NDB).
Este informe se basa en replicar-wild-ignore-table que aún se replica.
La replicación basada en filas hace que los registros binarios crezcan a una velocidad extraordinaria que puede aumentar el tráfico de la red simplemente enviando datos de registros binarios a los registros de retransmisión del esclavo.
@ Mike dice que consiguió que la creación de la base de datos funcionara y se replicara perfectamente No lo dudo en absoluto. Lo que soy es un poco cauteloso de que MySQL (eh Oracle) no haya logrado todos los inconvenientes de la replicación basada en filas una vez que se instancia la base de datos.
Es posible que desee cambiar a row_format MIXED si aún desea entradas basadas en filas en los registros binarios. Internamente, el formato de registro binario tiende a flotar entre la instrucción y el fijo de todos modos: (Ver http://bugs.mysql.com/bug.php?id=40146 ). Se cierran más informes de errores usando mixto y rehuyendo de los basados en filas ( http://bugs.mysql.com/bug.php?id=39701 ) pero los problemas persisten de forma intermitente.
NOTA FINAL
Para su propia cordura, vuelva a la replicación basada en instrucciones y haga que CREATE DATABASE (que es una instrucción SQL) estable y consistente para el SQL posterior en la base de datos creada. De hecho, el informe de error más reciente muestra que es mejor usar la replicación basada en declaraciones, independientemente de lo que diga la documentación sobre las opciones de nivel de base de datos y nivel de tabla.
fuente
Hmm ... También tendrás que encontrar una manera de manejar / diferenciar las teclas y campos de incremento automático. Esto se ve interesante .. http://mysql-mmm.org/
fuente
auto-increment-increment
yauto-increment-offset
en mis archivos de configuración. Vea esta página: dev.mysql.com/doc/refman/5.1/en/…cmiiw pensé que deberías poder crear una base de datos en master1 y master2 sin cambiar la configuración o detener el esclavo, pero asegúrate de que la réplica master - master se esté ejecutando. porque no define qué base de datos necesita replicarse, significa que todas las bases de datos se replicarán si no las define en my.cnf.
fuente