| Home Profil Fun |
#48 Linux 03.03.2009
Zwei MySQL-Dämonen zur gleichen Zeit laufen lassenZiel ist der parallele Betrieb von zwei MySQL-Dämonen auf dem selben Server. Hat man nur einen Server zu verfügung, kann dies zum Beispiel genutzt werden, um konsistente Backups zu erstellen, ohne die Live-Datenbanken mit einem read lock zu versehen. Ohne die Replikation müsste man die Live-Datenbanken während des Backups für Schreiboperationen sperren, womit man Gefahr läuft mit Benutzeraktionene zu kollidieren. Mit der Replikation jedoch sperrt man einfach die zweite Instanz und kann dann von dort das Backup erstellen. Die Benutzer werden nicht gestört, da sie ja in die Live-Datenbanken schreiben. Ist das Backup erstellt sorgt der Replizierungsvorgang dafür, dass beide Instanzen sofort wieder abgeglichen werden. Jedoch ist zu beachten, dass die Replikation nicht über Sockets funktioniert, sondern über TCP/IP. Dies bedeutet die beteiligten MySQL-Instanzen benötigen unterschiedliche IP-Adressen. Um ein solches Szenario zu realisieren müssen die beiden MySQL-Dämonen unterschiedliche Ports und Sockets verwenden. Für dieses Tutorial nehme ich an, dass bereits ein MySQL-Dämon mit der Konfigurationsdatein /var/db/mysql/mysql.cnf installiert ist. Nehmen wir an diese Datei enthält folgende Zeilen: port=3306 datadir=/var/db/mysql pid-file=/var/db/mysql/mysql.pid tmpdir=/var/db/tmp socket=/tmp/mysql.sock Wir erzeugen ein zweites Datenverzeichnis indem wir /var/db/mysql nach /var/db/mysql2 kopieren. cp -rp /var/db/mysql /var/db/mysql2 Es wird auch ein zweites temporäres Verzeichnis benötigt. cp -rp /var/db/tmp /var/db/tmp2 Beide neuen Verzeichnisse sollten die gleichen Rechte haben wie die Originalverzeichnisse. Für den zweiten MySQL-Dämon ändern wir nun einfach dessen Konfigurationsdatei /var/db/mysql2/mysql.cnf: port=3307 datadir=/var/db/mysql2 pid-file=/var/db/mysql2/mysql.pid tmpdir=/var/db/tmp2 socket=/tmp/mysql2.sock Jetzt kann man beide Dämonen starten: /usr/local/bin/mysqld_safe --defaults-file=/var/db/mysql/mysql.cnf & /usr/local/bin/mysqld_safe --defaults-file=/var/db/mysql2/mysql.cnf & Clients von localhost können sich mit den Dämonen jeweils anhand ihrer Sockets verbinden. mysql -uroot -p -h localhost -S /tmp/mysql.sock mysql -uroot -p -h localhost -S /tmp/mysql2.sock Remote clients können die Dämonen anhand ihrer Ports unterscheiden und sich so mit ihnen verbinden. mysql -uroot -p -h dbserver -P 3306 mysql -uroot -p -h dbserver -P 3307 |