Meniu Blog

Detalii vizitator

IP-ul tău public este 54.145.124.143, 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 noi pe blog

Calendar ortodox

Vineri, 24 Noi 2017
Sf. Sfintit Mc. Clement, Ep. Romei si Petru, Ep. Alexandriei

Recomand

Știri pe scurt

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

Bucharest, România
Vineri, 24 Noi 2017, ora 20:04
conditii meteo
4.9°C
Cer acoperit
Temperatură resimțită: 5°C
Viteza vântului: 3 km/h
Soarele răsare la ora: 7:23
Soarele apune la ora: 16:40

Info financiar

Curs valutar BNR
actualizat Vineri, 24 Noi 2017
 EUR: 4.6536 RON -0.0010
 USD: 3.9215 RON -0.0091
 GBP: 5.2229 RON -0.0058
 CHF: 3.9971 RON -0.0112
 XAU: 162.5645 RON -0.7091
Convertor valutar
Din:  În: 
Rezultat: 0

Facebook, Google Plus



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

Horoscop zilnic

Recomand