• 24 odgovora
  • 9.442 pregleda
MySQL load balancer 17.08.2010. u 10:26 · pre 197 meseci #1
Da li se neko bavio ovim i sta moze da preporuci kao load balance rijesenje za MySQL?
Kakav je status MySQL proxy-ja, jer koliko vidim on moze da se iskoristi u master slave semama...
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: MySQL load balancer 17.08.2010. u 10:57 · pre 197 meseci #2
MySQL-Proxy deluje jako interesantno samo je problem to sto je jos uvek u nekoj non production fazi.. Mada nije ni to velika prepreka :)
Re: MySQL load balancer 17.08.2010. u 14:19 · pre 197 meseci #3
proxy je sto se kvaliteta tice vrlo upotrebljiv (koristi se kao modul u enterprise monitoru i radi 1/1). Ono sto nije sigurno je njegova buducnost kao "stand alone alata" posto postoje indicije da ce njegov razvoj da bude vezan iskljucivo za enterprise monitor i da ga mozda van merlina nece uopste biti :( (ja se nadam da su indicije pogresne al ..)

inace imas kod mene primer kako da napises plugin za proxy koji ce da loguje audit data
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MySQL load balancer 18.08.2010. u 12:45 · pre 197 meseci #5
A ima li jos kakvih rijesenja za load balance vise mysql servera osim MySQL Proxy?
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: MySQL load balancer 18.08.2010. u 16:43 · pre 197 meseci #6
miroslav, da
tyler, da

EDIT: da ne bude nedoreceno - tema je prekomplikovana za generalne odgovore koji prevazilaze da i ne + tema duboko zadire u ono od cega zivim (high availability systems - razvoj, postavljanje, odrzavanje ... ) tako da je taj deo previse "detaljan" da bi moglo da se generalno prica o tome dalje od - drbd/hb/proxy/external locking - svako daljnje razmatranje nema veze sa "opstim" resenjem i pravi se razlicito za svaku odredjenu situaciju, a pravljenje custom resenja, ma koliko bio spreman da pomognem svakome, ne ide bas za dz :)
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MySQL load balancer 18.08.2010. u 18:24 · pre 197 meseci #7
Naravno :)

Nego mi je vise bilo interesantno da ima relativno dosta, i to kvalitetnih, load balancera i reverse proxyja za web servere pa i mail, kao sto su nginx (sjajan softver), haproxy, varnish, a za mysql nista nisam mogao da iskopam.
Jel ima neki poseban razlog za to npr. teza i komplikovanija implementacija tako necega za mysql, ili se radi o necemu drugom...

jedino mi heartbeat pada na pamet, ali on je vise onako "generalni" lb nego bas za mysql...
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: MySQL load balancer 18.08.2010. u 18:48 · pre 197 meseci #8
HB je "klaster manager", dakle njega koristis da bi odradio management grupe racunara i servisa na njima ... sam za sebe ne radi nista ...

sto se tice "Zasto nema", i oni koji postoje (vrlo retki) su lokalni projekti koje su ljudi pravili lokalno za sebe - odraditi load balansing database servera van samog database servera je mnogo zeznut proces zato sto moras da vodis racuna o mnogo tome, posebno kada nemas sinhronu replikaciju izmedju nodova.. u zavisnosti od toga kakav ti transaction isolation treba .. za mysql-proxy ima skripta koja radi tako sto baca sve write upite na jedan host a read upite na ostale hostove (master i mnogo slave-ova) ali ni to ne radi uvek "bas tako" - i dalje gomila upita zavrsi na masteru - fora je transakcijama ... ako neces transakcije onda problem postaje prilicno jednostavan...

inace sto se tih ostalih tice
- connector/j (jdbc konektor za mysql) ume da radi load balansing (i master/slave i pravi load balansing)
- java ima (u stvari nema jos ali bice uskoro ako sve bude po planu, to pravi nas tim iz norveske ja mislim ali nisam siguran, znam da su neki autisticni likovi koji salju info jednom u 3 meseca i to vrlo sturo tipa "zivi smo, jos nije gotovo, sad ce") poseban layer koji moze da zivi izmedju aplikacije (jdbc sa jedne strane) i database servera (mnogo njih sa druge strane)

connector/C jos uvek nema sve to ali postoji valjana sansa da ce da dobije, kada on to dobije automatski ga dobijaju i svi ostali (posto se svi ostali tipa php/python/perl/.net .. zasnivaju na connector/c) .. doduse svi kapiraju da ako si normalan i pises app u c-u imas dovoljno znanja da sam odradis load balansing u svom db layer-u kako treba :)

onaj lua skript koji radi razbacivanje konekcija na proxy-u moze da se implementira u bilo kom jeziku, prilicno je jednostavan ...

sve u svemu, kada je baza u pitanju, ako se nije mislilo na vreme o skalabilnosti na app nivou skaliranje sistema postaje umetnost i tu stvarno nema generalizacije, mislim da osim ovih "external locking" sistema koji rade samo za 99% citanje i 1% pisanje nisam video 3 ista resenja (a napravio sam hiljade, da ne spominjem koliko sam ih video)
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MySQL load balancer 18.08.2010. u 19:00 · pre 196 meseci #9
hm ... procitam ove svoje odgovore posto ih napisem ... deluju mi kao odgovori nekih ljudi ovde na forumu koje pitas "kako da uradim nesto" a oni ti posalju pp sa "daj 500E i ja cu ti zavrsim" :( ... a stvarno mi to nije cilj .. firma me dovoljno placa da ne moram da navatavam tezge preko foruma :D (nije da bezim od njih al mi stvarno nisu neophodne) ..

ono sto mora da se shvati kada je bilo kakav HA/HR (high availability / high reliability) sistem u pitanju je da TO MORA DA KOSTA PARE ... svaka ona devetka kod HA/HR sistema dize exponencijalno cenu sistema .. i u hw-u i u sw-u i u administraciji, setapu, odrzavanju ... sve to mora da kosta ..

nekoliko hintova za "ustedeti"

ako je aplikacija "losa", tj sistem nije predvideo da ce da raste najjeftiniji je prvo da razdvojite DB server i APP server. posle toga - SCALE UP je najjeftiniji (nije najbolji ali daleko najjeftiniji) ..
1. stavis MNOGO RAMA - sto vise rama, vise stvari moze da se kesira, sve je mnogo brze
2. stavis storage sa VELIKIM IO mogucnostima (SSD diskovi u RAID0 satiru koliki IO mogu da pruze, dodas im RAID1 da bi imao koliko toliku sigurnost - posto SSD-ovi oce da riknu povremeno)
3. stavis MLOGO BRZ CPU i bar 8 jezgara (ne preterivati sa jezgrima kada je mysql u pitanju, mnooogo bolje 2 EXTRA BRZA jezgra nego 200 sporih - citaj zahebi T1000)

i to je to ..

sledeci korak - sve to UDUPLAS, stavis pod HB i semisinhronu replikaciju ili u kombinaciju sa DRBD-om


to je naaaajjeftinije resenje ..

za retke koji nemaju pisanje po bazi, SAN sa multi scsi stekerom mountujes sa vise masina (dakle X masina mountuje isti disk), na njega turis neki cluster file system (ospf/gfs2 ili slicno) koristis samo myisam tabele i upalis external locking - to ti daje mogucnost da na svim masinama startujes mysql sa istim datadirom (bez external lockinga ili sa innodb-om bi to sve otislo u majcinu ali ovako ce da radi) ... kada jedan mysql oce da pise po tabeli on je zakljuca a posto je upaljen external locking to se preko cluster fs-a vidi i na ostalim masinama ... ovo radi ok, doduse mora se malo tweakovati mysql da ne bi imao pogresne podatke po keshevima i slicno ...

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MySQL load balancer 18.08.2010. u 19:08 · pre 196 meseci #10
i jos jedna stvar - oracle trenutno sprema (ok, lazem, tek je oformljena radna grupa ali to kod nas ide brzo) potpuno novo HA resenje kada je mysql u pitanju (bazirano na oracle linux-u i oracle alatima za kontrolu)... za sada je to sve sto i ja znam ali sam mozda upao u radnu grupu pa ako jesam znacu uskoro vise :) ako nisam, kad nesto saznam ja cu podeliti vec sa ostalima
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MySQL load balancer 26.08.2010. u 01:17 · pre 196 meseci #11
A sta je sa ndbd-om?
Re: MySQL load balancer 26.08.2010. u 07:19 · pre 196 meseci #12
Citat:
IvanPHP: A sta je sa ndbd-om?


Ako moraš da pitaš šta je NDB onda to definitivno nije za tebe.

NDB = NDB Cluster, database engine za clustere to jest za velike farme servera.

To je takođe razlog zašto je Bogdan "MySQL Cluster Engineer" i šta on većinu vremena radi na svom poslu.
Potpis
"Common sense is not so common." - Voltaire
Re: MySQL load balancer 26.08.2010. u 14:44 · pre 196 meseci #13
ndbcluster je "malo drugaciji" storage engine ... opet je prica malo "duza", imas ovde moj poprilicno detaljan opis sta mysql cluster (ndbcluster storage engine) jeste a sta nije

ako hoces da ga probas (ne trebaju ti farme servera, mozes i na jednoj masini da ga poteras) imas ovde step by step kako da instaliras mysql cluster

da ne tupim, na ta dva linka imas sve sto ti treba da bi saznao da li te to zanima ili ne i da probas da li ti to radi posao ili ne ...

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MySQL load balancer 26.08.2010. u 15:50 · pre 196 meseci #14
Procitah http://www.mysql.rs/2009/10/cluster-instalacija/ i ne videh tu ldirectord i heartbeat. Ne preporucujes LB sa HB ispred MySQL cluster-a samo zbog kompleksnih join-a ili ima jos neka kvaka?

Bilo bi lepo da malo detaljnije das neke podatke o performansama takovog resenja, je l?

(komentar nikako nije zlonameran, diskutujemo, ucimo ...)

[Ovu poruku je menjao IvanPHP dana 26.08.2010. u 17:23 GMT+1]
Re: MySQL load balancer 26.08.2010. u 17:14 · pre 196 meseci #15
Citat:
i ne videh tu ldirectord i heartbeat. Ne preporucujes LB sa HB ispred MySQL cluster-a


ok bice da nisi i dalje svatio sta je mysql cluster, procitaj onaj drugi post (sta mysql cluster jeste a sta nije), HB i LD nemaju sta da traze u kombinaciji sa mysql klasterom, to su alati za nesto potpuno drugo
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MySQL load balancer 26.08.2010. u 20:01 · pre 196 meseci #16
Da, bice da si u pravu. Nisam shvatio, pa sam testirao ldirectord koji loadbalance-uje zahteve na node MySQL CLuster-a i heartbeat koji ceka da ovaj umre. Sve to trebalo bi da vozi billing na Opensips-u sa 2.000+ QPS. NDB je lepa stvar, ali kad noda nece da se rekonektuje ostaje mi ili da placem ili da citam source.

Ipak, nakon par padova NDB-a mislim da cu ostaviti master-master sa istovremenim upisom.
Re: MySQL load balancer 26.08.2010. u 20:20 · pre 196 meseci #17
ldirectord radi razbacivanje zahteva na vise masina (lvs)
HB radi management servisa i failovere

to je potrebno ako radis high availability resenje sa mysql-om tako sto imas vise mysql servera koji teraju "mysql server" ili "mysql enterprise server", sa HB kontrolises koji su up a koji nisu, a sa lvs-om glumis jedan server a bacas upite na nekoliko njih, mozes tu da inkorporiras i drbd etc etc ..

mysql cluster je "proizvod", koji ima svoj cluster management (ndb_mgmd), data node (na kom se nalazi data) i kom ne mozes da pristups od strane klijenta osim ako tvoj klijent ne prica ndb_api, i imas sql nodove koji pruzaju mysql interface. u toj kombinaciji, ako neki sql nod crkne ili ako neki data nod crkne o tome brine management nod... dakle HB tu nema sta da trazi. sto se tice lvs-a (ldirectord) teoretski mozes da stavis lvs ispred sql nodova ali je to potpuno beskorisno posto je mnogo lakse da iskoristis proxy ili da stavis load balancer u konktor (za sada radi 1/1 u java konektoru za ostale ce biti ali za sada je proxy jedino resenje ili pametna aplikacija)...


Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MySQL load balancer 26.08.2010. u 20:21 · pre 196 meseci #18
btw, nemoj pogresno da razumes, lvs + HB + drbd i razne druge tehnologije RADE SUPER ... samo nemaju veze sa "mysql cluster" proizvodom ( http://dev.mysql.com/downloads/cluster/ ) koji nije isto sto i "mysql server" proizvod ( http://dev.mysql.com/downloads/mysql/ )
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MySQL load balancer 26.08.2010. u 21:01 · pre 196 meseci #19
No hard feelings, prosto pitam te, jer volim da saznajem stvari sa izvora, a i inace MySQL source volim da citam u slobodno vreme umesto poezije :)

Nazalost, VoIP billing ne trpi padove, posto moras da imas tacne invoice na kraju meseca inace nastupa billing drama sa interconnection partnerom. Znaci, sve se prvo proba, proba, proba, pa se ondak proba min 3 meseca na billing-u za korisnike koji su fizicka lica, pa ako pada ide analiza implementacije. Ma VoIP baze i nisu neke baze, sem acl tabela dominira write, na kraju billing perioda jednom mesecno prethodni mesec mozes export, pa tar.gz
Re: MySQL load balancer 26.08.2010. u 22:11 · pre 196 meseci #20
nema sta da se ljutim ... a mnogo ti je los ukus za poeziju ako citas nas source, da nije tragicno bilo bi za smejanje :(

za voip billing - oh da, prebacio sam do sada 2 firme sa raznih baza na mccge .. bilo je potrebe za ozbiljnim prepravkama sistema ... osnovni cim sa acl-om je da ti treba "sto vise sql servera koji ce da rade insert" posto ti ne mozes da radis bulk insert (uglavnom ne bez ozbiljnih zahteva nad aplikacijom, inace moze, jedan klijent je to prepisao) a jedan po jedan kroz jedan/dva sql noda nece da radi kako treba tako da razbacas na mnogo sql nodova inserte i bas te briga ... 2 data noda su uglavnom dovoljna ako imas dovoljno spindlova .. sve u svemu vrlo upotrebljivo, ali samo za acl liste, nikako ne valjda da se sa mccg-ea vade reporti vec napravis obican myisam slave (ili vise njih) koji ce da pokupi binlog sa klastera i koji onda moze da se koristi za reporte ...

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme