Heim  >  Artikel  >  Datenbank  >  MySQL – Eine detaillierte Einführung zum Hinzufügen einer neuen Datenbank zur MySQL-Master-Slave-Replikationsliste

MySQL – Eine detaillierte Einführung zum Hinzufügen einer neuen Datenbank zur MySQL-Master-Slave-Replikationsliste

黄舟
黄舟Original
2017-03-09 11:33:371985Durchsuche

MySQL – Eine detaillierte Einführung zum Hinzufügen einer neuen Datenbank zur MySQL-Master-Slave-Replikationsliste

MySQL-Master-Slave-Replikation Normalerweise richten wir die Datenbank ein Die Parameterkonfigurationsoption binlog-do-db, die synchronisiert werden muss, kann die Datenbank angeben, die auf dem Master synchronisiert werden muss, und Replicate-do-db gibt die Datenbank an, die vom Datenpunkt aus synchronisiert werden muss Sicht. (Im Allgemeinen ist nur binlog-do-db auf dem Master festgelegt, und es ist nicht erforderlich, beide gleichzeitig festzulegen. Für alle Fälle können Sie auch Replicate-ignore-db auf dem Slave hinzufügen.)

Heute war das Problem, dass dem Master eine neue Datenbank hinzugefügt wurde. Wie füge ich die neu hinzugefügte Datenbank zur Master-Slave-Replikationskette von MySQL hinzu? (Das heißt, die Master-Slave-Replikation zurücksetzen, ohne die gesamte Bibliothek erneut zu replizieren).

Lassen Sie uns zunächst die grundlegenden Schritte der Master-Slave-Replikation aufzählen (MySQL-Master-Slave muss zuerst auf den jeweiligen Servern konfiguriert werden).

1. Kopieren Sie die Datenbank


mysqldump --master-data --single-transaction -R --databases [db_name] | gzip -9 - | pv > all-db-with-master-data.sql.gz

Hinweis: innodb verwendet –single-transaction, myisam muss –lock-all- verwenden Tische.

2. Daten kopieren und importieren

pv < all-db-with-master-data.sql.gz | zcat | mysql

3.

slave start

Hinweis: Die Anweisung zum Wechseln zur Hauptdatei ist bereits in der exportierten SQL-Anweisung enthalten. Bitte überprüfen Sie sie sorgfältig. Ändern Sie den Master in „master_log_file=’(Binlog-Name in Relay_master_log_file)’, master_log_pos=(exec_master_log_pos-Nummer).
Wie fügt man also eine neue Datenbank zur bestehenden Master-Slave-Replikationsstruktur hinzu? Beispielsweise möchten wir eine Datenbank auf dem Masterserver hinzufügen, beispielsweise eine Datenbank mit dem Namen newdb. Die spezifischen Vorgänge sind wie folgt:

1. Stoppen Sie vom Dienst aus die Slave-Datenbank.

stop slave;

2. Exportieren Sie auf dem Hauptserver die neue Datenbank.

mysqldump --master-data --single-transaction -R --databases newdb > newdb.sql

3. Ändern Sie die my.cnf-Datei auf dem Hauptserver

Ändern Sie auf dem Hauptserver die my.cnf-Datei und fügen Sie die neue Bibliothek zur binlog-do-db hinzu Parameter und starten Sie MySQL neu.

4. Suchen Sie die aktuelle Protokolldatei und den aktuellen Speicherort

Suchen Sie die aktuelle Protokolldatei und den aktuellen Speicherort in der exportierten Datei newdb.sql (ändern Sie den Master in …)
und lassen Sie sie dann als Slave Der Server führt die Ausführung an diesem Speicherort aus.

start slave until MASTER_LOG_FILE="mysql-bin.000001", MASTER_LOG_POS=1222220;

Unter diesen befinden sich MASTER_LOG_FILE und MASTER_LOG_POS oben in der exportierten Datenbank newdb.sql.

5. Importieren Sie die neue Bibliothek auf den Slave-Server.

mysql < newdb.sql

6. Starten Sie den Slave-Server

start slave

Wichtiger ist die Protokollposition (Position A) beim Exportieren der neuen Bibliothek auf den Master-Server Dieser Punkt dient als Trennlinie und wird in die neue Bibliothek importiert.
Diese Methode ist auch auf Situationen anwendbar, in denen eine bestimmte Datenbank oder eine bestimmte Datentabelle nicht synchron ist. Wenn beispielsweise eine Tabelle in der Master-Slave-Datenbank aus bestimmten Gründen inkonsistente Daten aufweist, ist die obige Methode nur erforderlich um den Schritt des Neustarts der Datenbank und den Rest zu entfernen. Die Vorgänge sind im Grunde die gleichen


Das obige ist der detaillierte Inhalt vonMySQL – Eine detaillierte Einführung zum Hinzufügen einer neuen Datenbank zur MySQL-Master-Slave-Replikationsliste. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn