Arrière-plan : J'ai deux serveurs MySQL 5.1 Configuration des serveurs MySQL dans la version à base de lignes principale (RBR) suivant ce excellent guide . Je veux que toutes les bases de données répliquées et ajouteront régulièrement de nouvelles bases de données.
objectif : J'aimerais pouvoir ajouter de nouvelles bases de données à la réplication en ajoutant simplement la DB à l'un des serveurs; Sans Dès avoir à arrêter les esclaves, modifiez les fichiers de configuration, redémarrez les serveurs MySQL et recommencez les esclaves.
Question : D'après ce que j'ai lu, je pense Je peux le faire en omettant simplement binlog-do-db
, binlog-ignore-db
, replicate-do-db
, et replicate-ignore-db
Paramètres dans la configuration de chaque serveur, mais je ne peux pas être sûr. Les documents de MySQL sur la manière --- Base de données - et Table - Les options de réplication de niveau sont évaluées faites-moi de penser qu'il pourrait ne pas y avoir de moyen de l'accomplir du tout.
Portions pertinentes de mon /etc/mysql/my.cnf
Les fichiers sont copiés ci-dessous. Suis-je sur la bonne voie? Est ce que je veux même possible?
Master 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
C'est comme ça que je l'ai fait pour les deux maîtres
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
En ce qui concerne la fabrication de bases de données, il existe toujours des rapports de bogues sur l'utilisation de la base de données Créer une réplication à base de lignes.
Ce rapport est fermé, mais le bogue est apparu à nouveau dans MySQL 5.1.47
[.____] Ce rapport est basé sur le cluster MySQL (moteur de stockage NDB)
[.____] Ce rapport est basé sur une table de reproduction-sauvage-ignore toujours reproduit.
La réplication à base de lignes entraîne une croissance des bûches binaires à un tarif extraordinaire qui peut accroître le trafic réseau de SPIKE qui expédient des données de journal binaires sur les journaux relais de l'esclave.
@Mike dit qu'il a eu la création de la base de données pour travailler et se répliquer bien. Je ne doute pas du tout. Ce que je suis, c'est un peu haut de MySQL (EH Oracle) qui n'a pas eu tous les kinks hors de la réplication à base de lignes une fois la base de données instanciée.
Vous voudrez peut-être passer à Row_Format mélangé si vous souhaitez toujours des entrées en ligne dans les journaux binaires. En interne, le format de journal binaire a tendance à flotter entre relevé et fixé de toute façon: (voir http://bugs.mysql.com/bug.php?id=40146 ). Plus de rapports de bugs sont fermés à l'aide de mixtes et de blinder à base de lignes (- http://bugs.mysql.com/bug.php?id=39701 ) mais les problèmes toujours persistent par intermittence.
Note finale
Hmm ... vous devrez également comprendre un moyen de gérer/différencier les clés et les champs incrémentés automatiquement. Cela semble intéressant .. http://mysql-mmm.org/