Visa ett inlägg
Oläst 2005-11-05, 07:55 #2
zorans avatar
zoran zoran är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2004
Inlägg: 598
zoran zoran är inte uppkopplad
Mycket flitig postare
zorans avatar
 
Reg.datum: Jun 2004
Inlägg: 598
Citat:
Originally posted by paulie@Nov 4 2005, 15:40
Jag ska sätta upp 2 redundanta MySQL servrar. Initialt kommer endast en server användas åt gången och den andra kommer mera att agera backup, eventuellt kan båda komma att användas parallellt i framtiden. Lösningen är alltså inte till för lastbalansering eller för att höja prestanda. Det är mer en från om en ”high availibility” lösning.
De 2 servrarna kör Windows 2000 med MySQL 5.0. Att byta till Linux/Solaris eller annan Unix dialekt är i dagsläget tyvärr inte möjligt.

Jag började med att titta på klustring, men insåg att det inte finns stöd för Windows i nuvarande version.

Nästa steg var replikering. Jag insåg dock att replikering i MySQL är en ”envägs replikering”, dvs att den som agerar "slave" får data från den som agerar ”master”.
Detta skulle vara ohållbart i ett scenario där ”master” servern går ner och data skrivs till ”slave” servern. Då detta data inte kommer replikeras tillbaka till master servern.

Ett tredje alternativ vore väl antagligen att ha någon form av delad lagring som GFS eller DRDB i linux. Jag vet dock inte vad det finns för liknande möjligheter i Windows.

Några förslag på vad som skulle vara ett lämpligt sätt att lösa problemet?
Jag satt i samma sits som du, där en plan för sånt skulle tas fram.

För klustring av mysql, behöver du minst 3 maskiner. Egentligen helst 4. En maskin agerar "controller" och därför är det bra att ha dubbla controllers för bra redundans. 2 andra maskiner agerar lagringsnoder.

Tyvärr drar det i omkostnader ifall man har det på det viset.

Så billigare alternativet är replikering. Min plan var att ha en kontrolerad failover i klustret (jag pratar om totala systemet nu inte mysql). Om nod A går ner, eller webbservern dör, eller något händer för att nod B ska ta över uppdraget. Då tas maskin A ner. När mysql på maskin A är dött, konfigureras mysql-slaven på B att bli Master. Det är i princip ett eller två sql-kommandon. Allt är fint hittils.

När maskin A är uppe igen, innan failover systemet återställer dennes IP och redigerar trafiken till den, följande görs i Mysql först. Konfigurera Mysql som slave till nod B. All synkning sker från B till A. När det är klart, konfigurera A som master igen och B som slave till A.

Problemet med det är att det kräver något så när avancerad skriptning och möjlighet att fördröja tillbaka-failover något. I Windows är sånt alltid svårare men jag antar att Cygwin hjälper lite.
zoran är inte uppkopplad   Svara med citatSvara med citat