• Početna
  • O nama
  • LimundoGrad
  • Limundo
  • Kupindo
  • Sigurnost
  • IT
  • Zabava i učenje
  • Plaćanje
  • API
LimundoGrad blog
  • Početna
  • O nama
  • LimundoGrad
  • Limundo
  • Kupindo
  • Sigurnost
  • IT
  • Zabava i učenje
  • Plaćanje
  • API
Home  /  IT  /  MySQL, Maria i multi-master replikacija

MySQL, Maria i multi-master replikacija

Autor:Nikola Krgović
14. фебруара 2013. IT profi 1 komentar

MySQL nije dobio ime kao “moja sql baza”. Autor iste, Michael Widenius (zvani Monty), nazvao ga je po svojoj ćerci My. Kada je Sun kupio MySQL A.B. (koji je kasnije preuzeo Oracle), Monty je napustio firmu i pokrenuo nov projekat – naprednu verziju te baze, pod imenom MariaDB, ovog puta po svojoj mlađoj ćerci. Ovih dana, pred Dan zaljubljenih i ja razmišljam o mojoj Mariji i kako bi mogao da joj posvetim bar ovaj tekst, koji će izaći baš na Dan zaljubljenih. Zato, ovog puta, nešto više o bazama – i to konkretno o multi-master replikaciji. Tema je zanimljiva i obimna, a nema tekstova na našem jeziku, pa koristim priliku da napravim jedno, nadam se, korisno uputstvo. Verujem da vam svima znači da znate da mi tu naprednu tehnologiju koristimo već neko vreme i da se pokazala sjajno i u praksi.

Konkretno, multi-master replikacija predstavlja metod povezivanja više MySQL servera u složenu replikacionu šemu koja omogućava dve prednosti:

    • U slučaju bilo kakvog otkaza jednog pojedinačnog servera sistem nesmetano nastavlja sa radom.
    • Sve vreme nema rezervnih servera, tj. nema DB servera koji se ne koriste, već im se samo, dinamički menja uloga.

U našem primeru ćemo pričati o tri servera, dva koji su masteri i treći koji je čist slave. Kao OS koristimo CentOS 6, uz dodatni EPEL repozitorijum, a kao bazu Percona Server with XtraDB. Sistem će uključivati i četvrtu mašinu, koja se koristi za upravljanje. Ovo nije zahtevan proces, ali zahteva jedan dodatni računar. Preporuka je da to bude neka mašina koju inače koristite za praćenje sistema, gde vam se vrti npr. SNMP i sl. Svakom serveru ćemo dodeliti još jednu dodatnu, virtuelnu, adresu koju će aplikacije koristiti za pristup čitanju, plus ćemo odvojiti jednu koja će se ekskluzivno koristiti za upis. Evo i šeme:

DB Master 1: 192.168.10.10

DB Master 2: 192.168.10.11

DB Slave 1: 192.168.10.12

Virtuelni IP za upis: 192.168.10.200

Virtuelni IP za čitanje: 192.168.10.201-203

Prvi korak je podešavanje servera. Svaki server treba da ima svoj ID, replikaciju ćemo prebaciti na ROW based i podesićemo različite auto-increment vrednosti. Ideja je da onemogućimo preklapanje ID-eva koje autoincrement dodeljuje. Evo primera kako bi izgledao deo u my.cnf

# DB Master 1
binlog_format = ‘ROW’
server-id=1
auto-increment-offset = 1
auto-increment-increment = 4

# DB Master 2
binlog_format = ‘ROW’
server-id=2
auto-increment-offset = 2
auto-increment-increment = 4

# DB Slave 1
server-id=3
read_only = 1

Slave namerno stavljamo u read-only mod, da bi izbegli slučajne upise na slave. Ovakva konfiguracija kada upis ode na slave vraća grešku, što je nešto što se obično jako brzo primeti. Ako bi dopustila upis, taj upis bi bio samo na slave-u, a takvi problemi se jako teško detektuju.

Jednom kada smo ovo odradili, treba dodati naloge. Ideja je da dodamo tri naloga, jedan za replikaciju, drugi za praćenje i treći koji se koristi za automatsku administraciju. Dodajemo ih na sva tri servera:

GRANT REPLICATION CLIENT ON *.* TO ‘mmm_monitor’@’192.168.0.%’ IDENTIFIED BY ‘monitor_password’;
GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent’@’192.168.0.%’ IDENTIFIED BY ‘agent_password’;
GRANT REPLICATION SLAVE ON *.* TO ‘replication’@’192.168.0.%’ IDENTIFIED BY ‘replication_password’;

Sada je pravi korak za početak replikacije. Počećemo na prvom masteru, na kome ćemo zaustaviti bazu sa:

FLUSH TABLES WITH READ LOCK;

Sve vreme ostajući ulogovani na bazu, u drugom terminalu radimo mysqldump cele baze. Kada je dump završen pogledaćemo i zapisati status:

mysql> SHOW MASTER STATUS; 
+------------------+----------+--------------+------------------+ 
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
+------------------+----------+--------------+------------------+ 
| mysql-bin.000002 | 374 | | | 
+------------------+----------+--------------+------------------+ 
1 row in set (0.00 sec)

Sada se taj backup importuje na oba preostala servera i oba se postavljaju kao slave-ovi ovog mastera sa :

CHANGE MASTER TO master_host='192.168.0.10', master_port=3306, master_user='replication', master_password='replication_password', master_log_file='mysql-bin.000002', master_log_pos=374;

Zatim, korak nazad – na isti način ćemo pogledati status na našem drugom masteru i postaviti prvi master kao njegov slave. Kada je sve ovo završeno možemo da pustimo lock:

UNLOCK TABLES;

Konačno, na sva tri servera, pokrećemo replikaciju komandom:

START SLAVE;

Ovo je kraj podešavanja same baze, sada treba instalirati i početi sa podešavanjem mysql-mmm softvera.

Da ovaj tekst ne bi bio preobiman, taj deo ćemo obraditi sledećeg meseca.

Podeli tekst
Share on Facebook
Share on Twitter
Share on Whatsapp
 Prethodni post Unapređenja Limundo Cash*-a
Sledeći post   Državnost Srbije kroz numizmatiku

Povezani postovi

  • Ko su Superkupci u LimundoGradu?

    25. јула 2018.
  • Spisak kupaca – detaljnije pojašnjenje

    29. јуна 2018.
  • Intervju sa prodavcem adresa – U životu je najvažnije imati cilj

    21. фебруара 2018.

1 komentar

  1. Povratni ping: MySQL, Maria i multi-master replikacija
Advertisement

Popularno na Kupindu

U potrazi ste za udžbenicima za osnovnu ili srednju školu? Pogledajte na Kupindu:

➡️ Udžbenici za osnovnu školu
➡️ Udžbenici za srednju školu

Ovde ćete pronaći udžbenike za svaki razred i izdanja gotovo svih izdavača koje današnje škole traže. Uštedite na kupovini udžbenika.

  • Najpopularnije
  • Poslednji postovi
  • Za sledećih 15 Vladimir Nikolić 22. маја 2021. Limundo 607
  • Hoću da znam šta je neko kupio i prodao Vladan Jović 16. децембра 2013. LimundoGrad 355
  • Kako da ocenim prodavca (a da to bude ispravno)? Ana Mladenović 12. марта 2013. LimundoGrad 248
  • Veštačko nuđenje – istine i laži Vladan Jović 11. јуна 2013. Limundo 234
  • Cenovnik + opcije + brzina Aleksandra Vuković 15. марта 2012. Blog 211
  • Dani ploča na Kupindu: Vinil ne izlazi iz mode! Dunja Stojković 13. марта 2025. Kupindo
  • Top 10 predmeta sa Limunda i Kupinda u 2024. godini! Dunja Stojković 31. децембра 2024. LimundoGrad
  • Digital Awards 2024: Limundo osvojio nagradu za najbolju radijsku kampanju! Dunja Stojković 30. септембра 2024. LimundoGrad
  • Polovna odeća kao znak stila: 10 vrhunskih modnih brendova koje nećete naći u tržnom centru Ivana Lučić 26. августа 2024. LimundoGrad
  • Uživanje u letnjem danu – detalji koji čine baštu posebnom Dunja Stojković 1. августа 2024. Zabava i učenje

Skorašnji komentari

  • Jovana Milenković Arizanović на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • Marija Protic на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • Jovana Milenković Arizanović на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • janoš на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • janoš на Tri najjeftinija načina za slanje paketa u LimundoGradu

Vremeplov

© 2008. LimundoGrad d.o.o. Creative Commons License Ovo delo je licencirano pod uslovima licence Creative Commons Autorstvo-Nekomercijalno-Bez prerada 4.0 Međunarodna licenca
LimundoGrad koristi kolačiće u statističke i marketinške svrhe. Nastavkom korišćenja sajta smatramo da ste pristali na upotrebu kolačića.OKViše informacija