Gå til innhold

Optimal MySQL databaseserver


Anbefalte innlegg

Hei!

 

Ønsker hjelp til å sette opp og konfigurere en dedikert MySQL databaseserver. Har tenkt på følgende punkter:

 

- hardware

- hele databasen i ram? Er det optimalt?

- software

- tenker kjøre debian

 

Hva trenger jeg av hardware for en dedikert databaseserver? Hvor mye ram trenger jeg?

 

Har dere også noen tips til cache / buffer innstillinger i MySQL konfigurasjonen?

 

Erik

Lenke til kommentar
Videoannonse
Annonse

Alt dette kommer an på hva databasen skal brukes til.

 

Men generelt; en dedikert maskin for MySQL trenger jo ikke være så kraftig som en maskin hvor samme db skulle kjørt sammen med andre applikasjoner.

 

Med databasen i ram trenger du ikke bekymre deg for å investere i redundante disker i raid-konfigurasjon, v. krasj er databasen din borte vekk uansett.

 

CentOS kan være et alternativ på OS-siden.

Lenke til kommentar

Dersom databasen ikke er ekstremt stor er det verdt å ha RAM som er høyere enn den totale størrelsen på databasene på serveren. Ved å tweake litt på settings (som er beregnet for 64MB RAM eller noe på standardkonfig) kan du få databaseserveren til å laste absolutt hele databasen med data og indekser i RAM. Det gjør at søk på databasen ikke involverer disker i det hele tatt, mens INSERT, UPDATE og DELETE naturligvis vil gjøre det.

 

Hva du trenger av annen hardware avhenger mye av workloaden. Har du mye oppdateringer på databasen må du ha rask lagring, hvis det er mye kalkuleringer må du ha mye/mange CPUer. Det er verdt å nevne at èn spørring vil ikke fordele seg over flere CPUer, så dersom det er mange synkrone spørringer som krever mye ressurser og det ikke er mange klienter vil ikke flere CPUer kunne utnyttes.

Endret av gxi
Lenke til kommentar
Dersom databasen ikke er ekstremt stor er det verdt å ha RAM som er høyere enn den totale størrelsen på databasene på serveren. Ved å tweake litt på settings (som er beregnet for 64MB RAM eller noe på standardkonfig) kan du få databaseserveren til å laste absolutt hele databasen med data og indekser i RAM. Det gjør at søk på databasen ikke involverer disker i det hele tatt, mens INSERT, UPDATE og DELETE naturligvis vil gjøre det.

 

...

 

 

http://amrmostafa.org/benchmarking-mysql-i...ory-using-tmpfs

 

dette var kanskje en litt "uformell" test, men det ser altså ut som OS-cache gir mye av den samme ytelsen på en dedikert maskin som man ville fått med tmpfs, samtidig som man unngår ulemper med tap av data.

 

Stikkordet her er vel som alltid å ha nok minne, så det peker kanskje i retning av en 64bits-arkitektur?

Lenke til kommentar

tmpfs? Har jeg nevnt tmpfs noe sted? Tmpfs er i praksis filsystemcachen i Linux hvor man har fjernet backendfilsystemet, altså akkurat det samme som et vanlig filsystem bare uten noe som lagrer filene på disk. Å lagre filer på tmpfs for ytelse er aldri noe poeng med mindre det er kun tmplagring hvor skriveytelse er viktig (derfor tmpfs).

 

Lagringsmotorene til MySQL har innebygde mekanismer for databasecaching, og InnoDB tillater i vertfall, så lenge man gir den lov til å bruke tilstrekkelig RAM, å laste hele databasen inn i RAM og jobbe med den der, hvor skrivinger skjer til disk. MyISAM har i vertfall muligheten for å laste indekser i RAM.

Lenke til kommentar

Blir Debian som OS uansett, er det jeg har på alt annet så vil ha ting likt.

 

Ang ram - så tenker jeg minst 8GB for å få plass til alle databasene / tabellene i ram. Har vel ca 4GB med data nå, men trenger jo plass for utvidelse.

 

Vil det holde med en dualcore intel på 2ghz?

 

Dette er ikke til side på størrelse med hw.no, men endel små og mellomstore sider.

 

Det jeg trenger tips til da etterhvert, er tweaking av konfigurasjonen da.

 

Jeg kjører for det meste nå myisam som motor, vil det være noe store forskjeller på å gjøre om til innodb? Er innodb raskere enn myisam?

Lenke til kommentar
Blir Debian som OS uansett, er det jeg har på alt annet så vil ha ting likt.

 

Ang ram - så tenker jeg minst 8GB for å få plass til alle databasene / tabellene i ram. Har vel ca 4GB med data nå, men trenger jo plass for utvidelse.

 

Vil det holde med en dualcore intel på 2ghz?

 

Dette er ikke til side på størrelse med hw.no, men endel små og mellomstore sider.

 

Det jeg trenger tips til da etterhvert, er tweaking av konfigurasjonen da.

 

Jeg kjører for det meste nå myisam som motor, vil det være noe store forskjeller på å gjøre om til innodb? Er innodb raskere enn myisam?

 

Det er fortsatt helt umulig for noen å si noe som helst om hva du trenger, det kommer jo an på antall samtidige brukere du forventer osv. osv. Hvis du antyder litt sånn omtrentlig hva ambisjonsnivået er så kan sikkert noen hoste opp noen tommelfingerregler.

 

MyISAM vs. InnoDB ... sistnevnte er et bedre alternativ hvis acid-compliance er viktig og du skal ha mange samtidige oppdateringer, MyISAM har vel kun locking på tabell-nivå, og det kan bli en flaskehals ved flere samtidige oppdateringer. Hvis du ikke forventer locking-problematikk påstår jo mysqlmanualen at MyISAM bruker tabell-locking av ytelseshensyn så da er vel det raskere v. sekvensielle oppdateringer.

Endret av quantum
Lenke til kommentar

Vet det er vanskelig å si noe om ytelsen basert på det jeg sier her. Kan godt hente ut statistikk fra serverne som kjører nå så kan dere få det. Må bare la de gå noen dager, har restartet tjenesten denne helgene så statistikken vil ikke være bra nok nå...

 

Ang. locking så er det nok ikke noe problem med kun locking på tabell-nivå. Leser da også at myisam er raskere og bruker mindre minne osv. - så det er nok et bedre valg da.

Lenke til kommentar

At MyISAM er raskere/bruker mindre minne er helt opp til hvordan den brukes og konfigureres. Det er ingen som helst fasit for hvilke lagringsmotorer som er "best" i alle tilfeller.

 

Man kan vel si at den største ulempen MyISAM har er at man mister data dersom serveren crasher, og tabellen er ikke tilgjengelig før den er REPAIR-et. Debian sine script kjører automatisk CHECK TABLE på alle tabeller etter oppstart, og kjører REPAIR etterhvert som den finner tabeller som trenger det, men det betyr at det kan ta litt tid før alt fungerer etter en ukorrekt serverrestart, samt at de siste kolonnene som er modifisert bare blir borte.. Dette skal være være løst med Maria-motoren om jeg ikke tar veldig feil.

Lenke til kommentar

Hvis det ikke er aktuellt å kunne miste transaksjoner så MÅ du bytte til en annen databasemotor enn MyISAM, ettersom denne ikke kan garantere dette.

 

Hvis det ikke er noe problem å gå tilbake til f.eks forrige backup, eller være nede mens du går tilbake til denne, så er det ikke nødvendig å bytte fra MyISAM.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...