Mysql Master Slave

Master: app1-db
Slave: app2-db
Anmerkung:

  • Master und Slave können theoretisch auch andersrum sein
  • im folgenden ist app1-db Master und app2-db Slave

Wenn der Slave mal aus dem Tritt kommt:

  • Mysql auf dem Slave stoppen und anschliessend wieder starten:


/app/tools/mysql_xxx/bin/mysqladmin -u <user> -p -h <slavehost> -P <port> shutdown
/app/tools/mysql_xxx/support-files/mysql.server start

  • Logfile auf Fehler checken: data/app2-db.err bzw. im SYSLOG
  • in mysql Status des Slave prüfen mit “show slave status”: “Seconds_Behind_Master” muss 0 oder maximal 1 sein. “NULL” heisst der Slave läuft nicht.
  • Wenn der Slave nicht läuft, die Werte Last_Errno und Last_Error prüfen. Wenn dort alles ok ist kann der Slave einfach gestartet werden. Andernfalls muß das Problem aus “Last_Error”behoben werden.

Slave neu syncen (Downtime erforderlich!)

  • Wenn der Slave anschliessend nicht richtig laufen sollte muß er neu gesynct werden:
    • Slave Datenbank runterfahren:


mysqladmin -u <user> -p -h app2-db -S <socket> shutdown

  • alle Tabellen auf app1-db sperren: app1-db: mysql:


flush tables with read lock;

  • rsyncen auf app1-db (wichtig: mit option -c):


rsync -acv –exclude=”mysql-bin.*” –exclude=”*.info” –exclude=”*app1-db*”  /app/db/produktion_app/ app2-db:/app/db/produktion_app/

  • Master status während des rsync abfragen und merken: app1-db: mysql:


show master status;

  • Wenn der rsync fertig ist: app1-db: mysql:


unlock tables;

  • Anschliessend den Slave ohne Slave Option starten:


…/support-files/mysql.server start –skip-slave-start

  • Slave auf die richtige Position konfigurieren. Dazu ist sind die Infos aus “show master status” von der app1-db wichtig!


app2-db: mysql:
change master to master_host=”app1-db”, master_user=”eslave”, master_port=3307, master_password=”xxx”, master_log_file=”mysql-bin.xxx”, master_log_pos=xxxxx;

  • app2-db: mysql:


start slave;

  • Errorlog checken ob es gut gegangen ist: data/app2-db.err bzw. syslog
  • Nun sollte auch der BB bald wieder grün werden.


Doku auf mysql.com:http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html__