Maison >base de données >tutoriel mysql >MySQL - Une introduction détaillée sur la façon d'ajouter une nouvelle base de données à la liste de réplication maître-esclave MySQL
MySQL - Une introduction détaillée sur la façon d'ajouter une nouvelle base de données à la liste de réplication maître-esclave MySQL
Réplication maître-esclave MySQL Normalement, nous configurerons la base de données qui doit être synchronisé, à l'aide de l'option de configuration du paramètre, binlog-do-db, peut spécifier la base de données qui doit être synchronisée sur le maître, et répliquer-do-db spécifie la base de données qui doit être synchronisée à partir du point de données de voir. (En général, seul binlog-do-db sur le maître est défini, et il n'est pas nécessaire de définir les deux en même temps. Juste au cas où, vous pouvez également ajouter répliquer-ignore-db sur l'esclave).
Aujourd'hui, le problème que j'ai rencontré était qu'une nouvelle base de données a été ajoutée au maître. Comment ajouter la base de données nouvellement ajoutée à la chaîne de réplication maître-esclave de MySQL ? (C'est-à-dire, réinitialisez la réplication maître-esclave sans re-répliquer l'intégralité de la bibliothèque).
Tout d’abord, énumérons les étapes de base de la réplication maître-esclave (le maître-esclave MySQL doit d’abord être configuré sur leurs serveurs respectifs).
mysqldump --master-data --single-transaction -R --databases [db_name] | gzip -9 - | pv > all-db-with-master-data.sql.gz
Remarque : innodb utilise –single-transaction, myisam doit utiliser –lock-all-. tableaux.
pv < all-db-with-master-data.sql.gz | zcat | mysql
slave start
Remarque : L'instruction permettant de passer au main est déjà dans l'instruction SQL exportée, veuillez la vérifier attentivement. remplacez master par master_log_file='(nom binlog dans relay_master_log_file)', master_log_pos=(numéro exec_master_log_pos).
Alors, comment ajouter une nouvelle base de données à la structure de réplication maître-esclave existante ? Par exemple, nous souhaitons ajouter une base de données sur le serveur maître, par exemple une base de données nommée newdb. Les opérations spécifiques sont les suivantes :
stop slave;
mysqldump --master-data --single-transaction -R --databases newdb > newdb.sql
Sur le serveur principal, modifiez le fichier my.cnf, ajoutez la nouvelle bibliothèque au binlog-do-db paramètre et redémarrez MySQL.
Trouvez le fichier journal actuel et son emplacement dans le newdb.sql exporté (remplacez master par…)
puis laissez slave Le serveur s'exécute à cet emplacement.
start slave until MASTER_LOG_FILE="mysql-bin.000001", MASTER_LOG_POS=1222220;
Parmi eux, MASTER_LOG_FILE et MASTER_LOG_POS se retrouvent en haut de la base de données exportée newdb.sql.
mysql < newdb.sql
start slave
Le plus important est la position du log (position A) lors de l'export de la nouvelle bibliothèque sur le serveur maître. important. Ce point sert de ligne de démarcation et est importé dans la nouvelle bibliothèque.
Cette méthode est également applicable aux situations où une certaine base de données ou une certaine table de données est désynchronisée. Par exemple, si une table de la base de données maître-esclave contient des données incohérentes pour certaines raisons, alors la méthode ci-dessus n'est nécessaire que. pour supprimer l'étape de redémarrage de la base de données, et le reste Les opérations sont fondamentalement les mêmes
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!