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