Meniu Blog

Detalii vizitator

IP-ul tău public este 3.236.86.184, folosești sistemul de operare necunoscut, o rezoluție de pixeli și browser necunoscut !
Dacă am dreptate dă-mi un like pe Facebook!

Caută cod poștal

Județul:
Localitatea:
Strada:
CoduriPostale.ro

Articole pe blog

Recomand

Tutorial web server replication (rsync și MySQL)

Tutorial MySQL replication

Înainte de începerea tutorialului să discutăm puțin despre ce înseamnă web server replication și la ce ne folosește. Să spunem că avem un server web pe care ținem un site foarte vizitat, prin urmare, vom ajunge în situația în care server-ul, din punct de vedere hardware, nu o să mai facă față traficului mare al vizitatorilor. În acest caz, putem face două lucruri: să facem upgrade la server-ul existent sau să redirecționăm și să împărțim traficul către mai multe servere web identice (în cazul nostru, două). Această a doua variantă o vom parcurge în tutorialul următor.

Presupunem că deja avem un server web funcțional (cu sistem de operare Centos, Apache, MySQL, PHP) iar pe lângă el mai avem un server care stă degeaba și dorim să îl folosim tot pentru același site. Foarte important pentru ca această operațiune să decurgă fără probleme este ca pe server-ul nou să instalăm aceleași versiuni de soft, și aici mă refer la sistem de operare (să fie aceiași distribuție, același kernel), Apache, MySQL, PHP, etc.

La început facem setările necesare pentru MySQL replication pe server-ul existent, pe care îl vom numi server master.

În primul rând trebuie să activăm log-urile binare în MySQL și să atribuim server-ului un id (pentru că este server-ul master îi vom pune id 1). Deschidem fișierul /etc/my.cnf și adăugăm în secțiunea [mysqld]:

log-bin = mysql-bin.log
server-id = 1

Dăm un restart la MySQL:
shell# service mysqld restart

Următorul pas este să ne conectăm la consola MySQL și să creem un user cu drepturi pentru replicare:
shell# mysql -u root -p
Odată conectați la MySQL creem user-ul (user și parola se vor înlocui cu credențialele dorite) prin comenzile:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY 'parola';
mysql> FLUSH PRIVILEGES;
Fiind în continuare conectați la MySQL va trebui să blocăm scrierea în bazele de date, să notăm poziția din log-urile binare, iar apoi să facem o salvare a bazelor de date pentru a le importa pe server-ul nou:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS; - din tabelul care va fi afișat vom nota numele log-ului binar din coloana File și poziția din coloana Position
shell# mysqldump -u root -p --all-databases --master-data > dbdump.db - comanda se rulează din shell, nu din consola MySQL
mysql> UNLOCK TABLES; - cu această comandă deblocăm scrierea în bazele de date
mysql> quit;

După toate acestea, vom seta pentru replicare server-ul nou, numit în continuare server slave.

Începem prin a copia salvarea de date făcută mai devreme pe server-ul master (dbdump.db) și o importăm pe server-ul slave:
shell# mysql -u root -p < dbdump.db

Apoi deschidem fișierul /etc/my.cnf și adăugăm id-ul server-ului, precum și datele de conectare către server-ul master, creeate anterior:

server-id = 2
master-host = ip_server_master
master-user = user_mysql_server_master
master-password = parola_mysql_server_master
master-connect-retry = 60

Dăm un restart la MySQL:
shell# service mysqld restart

Nu mai avem de făcut decât să îi spunem server-ului slave din ce poziție să înceapă sincronizarea datelor de pe server-ul master, poziție care o avem notată:
mysql> SLAVE STOP;
mysql> CHANGE MASTER TO MASTER_HOST='ip_master', MASTER_USER='user_mysql', MASTER_PASSWORD='parola_mysql', MASTER_LOG_FILE='nume_log', MASTER_LOG_POS=poziție_log;
mysql> START SLAVE;
mysql> quit;

De acum orice modificare se va face în bazele de date pe server-ul master, automat schimbările se vor transmite și pe server-ul slave.

Probabil acum vă întrebați cum vom face o replicare și a fișierelor de pe un server pe celălalt. Este mult mai simplu decât cu bazele de date. Vom folosi aplicația rsync cu ajutorul căreia vom sincroniza fișierele de pe server-ul master pe server-ul slave. De ce rsync? Pentru că fișierele sunt transferate rapid și sigur prin ssh iar copierea se face diferențial, astfel se copiaza doar modificările, nu toate datele. Pentru a face această sincronizare automat vom creea un cron job pe server-ul slave care să ruleze la fiecare minut:
shell# crontab -e

* * * * * /usr/bin/rsync --progress --stats --archive -z --compress --delete -t ip_server_master:/var/www/html/folder_site/ /var/www/html/folder_site/

Trebuie avut în vedere ca firewall-urile ambelor servere să fie configurate în așa fel încât să permită conexiunile la ssh, MySQL, Apache. Totodată server-ul master trebuie să permită conectarea prin ssh a server-ului slave fără a se mai cere parola de root.

Un tutorial cam lung și un pic complicat, dar sper să vă fie de folos. Succes!

Postat de spooker Joi, 7 Noiembrie 2013 la ora 19:47 în categoria IT & C


Ai ceva de spus?

*

*

*
caractere rămase din disponibile.

Când postezi un comentariu încearcă să ții cont de aceste reguli!

      

Vremea acum

București, România
Vineri, 04 Oct 2024, ora 04:44
ico
13.6°C
Ceață
Temperatură resimțită: 13.4°C
Viteza vântului: 11 km/h
Soarele răsare la ora: 04:17
Soarele apune la ora: 15:51

Info financiar

Curs valutar BNR
actualizat Joi, 03 Oct 2024
 EUR: 4.9763 RON -0.0001
 USD: 4.5085 RON +0.0133
 GBP: 5.9133 RON -0.0618
 CHF: 5.2942 RON -0.0145
 XAU: 383.6722 RON +0.2411
Convertor valutar
Din:  În: 
Rezultat: 0

Facebook

Abonare la noutăți

Abonează-te prin email pentru a fi la curent cu ultimele articole din blog, cele mai noi fotografii sau alte noutăți de pe site. Vei primi un email pentru a confirma abonarea.

Logare

Știri pe scurt

Recomand