WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   MySQL HA Konfiguration (https://www.wn.se/forum/showthread.php?t=1057570)

captaindoe 2013-04-14 16:56

MySQL HA Konfiguration
 
Jag har fått i uppdrag att utöka vår MySQL infrastruktur för företaget jag jobbar på, och är ute efter lite tips från er andra som har varit i samma situation.

Det jag är ute efter är hur ni har satt up eran infrastruktur för MySQL så att det inte finns en enda singel point of failure. Det ska gå att göra reads och writes oavsett om en Master eller Slave går ner.

Det är väldigt lätt att utöka antalet slaves i klustret, men det som jag har problem att lösa är om mastern går ner. Då kommer det inte gå att göra några writes, utan bara reads. Hur har ni löst detta?

Jag har kollat en del på MySQL-MMM, men vet inte om det är lösning. Som jag har förstått det skapar Master-Master replikation mer problem än vad det är värt, så MySQL-MMM verkar lösa det på ett bra sätt genom att endast ha en aktiv Master.

Jag har också kollat en del på https://github.com/mrkamel/heartbeat om det kan vara någon lösning att ha en Failover IP adress som ändras, men känns inte riktigt som att det är rätt lösning.

Jag är öppen för alla förslag som ni kan komma med.

Tack,
David

Björklund 2013-04-14 17:31

Master/Master-replikering är lite speciellt. Om du behöver fråga här så rekommenderar jag det inte.

Kör vanlig master/slave-replikering. Har du flera slavar så kör gärna en lastbalanserare för dom.

Skicka alla skriv till master.mindomän.se och all läsfrågor till slaves.mindomän.se
När mastern går ner, kör ex keepalived för att flytta master IP till en slav (dvsa gör den till master).

Börja inte använda den gamla mastern igen, innan du har synkat upp den med nya mastern.

Clarence 2013-04-14 18:31

MM replikering skapar mer problem än vad det är värt ja. Kör hellre MS och låt slaven ta över IP:et och ändra sin roll.

Galera replikering kan också vara värt att titta på. I ett Galera-kluster kan du skriva till alla servrar men du har lite (inte alls så mycket som man kan tro) overhead för en skrivning.

patrikweb 2013-04-14 20:35

Galera är enda vettiga om du tänker köra MASTER/MASTER, men tror det finns lite mer alternativ nu som kostar pengar nu när Oracle äger det.

Men om du vill ha en riktigt enterprise databas som ska funka i alla väder får du kolla på Oracle, dock tveksamt om din data ens är värd så mycket som deras databas kostar ;)

JesperA 2013-04-14 21:14

Ni har inte kollat på tex Perconas lösning? Tex http://www.percona.com/software/percona-xtradb-cluster då får man Galera "på köpet"

pelmered 2013-04-15 08:26

Annars kan du ta en titt på MySQL NDB Cluster.
Det har jag kört och jag tycker det fungerar väldigt bra.

captaindoe 2013-04-15 09:28

Tack för alla svar! Ni har gett mig mycket att fundera över, och här kommer några av de funderingar:

Ett problem som finns är att vi kör MyISAM. Anledningen till att jag valde MyISAM i början är att jag visste att det kommer främst vara selects på servern. I dagsläget har vi cirka 85% selects, 8% update och 5% inserts.
De flesta klustrerna kräver att man kör InnoDB om jag inte misstar mig. Skulle prestandan påverkas mycket om jag konverterade datan till InnoDB?

Kan man flytta floating IPs runt på servrar om dem inte finns i samma subnet? Jag har nämligen tänkt hyra servrar i olika datacenter.

Anledningen till att vi vill ha en HA infrastruktur är för att se till att vi inte har någon nertid. Prestandan är i dagsläget inget problem. Vi har cirka 13 queries / sekund.

Hur fungerar Galera, MySQL NDB Cluster och Percona XtraDB cluster när servrarna är i olika data center? Om det inte är att rekommendera, har ni något förslag på hur jag kan sätta upp servrar-infrastrukturen så att tjänsten fortfarande är tillgänglig om ett DC kraschar. Alternativt om ni kan rekommendera någon leverantör som är seperata elkällor och internetleverantörer för olika avdelningar i datacentret.

Clarence 2013-04-15 10:12

Citat:

Ursprungligen postat av captaindoe (Inlägg 20467435)
Tack för alla svar! Ni har gett mig mycket att fundera över, och här kommer några av de funderingar:

Ett problem som finns är att vi kör MyISAM. Anledningen till att jag valde MyISAM i början är att jag visste att det kommer främst vara selects på servern. I dagsläget har vi cirka 85% selects, 8% update och 5% inserts.
De flesta klustrerna kräver att man kör InnoDB om jag inte misstar mig. Skulle prestandan påverkas mycket om jag konverterade datan till InnoDB?

Kan man flytta floating IPs runt på servrar om dem inte finns i samma subnet? Jag har nämligen tänkt hyra servrar i olika datacenter.

Anledningen till att vi vill ha en HA infrastruktur är för att se till att vi inte har någon nertid. Prestandan är i dagsläget inget problem. Vi har cirka 13 queries / sekund.

Hur fungerar Galera, MySQL NDB Cluster och Percona XtraDB cluster när servrarna är i olika data center? Om det inte är att rekommendera, har ni något förslag på hur jag kan sätta upp servrar-infrastrukturen så att tjänsten fortfarande är tillgänglig om ett DC kraschar. Alternativt om ni kan rekommendera någon leverantör som är seperata elkällor och internetleverantörer för olika avdelningar i datacentret.

Galera replikering (xtradb cluster är galera och innodb/xtradb, medans mysql cluster är ndb) ger dig inga nämnvärda problem med flera DCs så länge du har OK svarstid därimellan - skrivningar måste skickas till alla noder. Den används t o m framgångsrikt över olika kontinenter, men då kan man räkna med ett par hundra ms för en skrivning, så då kan det finnas anledning att tråda skrivningar för att användaren ska slippa vänta.

Med din query-fördelning skulle jag rekommendera dig att byta till InnoDB oavsett. När antalet frågor stiger finns det stor risk att du får låsningsproblem annars. Det finns verktyg för att spela upp dina egna queries mot en ny instans, t ex pt-query-digest där du får performance metrics via samma verktyg, riktigt smidigt. Notera dock att med InnoDB så är det viktigt att ha en varm server när du påbörjar dina mätningar. Bästa sättet att göra det representativt är att köra en replay på en timmes loggar utan att kolla metrics, för att sedan köra nästa timmes loggar med mätning.

captaindoe 2013-04-16 21:20

Tack för alla tips. Jag tar och undersöker lite mera innan jag tar det slutgiltiga beslutet. I dagsläget lutar jag mot Galera replikerings-hållet. Är det några stora nackdelar med Galera som kan vara värt att veta?


Alla tider är GMT +2. Klockan är nu 11:39.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson