sam si napisao .. "u aplikaciji" ...
zavisno od toga kakva nam je aplikacija imamo nekoliko resenje
1. rucno (moj omiljeni nacin iako je najlosije resenje) ..
o Najlakse se setuje (svaki app uglavnom ima neki config fajl gde su parametri veze sa bazom)
o Kako nam je ovo potrebno posto imamo XYZ app servera, tacno znamo koji app server koristi koji slave (sta mu stoji u config fajlu)
o load balancing je manuelan
o Radi za "svaku" vrsu aplikacije
2. kvazi automatski
o Kod JAVA konektora imamo mogucnost da mu kazemo gde je master a gde slave i kada konekciji setujemo "read only" atribut on gadja neki od slave-ova (random) a ako nema read only atributa gadja master. Ja ovo licno nikad nisam probao al cuh da radi.
o U samoj aplikaciji dodajemo layer koji za jednu vrstu selektova koristi jednu a za drugu vrstu selektova drugu konekciju (ili pool konekcija) - odlicna postavka ako o tome razmisljamo na vreme, ako se toga setimo na pola aplikacije prilicno je komplikovano nadograditi istu... Ja sam ovo licno implementirao u nekoliko sistema i mogu reci da bez problema funkcionise godinama na sistemu sa preko 50 mysql servera (I oko 200 application servera)
3. automatski
o Koristenje MySQL Proxy -a .. MySQL Proxy dolazi sa lua skriptom koji parsira query-e i u odnosu na to kakvi su izvrsava ih na masteru ili na jednom od slave servera - ja licno nisam nikad koristio mada znam dosta klijenata koji to koriste
Za sada, MySQL Proxy slave upite baca "round robin" metodom, dakle ne salje upit na "najslobodniji" server vec na onaj koji je "po redu"... to ce se verovatno menjati u buducnosti. MySQL Proxy lua skript koji radi "razvrstavanje" upita po serverima je u source-u tako da uvek mozete isti adaptirati za svoje potrebe.
Korisnici su prilicno zadovoljni kako radi MySQL Proxy, tako da mislim da je to "resenje za buducnost" ... ne mogu vezano za njega detaljnije posto ga stvarno nikad nisam koristio