Die täglichen MySQL Backups sollte nicht mehr auf den Produktivservern geschehen, also wurde ein Dump-Server angeschafft, der die verschiedenen MySQL-Server (Master-Slave-Verbund + diverse “Hilfsserver”), einfach repliziert. Hier können dann täglich Dumps gezogen werden.

Das Problem, das auftrat und, meiner Meinung nach, nur schlecht Dokumentiert ist, ist das Betreiben von mehreren, unabhängigen MySQL Instanzen auf einerm Server.

Das normale Datenverzeichnis “/var/lib/mysql” muss “aufgeteilt” werden, für jede Instanz, ein Unterverzeichnis: /var/lib/mysql/db1 – db5

Dasselbe geschiet mit den Konfigurationsverzeichnissen: /etc/mysql/db1 – db5

Das init.d Script /etc/init.d/mysql muss für jede Instanz einmal vorhanden sein (/etc/init.d/mysql_db1 – mysql_db5) und danach angepasst werden. Ich führe hier NUR die Änderungen auf, der Rest bleibt, wie er vorher schon war:

export HOME=/etc/mysql_db1

if [ ! -r /etc/mysql_db1/my.cnf ]; then
log_warning_msg “$0: WARNING: /etc/mysql_db1/my.cnf (…)”
echo “WARNING: /etc/mysql_db1/my.cnf cannot be read. (…)” | $ERR_LOGGER
fi

/usr/bin/mysqld_safe –log-bin=mysql-bin-db1.log –datadir=/var/lib/mysql/db1 –socket=/var/run/mysqld/mysqld_db1.sock –port=3307 > /dev/null 2>&1 &

output=$(/etc/mysql_db1/debian-start)

if [ -f /etc/mysql_db1/debian-log-rotate.conf ]; then
echo “/etc/mysql_db1/debian-log-rotate.conf is (..)” | $ERR_LOGGER -p daemon.info
fi

Nachteil hierbei ist, dass mysql nicht mehr über /etc/init.d/mysql_db1 stop zu stoppen ist. Der Prozess muss gekillt werden (kill [PID]), wodurch er runterfährt. Der Port muss für jede Instanz ein anderer sein.

In der my.cnf der jeweiligen Instanzen müssen noch alle Pfade, sowie Ports angepasst werden.

Will man sich mit der Konsole verbinden, muss ein zusätzlicher Parameter hinzugefügt werden.

mysql -uUSER -pPASS –socket=/var/run/mysql_db1.sock

2 Antworten zu “Mehrere MySQL Instanzen auf einem Server”

  1. Anonymous says:

    [...] [...]

  2. Fabian says:

    Oder aber man benutzt mysqld_multi:
    http://dev.mysql.com/doc/refman/5.1/de/mysqld-multi.html

    Das erspart einem das Duplizieren der Init- Skripte und die Configs für alle Instanzen liegen in der normalen my.cnf

Hinterlasse einen Kommentar.

Network-wide options by YD - Freelance Wordpress Developer