FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
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? |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
Citat:
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. |
|||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Klarade millennium-buggen
|
Svårare i Windows? Nä det beror väl på vad man är van vid. Hehe.
Jag var också ute efter nån slags redundans men jag gav upp och kör vanlig slav-historia. Det viktiga är för mig att inte tappa data. Ny hårdvara hos i en bra serverhall gör väl att jag ska slippa "restaurera" systemet alltför ofta. |
|||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Bara ett inlägg till!
|
Citat:
|
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Nykomling
|
Jag tror Replikering är tillräckligt i mitt fall. Jag har tittat närmare på båda varianterna men det tycks inte äns gå att implemetera i Windows.
Jag satte upp två noder som agerade både slave och master. Och på så sätt få en 2 vägs replikering. Jag är inte riktigt hundra på den här lösningen dock, då mysql direkt fördömmer den. Men i mitt fall tänkte jag inte tilllåta skrivning till båda noderna samtidigt och hoppas att det ska vara okej då. Om någon har synpunkter på det så skulle jag gärna höra dessa. Jag är också mer van vid linux än windows när det gäller server hantering och undrar vad det finns för HA lösningar till windows som tillexempelt Failover IP mm. Som jag har förstått det behöver man Windows Advanced Server för att kunna köra Microsoft Cluster Server, vilket är väldigt dyrt. Finns det billigare lösningar eller bra open source lösningar? |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
I Linux finns det MON + Heartbeat som du kan använda. Jag skapade en HA-lösning liknande den som Zoran beskriver, men med två servrar. Du borde kunna skapa en linande med cygwin om programvarorna finns portade.
|
||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Mycket flitig postare
|
Citat:
När det kommer till linux är det genast mycket lättare. Programmen integrerar med systemet på helt annat sätt, och det är lättare att göra anpassningar och få programmen att bete sig annorlunda. Just i mitt fall handlar det om att fördröja tillbaka-failover tills synkningen av mysql är klar. |
|||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Klarade millennium-buggen
|
zoran: Jag tänkte mer på att programmera en egen service, inte använda bat-filer, därav vana. Nåväl, jag kör inte MySQL på windows då linux i mitt fall är snabbare och billigare.
EDIT: stavfel |
|||
![]() |
![]() |
Svara |
|
|