MySQL two way replication

MySQL, PostgreSQL, SQLite
cjhbabel
Posts: 63
Joined: 2002-07-18 12:09

MySQL two way replication

Post by cjhbabel » 2005-11-23 09:49

Ich möchte für Spamassassin die Bayes und AWL Werte in einer MySQL Datenbank ablegen. Das ist auch kein Problem. Wenn ich allerdings zwei MX Server (auf unterschiedlichen Hosts) habe wäre es meiner Meinung nach sinnvoll wenn beide Mailserver auf die gleiche MySQL Datenbank zugreifen könnten. Mein erster Gedanke war jetzt eine 2 Wege Replikation von MySQL aufzusetzen um das Problem zu lösen. Nach ein wenig googeln gibt es aber unterschiedliche Auffassungen ob ein solches Setup sinnvoll ist oder nicht. Die betreffenden Tabellen haben keine auto_increment Felder, was wohl die Voraussetzung ist damit es überhaupt geht.

a) Wäre es sinnvoll das ganze so umzusetzen, dass nur eine MySQL DB read/write arbeitet und die andere "nur" als Backup für den Fall benutzt wird, dass ein MX Host ausfällt? Allerdings ist dann bei einem Ausfall "Handarbeit" angesagt und die würde ich gerne vermeiden soweit es irgendwie möglich ist.

b) Hat jemand eine bessere Idee wie man das Problem einer gemeinsamen Datenbank lösen könnte? Oder einen ganz anderen Vorschlag?

c) Was ist von der Idee das mit einer kleinen "Raid1" Platte zu lösen ? Die könnte über das Internet synchronisiert werden. Realistisch komme ich auf einen Durchsatz von 3MB/s.

d) Ist es überhaupt sinnvoll die Datenbank für beide Hosts gemeinsam zu verwalten?

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: MySQL two way replication

Post by snowball » 2005-11-23 10:27

Hi,
bei den meisten deiner Fragen kann ich dir leider keinen Tipp geben.
Aber dein Punkt a) Ist meines Wissens nicht ganz richtig. Du könntest einen read/write und einen read laufen lassen. Wenn der eine Server aussfällt, könntest du mit dem SQL-Statement "change master to" (oder so ähnlich) den MySQL-Master umziehen. Wenn du das ganze in ein Skript verpackst, sollte das auch von alleine gehen. So nach dem Motto: Backup connect jede Minute zum Haupt-Mailserver wenn der nicht antwortet, alles umbiegen.

Gruß
Jochen

cjhbabel
Posts: 63
Joined: 2002-07-18 12:09

Re: MySQL two way replication

Post by cjhbabel » 2005-11-23 10:46

snowball wrote:Aber dein Punkt a) Ist meines Wissens nicht ganz richtig. Du könntest einen read/write und einen read laufen lassen. Wenn der eine Server aussfällt, könntest du mit dem SQL-Statement "change master to" (oder so ähnlich) den MySQL-Master umziehen.
Ich denke nicht, dass die Spamassassinskripte damit umgehen können auf dem einem MySQL Server "nur" zu lesen und die Daten auf einem anderem MySQL Server zu schreiben. Damit wäre mir zwar auch geholfen, weil ich dann halt die UPDATES im Falle eines Falles nach /dev/null schicken würde (es geht ja "nur" um Spamcscores). Aber wie gesagt, ich denke das wird nicht klappen.

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: MySQL two way replication

Post by oxygen » 2005-11-23 14:21

Wozu soll das gut sein? Ein eMailserver mit Spamasassin reicht doch. Zumindest nach meinem Verständis werden normal die eMails nur an den Primary MX ausgeliefert. In dem Fall, dass der nicht erreichbar ist, wird beim Backup MX eingeliefert, der die eMails dann wiederum an den Primary MX ausliefert, sobald der wieder verfügbar ist. Also reicht ein Spamfilter auf dem richtigen eMailserver...

cjhbabel
Posts: 63
Joined: 2002-07-18 12:09

Re: MySQL two way replication

Post by cjhbabel » 2005-11-23 14:31

øxygen wrote:Ein eMailserver mit Spamasassin reicht doch. Zumindest nach meinem Verständis werden
Mein Setup sieht etwas anders aus.

a) Beide MX Server liefern die Mails über ein VPN in ein internes Netz. Mails die beim Backup MX ankommen werden nicht erst wieder über den Primary MX geschickt.

b) Spam wird in der Regel bevorzugt beim Backup MX abgeladen. Daher würde ich auf beiden MX Server scannen wollen.

c) Es wird während das DATA Phase sowohl nach Viren als auch nach Spam gescannt. Wird eins von beiden erkannt kommt ein 550.

Daher denke ich schon das eine gemeinsame Datenbank Sinn machen würde.