ot Yordan Georgiev(31-01-2005)

reiting (36)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane


___Predi da zapochnem neka da utochnia, che statiiata e prednaznachena samo i edinstveno za nachinaeshti. Ne pretendira za izcherpatelnost po temata, no s neina pomosht shte mozhete da pridobiete iasnota po problema.

___Napisvaneto na tazi statiia be dovedeno ot nevolite mi s replikiraneto. Ima dosta informatsiia kak stava, no napisana dosta nerazbrano. SHTe vi predlozha edin variant kak za po-malko ot 10-20 minuti mozhete da si nastroite mashinite i te da budat v pulna boina gotovnost za potrebitelite.

___V nachaloto neka da vidim za kakvo sluzhi replikiraneto i s kakvo mozhe da ni e polezno.

___Replikiraneto nai-prosto kazano e kopirane na bazata danni. To se osushtestviava kato vtorichen survur neprekusnato se sinhronizira s glaven. Tazi sistema ot deistviia mozhe da ni e polezna v niakolko sluchaia.

___Imame edno survurche (da se razbira mashina s Linuks) s konfiguriran i startiran MySQL demon. Nezavisimo dali proektut ni e bil za sait realiziran sus skriptove (bez znachenie na koi ezik sa realizirani) ili puk za niakakva programa, raboteshta s baza danni, zapochva da ima vse poveche potrebiteli. Veche se seshtate, che povecheto potrebiteli vodiat do poveche zapitvaniia kum survura i suotvetno go natovarvat poveche. Ako niamame sredstva da zakupim nova mashina, koiato niama da se “zaduhva” pri natovarvaneto, mozhem da razpredelim natovarvaneto mezhdu niakolko po-slabi mashini. Tova stava lesno, kato ot glavnata mashina se sinhronizirat edin ili niakolko vtorichni survura. Taka nasheto programno prilozhenie mozhe da pravi zapitvaniia i kum vtorichnata/ite mashina/i, za da ne se tovari glavnata. Tuka triabva da se oburne vnimanie na fakta, che nasheto softuerno prilozhenie triabva samo da chete i v nikakuv sluchai ne triabva da pravi zapisi na vtorichniia/te survur/i. Tova deistvie shte dovede do razminavane na kopiiata na bazata danni, zashtoto glavniiat survur niama da ima vuzmozhnostta da se sinhronizira ot vtorichniia. Tova mozhe da stane, samo ako se izpolzva klusterna tehnologiia, no tova ne e tema na tazi statiia.

___Da si predstavim sega, che na sushtiia survur niama RAID masiv i grumne diskut vurhu koito se namira bazata ni danni. Rezultatut shte e zaguba na danni. Kolkoto i suvestni administratori da sme, praveshti backup-i nai-redovno, vse shte zagubim niakakva informatsiia, koiato v nashiia sluchai mozhe da e kritichno vazhna. No, izpolzvaiki replikirane, nie imame tekushto kopie, koeto se namira na druga mashina. Sled kato si opravim mashinata i pusnem survura lesno mozhem da si vuzstanovim dannite ot kopieto. A prez tova vreme niama da ima problem da prenasochim potrebitelite kum rezervnoto kopie – vremeto e pari i ne iskame da ostaviame potrebitelite bez dostup do bazata danni.

___Niama da sgreshim, ako opredelim tozi vid replikirane kato pasivno. Pri tozi metod vtorichnite mashini se sinhronizirat, bez da se interesuvat ot sustoianieto na drugite vtorichni mashini. Vtorichniiat survur se interesuva samo ot glavniia – ima ierarhichna struktura. Kogato edna replikirashta sistema bude realizirana na edno ierarhichno nivo, tia e aktivna. Togava vsiaka mashina se interesuva ot statusa na drugite. Pod status razbirame dali mashinite sa raboteshti i dali vurhu tiah se pravi zapis, kakto i oshte mnogo drugi sustoianiia na mashinata i MySQL survura.

___Nadiavam se s dadenite primeri da sum raziasnil v obshti linii kakvo e replikirane. Eto i samoto opisanie na mehanizma na replikiraneto i kak se realizira v MySQL.

__Versiia 3.23.33 (v niakoi iztochnitsi pishe 3.23.15) na MySQL poddurzha mehanizum za suzdavane na tochni kopiia na baza danni (replikirane). Tozi mehanizum e realiziran s pomoshtta na statisticheski fail. Kakto se doseshtate v nego se zapisvat vsichki deistviia izvursheni na glavniia survur (zatova vtorichnite survuri se sinhronizirat spriamo glavniia, a glavniiat ne mozhe da napravi tova ot vtorichnite). V dokumentatsiiata dosta iasno e kazano, che na vsichki mashini triabva da imame edna i sushta versiia na MySQL. Tova se nalaga, za da niamame nezhelani problemi, svurzani s razlichieto na versii na survura. I kakto vseki administrator bi vi preporuchal – neka da izpolzvame poslednata stabilna versiia.

___Ima variant za izpolzvane i na razlichni versii na MySQL. Dobre e predi vsiako smesvane na versiite da se oburnete kum rukovodstvoto na MySQL. Estestveno, za da spestim malko vreme, shte vi dam edna izvadka ot poslednata versiia na dokumentatsiiata, koiato e dostupna po vreme na pisane na statiiata.

	
 		Master	Master	Master
 		3.23.33 and up	4.0.3 and up or any 4.1.x	5.0.0
 Slave	3.23.33 and up	Yes	No	No
 Slave	4.0.3 and up	Yes	Yes	No
 Slave	5.00	Yes	Yes	Yes
 
 
___Predi da zapochnem nastroivaneto na mashinite, triabva da kazhem, che natovarvaneto na glavniia survur shte e znachitelno po-goliamo ot tova na vtorichnite (vuzmozhno e i glavniiat da ne e nai-natovaren – vsichko zavisi ot dizaina na proektiranata ot nas sistema, otnoshenieto na broia na zapisite kum broia na zapitvaniiata kum bazata danni i oshte mnogo drugi faktori). Poradi tazi prichina izberete nai-moshtnata mashina za glavna.

___Eto i neobhodimite deistviiata, koito triabva da izvurshim na glavniia survur.


#1 Suzdavame potrebitel na MySQL, koito ima prava za dostup FILE za vsiaka baza danni, koiato iskame da kopirame. Tova stava taka:
mysql > grant FILE on webdb.* to gigavolt@’%.domein.com’ identified by ‘pass’;
Sega potrebiteliat gigavolt mozhe da se svurzva s glavniia survur ot vsichki subdomeini na domein.com i negovata parola e pass.

#2 Otvariame /etc/my.cnf, za da aktivirame funktsiiata binlog i da izberem suotvetno bazite danni, koito iskame da se kopirat. Pravim slednoto:
V sektsiiata [mysql] dobaviame
log-bin
server-id=1
I v sektsiiata na vsiaka baza danni, koiato shte replikirame dobaviame bin-do-db=webdb


#3 Restartirame MySQL za da otrazim napravenite promeni. Mozhe da se napravi s pomoshtta na sledniia komanden red
root@master:/usr/local/mysql# mysqladmin shutdown && ./bin/safe_mysqld&

#4 Sega e momentut da si napravim kopie na direktoriiata data/ (mysqldump niama da svurshi rabota, zashtoto ni triabva tsialoto sudurzhanie ot direktoriiata). Estestveno predi da preminem kum kopiraneto triabva da sprem survura. Vsichkite operatsii mogat da se realizirat sus sledniia komanden red
root@master:/usr/local/mysql# mysqladmin shutdown && tar cvf ~/data.tar data/
Opisanata komanda shte se izpulniava tolkova produlzhitelno vuv vremeto, kolkoto e razmerut na bazite danni.

#5 Veche niama kakvo da chovurkame po survura i triabva da go startirame
root@master:/usr/local/mysql# ./bin/safe_mysqld&


___Sega ostava da napravim nastroikite i na vtorichniia/te survur/i:


#1 Kopirame suzdadeniia arhiv i go razarhivirame. Estestveno, predi tova spirame MySQL survura.
root@slave:/usr/local/mysql# mysqladmin shutdown && scp master:data.tar .
root@slave:/usr/local/mysql# mv data data.old && tar vxf ~/data.tar


#2 Zadavame na direktoriiata data i neinoto sudurzhanie da sa sobstvenost na mysql.mysql
root@slave:/usr/local/mysql# chmod –R mysql.mysql data/

#3 Otvariame lyubimiia ni fail /etc/my.cfn I v sektsiiata [mysql] postaviame slednoto:
master-host=master.domein.com
master-user=gigavolt
master-password=pass
server-id=10
VNIMANIE vseki survur triabva da ima individualen server-id (ne triabva da se povtariat)

#4Startirame survura
root@slave:/usr/local/mysql# ./bin/safe_mysqld&

___V obshti linii e tova.
___Sega triabva da oburnem malko vnimanie na arhiviranata po-rano ot nas direktoriia data. Tia sudurzha vsichki bazi danni na survura i poniakoga ne e mnogo udachno da gi razprostraniavame na vtorichnite survuri. Mozhe da ima niakoia tablitsa s potrebitelskite imena i paroli ili druga konfidentsialna informatsiia, koito niama da e dobre da se razprostraniavat na vtorichnite mashini, dori v kriptiran vid. Na ruka mozhem da premahnem nenuzhnata tablitsa ili dori tsiala baza danni kato prosto ia otstranim ot arhiva.

___Pri nastroikata na vtorichnite oburnete goliamo vnimanie – vsichki purvonachalni bazi danni s tablitsite sa premesteni v data.old, za da se razarhivira data.tar. Ta ako imate bazi danni, koito sa se namirali na vtorichniia survur i iskate da gi izpolzvate mozhete da gi vzemete ot data.old.

___Nakraia da spomena vuzmozhnostta da ne se spira glavniia survur pri suzdavaneto na arhiva. Mozhete prosto da sprete dostupa za pisane vurhu bazata danni na potrebitelite, dokato trae operatsiiata. Samo da vmukna, che ima veroiatnost vasheto softuerno prilozhenie da “izbie” i potrebitelite vi shte da se iznerviat ot poluchenite sistemni greshki. Poradi tazi prichina preporuchvam totalno izklyuchvane na survura. Turseshtata vi sistema mozhe da suzdava sushto taka tempovi tablitsi, koeto pak dovede do problemi s arhiva.

___Tova beshe. Vashite vuprosi i komentari chakam s interes 

Statiiata e napisana spetsialno za chitatelite na “Linuks za bulgari”
Avtor: Iordan Georgiev – GigaVolt
E-mail: gigavolt@abv.bg & y.georgiev@gmail.com
WEB: http://gigavolt.hit.bg/


<< | >>