da schon mehrfach danach gefragt wurde, hier meine Lösung zur Replikation von 2 MySQL-Datenbanken.
Folgendes Szenario lag bei mir vor:
Ich nutze als Nameserver nicht Bind, sondern PowerDNS. PowerDNS kann seine Daten aus einer MySQL (auch Oracle oder Psql) beziehen, leider beherrscht er aber noch kein Master/Slave-Verhalten.
Die erste Idee war, den Primary-NS und Secondary-NS die Daten aus ein und der selben MySQL beziehen zu lassen. Da die Datenbank aber auf dem Host des NS1 läuft, macht das ausfallsicherheitstechnisch gesehen wenig Sinn, da die Datenquelle für NS2 wegfallen würde, sobald NS1 sammt Datenbank ausfällt.
Die Lösung ist eine Slave-Datenbank, die ich aber nicht selber up2date halten möchte, sondern eine Replikation der Datenbank auf NS1 sein sollte, allerdings - dies war mir aus Traffic-Gründen wichtig - sollte nur die eine Datenbank für PowerDNS repliiziert werden, NICHT die gesammte MySQL.
Gegebenheiten:
PowerDNS auf Master
PowerDNS auf Slave
MySQL auf Master (mysqld Ver 3.23.51 for pc-linux-gnu on i686)
MySQL auf Slave (mysqld Ver 3.23.49 for pc-linux-gnu on i686)
Beide Systeme unter Debian (der Slave übrigens ein vd-Server von KoryPet, meiner Meinung nach für soetwas bestens geeignet!)
(Auf die Einrichtung von PowerDNS und der MySQL ansich gehe ich hier nicht weter ein.)
Als allererstes legte ich auf der Master-MySQL einen User für die Replikation an - bei mir 'replica'@'<host vom slave>' - einzig und allein mit der Berechtigung "FILE".
Dann erstell ich ein Dump der PowerDNS-DB 'pDNS' und spielte den auf der Slave-MySQL ein, da beide Datenbanken zu Beginn der Replikation auf dem selben Stand sein müssen.
In den Configs habe ich dann folgende Einträge hinzugefügt/geändert:
Master
Code: Select all
[mysqld]
set-variable = long_query_time=1
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db = <Datenbank>
log-long-format
log-slow-queries
Code: Select all
[mysqld]
server-id = 2
master-host = <Host vom Master>
master-port = 3306
master-user = replica
master-pass = <passwort>
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db = <Datenbank>
replicate-do-db = <Datenbank>
log-slave-updates
Code: Select all
030215 5:17:28 21 Connect replica@<slavehost> on
21 Binlog Dump
Ich fand das ganze unheimlich einfach und unheimlich praktisch, habs natürlich auch ausprobiert: Auf der Master-MySQL in der DB 'pDNS' einfach eine Tabelle erstellt mit irgendwelchen Einträgen, und siehe da, sofort auf der Slave-MySQL ist diese Tabelle vorhanden.
Hoffe damit ein wenig geholfen zu haben, Fragen hierzu bitte nicht per eMail oder PN sondern einfach hier im Forum, Danke.
Danke noch an Fritz, der mir mit sehr guter Dokumentation weitergeholfen hat!