Metainformationen zur Seite
Master-Master-Replikation
Dieser Artikel zeigt, wie man mit 2 (oder mehr) MySQL-Servern eine echte Master-Master-Replikation aufsetzt, um die Server HA-tauglich zu machen.
Es gibt 2 Server: mysql1 192.168.1.10 mysql2 192.168.1.11
Als Heartbeat-IP kann man irgendeine IP verwenden, da MySQL automatisch auf allen konfigurierten IP-Adressen lauscht.
- /etc/my.cnf auf mysql1 anpassen
[mysqld] ... server-id=1 log-bin ...
- auf mysql1 den Useraccount für die Replikation anlegen
mysql> grant replication slave on *.* to 'replication'@192.168.1.11 identified by 'slave';
- MySQL-Server auf mysql1 neu starten
- Nun auf mysql2 die Datei /etc/my.cnf anpassen
[mysqld] ... server-id=2 master-host = 192.168.128.1 master-user = replication master-password = slave master-port = 3306 ...
- auf mysql2 den MysSQL-Server neu starten und in der MySQL-Konsole den Slave-Status ausgeben
mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.10 Master_User: replica Master_Port: 3306 ... Slave_IO_Running: Yes Slave_SQL_Running: Yes ... 1 row in set (0.00 sec)
- Auf dem mysql1 kontrolliert man den Master-Status
mysql> show master status; +------------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------------+----------+--------------+------------------+ |MysqlMYSQL01-bin.000016 | 132 | | foobar | +------------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
- nun haben wir bereits ein funktionierenden Master-Slave-Setup, in den weiteren Schritten konfigurieren wir uns ein echtes Master-Master-Setup
- auf mysql2 /etc/my.cnf anpassen
[mysqld] ... server-id=2 log-bin binlog-ignore-db=mysql master-host = 192.168.1.10 master-user = replication master-password = slave master-port = 3306
- den Replikationsaccount auf mysql2 anlegen
mysql> grant replication slave on *.* to 'replication'@192.168.1.10 identified by 'slave';
- MySQL-Server auf mysql2 neu starten
- /etc/my.cnf auf mysql1 anpassen
[mysqld] ... master-host = 192.168.128.2 master-user = replication master-password = slave master-port = 3306 ...
- jetzt auch auf mysql1 den MySQL-Server neu starten
- mit den altbekannten Kommandos „show slave status“ und „show master status“ den aktuellen Stand der Replikation kontrollieren. Auf beiden Systemen sollten folgende Zeilen erscheinen:
Slave_IO_Running: Yes Slave_SQL_Running: Yes
- im Falle eines Fehlers kann man in /var/log/mysqld.log nachlesen, was den Server grade stört
Diskussion