Eigenschaften: In einer Dual-Master-Konfiguration dienen zwei MySQL-Server gegenseitig als Master-Slave-Knoten. Knoten A und Knoten B sind jeweils die Masterknoten.
Überspringen Sie die Schritte zur Installation von MySQL
# 设置server-id,两节点必须不一样 server-id = 100 # 开启bin_log,模式为ROW,允许最大日志为1G log_bin = mysql-bin binlog_format = ROW max_binlog_size = 1024M # mysql5.7的版本不需要配置log-slave-updates=1 # log-slave-updates = 1 # 实现数据库宕机恢复后,自动同步缺少的数据 relay_log = mysql-relay-bin # 设置自增ID初始值为2,每次自增量为2。即都是偶数2,4,6,8,... auto_increment_offset = 2 auto_increment_increment = 2 # 开启gtid gtid_mode = ON enforce_gtid_consistency = 1 # 忽略不需要同步的schema replicate-ignore-db = mysql replicate-ignore-db = information_schema replicate-ignore-db = performance_schema replicate-ignore-db = sys
(2) Zeigen Sie die Master-Informationen von Knoten A an
# 设置server-id,两节点必须不一样 server-id = 200 # 设置自增ID初始值为1,每次自增量为2。即都是奇数1,3,5,7,... auto_increment_offset = 1 auto_increment_increment = 2
(3) Melden Sie sich beim Knoten an B und legen Sie den Master von Knoten B als Knoten A fest
# 在节点A上创建账号repl_user,允许从任意IP访问,密码为slave@100, grant replication slave on *.* to 'repl_user'@'%' identified by 'slave@100'; flush privileges;
(4) Bestätigen Sie, ob der Slave von Knoten B erfolgreich ausgeführt wird. Wenn sowohl Slave_IO_Running als auch Slave_SQL_Running im zurückgegebenen Ergebnis YES sind, zeigt dies einen Erfolg an. Wenn NEIN oder Verbindung hergestellt wird, überprüfen Sie bitte die Protokolldatei mit der Endung .err im MySQL-Datenverzeichnis, um das Protokoll der Ebene [ERROR] zu finden. Normalerweise werden anfängliche Konfigurationsprobleme hauptsächlich durch Probleme bei der Konfiguration von my.ini oder bei der Erstellung von Synchronisierungskonten verursacht.
# 清空master信息。初次配置可以使用,若已运行了同步,切记不要使用! reset master; # 查看master信息 show master status; +------------------+----------+--------------+------------------+---------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+---------------------------------------------+ | mysql-bin.000001 | 154 | | | c2cf218e-2317-11ec-a36f-5cf9dd4fd6a8:1-5 | +------------------+----------+--------------+------------------+---------------------------------------------+
(5) Wenn die Slave-Konfiguration abnormal ist, können Sie sie mit der folgenden Anweisung zurücksetzen
# 停止节点B上的slave stop slave; # 将节点B的master设为节点A,以下的配置信息均表示节点A # MASTER_LOG_FILE和MASTER_LOG_POS,是在第(2)步中查看节点A的master信息 CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=3307, MASTER_USER='repl_user', MASTER_PASSWORD='slave@100', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; # 开启节点B上的slave start slave;
3 Vervollständigen Sie die Dual-Master-Konfiguration
An diesem Punkt ist der Master-Slave-Modus von Knoten A und Knoten B wurde erfolgreich konfiguriert, d. h. Knoten A ist der Master von Knoten B. Wiederholen Sie als Nächstes den Vorgang von Schritt drei, kehren Sie jedoch die Vorgänge der Knoten A und B um, dh erstellen Sie ein Synchronisierungskonto auf Knoten B, zeigen Sie die Master-Informationen an und legen Sie Knoten B als Master auf Knoten A fest. Überprüfen Sie nach Abschluss der Konfiguration auch den Slave-Status von Knoten A, um festzustellen, ob Slave_IO_Running und Slave_SQL_Running beide JA sind.
4. Testen Sie
Schema, Tabelle oder Daten in Knoten A hinzufügen oder löschen und prüfen, ob in Knoten B eine korrekte Synchronisierung erfolgt.
5. Steuern Sie die synchronisierte Bibliothek oder Tabelle. Erreicht durch Ändern von my.ini. (1) Steuerung auf der Masterseite. Binlog-do-db Binlog-Protokollierungsdatenbank (für mehrere Datenbanken, getrennt). Binlog-ignore -db Ignoriert die Datenbank im Binlog-Protokoll (für mehrere Datenbanken getrennt)
# 在节点B中查看slave状态 show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: repl_user Master_Port: 3307 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 2207 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 1143 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes ......
(2) Steuerung auf der Slave-Seite
Replikate-do- db Stellen Sie die Datenbank ein, die repliziert werden sollreset slave all;6. Ein Konto mit mehreren IPs Wenn ein MySQL-Server als Master-Knoten und N Server als Slave-Knoten dienen, ist es sehr umständlich, jedem Slave-Knoten ein Konto hinzuzufügen. Sie können im Masterknoten ein Konto erstellen und diesem Konto mehrere IP-Adressen zuordnen, um die Anzahl der hinzuzufügenden Konten zu reduzieren. Die spezifische Methode besteht darin, die Kontoerstellungserklärung mehrmals auszuführen, jedes Mal mit einer anderen IP.
# binlog中记录这两个表 binlog-do-db=db_1,db_2 # binlog中不记录这两个表 binlog-ignore-db=db_3,db_4
Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie MySQL Dual Master. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!