{"id":82116,"date":"2020-05-19T13:42:54","date_gmt":"2020-05-19T11:42:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt"},"modified":"2020-05-19T13:42:54","modified_gmt":"2020-05-19T11:42:54","slug":"orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt","title":{"rendered":"Orchestrator pentru MySQL: de ce nu po\u021bi construi un proiect de rezisten\u021b\u0103 f\u0103r\u0103 el","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Orice proiect major a \u00eenceput cu c\u00e2teva servere. La \u00eenceput a fost un server DB, apoi s-au ad\u0103ugat slave pentru a scala citirile. \u0218i aici intervine o problem\u0103! Exist\u0103 un singur master \u0219i multe slave; dac\u0103 unul dintre slave se defecteaz\u0103, totul va fi bine, dar dac\u0103 masterul se defecteaz\u0103, va fi r\u0103u: downtime, administratorii vor \u00eencerca s\u0103 reporneasc\u0103 serverul. Ce trebuie s\u0103 facem? S\u0103 rezerv\u0103m masterul. Colegul meu Pavel a scris deja despre asta, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/491044\/\">articol<\/a><\/noindex>, dar eu nu voi repeta. \u00cen schimb, voi explica de ce ave\u021bi nevoie de un Orchestrator pentru MySQL!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nS\u0103 \u00eencepem cu \u00eentrebarea principal\u0103: \u201eCum vom comuta codul pe o nou\u0103 ma\u0219in\u0103 \u00een cazul \u00een care masterul se defecteaz\u0103?\u201d<\/p>\n<ul>\n<li>Schema cu VIP (IP virtual) \u00eemi place cel mai mult, despre ea vom discuta mai jos. Este cea mai simpl\u0103 \u0219i evident\u0103, de\u0219i are o limitare clar\u0103: masterul pe care \u00eel vom rezerva trebuie s\u0103 se afle \u00een segmentul L2 cu noua ma\u0219in\u0103, adic\u0103 putem uita de al doilea DC. De asemenea, dac\u0103 respect\u0103m regula c\u0103 un L2 mare este o problem\u0103, deoarece L2 este doar \u00eentre rack-uri, iar \u00eentre rack-uri avem L3, o astfel de schem\u0103 are \u0219i mai multe limit\u0103ri.<\/li>\n<li>Putem scrie numele DNS \u00een cod \u0219i s\u0103-l rezolv\u0103m prin \/etc\/hosts. De fapt, nu va exista o rezolvare. Avantajul schemei este c\u0103 nu exist\u0103 limitarea specific\u0103 pentru prima metod\u0103, ceea ce permite organizarea chiar \u0219i a cross-DC. Dar apoi apare o \u00eentrebare evident\u0103, c\u00e2t de repede vom aduce modificarea \u00een \/etc\/hosts prin Puppet-Ansible.<\/li>\n<li>Putem modifica pu\u021bin a doua metod\u0103: pe toate serverele web s\u0103 instal\u0103m un DNS de cache, prin care codul va accesa baza de date master. Putem seta TTL 60 pentru aceast\u0103 \u00eenregistrare DNS. Pare c\u0103, cu o implementare corect\u0103, metoda este bun\u0103.<\/li>\n<li>Schema cu descoperirea serviciilor, care implic\u0103 utilizarea Consul \u0219i etcd.<\/li>\n<li>O variant\u0103 interesant\u0103 cu <noindex><a rel=\"nofollow\" href=\"https:\/\/proxysql.com\/\">ProxySQL<\/a><\/noindex>. Este necesar s\u0103 redirec\u021bion\u0103m tot traficul c\u0103tre MySQL prin ProxySQL, care poate determina cine este acum master. Apropo, despre una dintre utiliz\u0103rile acestui produs, pute\u021bi citi \u00een postarea mea <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/501730\/\">pe care l-a\u021bi citit<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nAutorul Orchestrator, lucr\u00e2nd la Github, a implementat ini\u021bial prima schem\u0103 cu VIP, apoi a adaptat schema cu consul.<\/p>\n<p>Schema tipic\u0103 de infrastructur\u0103:<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator pentru MySQL: de ce nu po\u021bi construi un proiect de rezisten\u021b\u0103 f\u0103r\u0103 el\" src=\"\/wp-content\/uploads\/2020\/05\/b08220e7aa6336229cbbfedd78afdcc3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nVoi descrie imediat situa\u021biile evidente care trebuie luate \u00een considerare:<\/p>\n<ul>\n<li>Adresa VIP nu trebuie s\u0103 fie specificat\u0103 \u00een configura\u021bia niciunuia dintre servere. S\u0103 ne imagin\u0103m situa\u021bia: masterul s-a repornit, iar \u00een timp ce se \u00eencarc\u0103, Orchestrator a trecut \u00een modul failover \u0219i a f\u0103cut din unul dintre slave-uri master; apoi vechiul master s-a repornit, iar acum VIP este pe dou\u0103 ma\u0219ini. Aceasta este o problem\u0103.<\/li>\n<li>Pentru orchestrator, va trebui s\u0103 scriem un script pentru a interac\u021biona cu vechiul \u0219i noul maestru. Pe vechi trebuie s\u0103 execut\u0103m ifdown, iar pe noul maestru \u2014 ifup vip. Ar fi bine s\u0103 ad\u0103ug\u0103m \u00een acest script c\u0103, \u00een caz de failover, portul de pe switch-ul vechiului maestru va fi pur \u0219i simplu dezactivat, pentru a evita orice split-brain.<\/li>\n<li>Dup\u0103 ce Orchestrator a apelat scriptul dumneavoastr\u0103 pentru a dezactiva mai \u00eent\u00e2i VIP \u0219i\/sau pentru a dezactiva portul de pe switch, iar apoi pe noul maestru a apelat scriptul pentru activarea VIP-ului, nu uita\u021bi s\u0103 folosi\u021bi comanda arping pentru a informa pe to\u021bi c\u0103 noul VIP este acum aici.<\/li>\n<li>Toate slavele trebuie s\u0103 aib\u0103 setarea read_only=1, iar imediat ce promova\u021bi un slave la statutul de maestru, aceasta trebuie s\u0103 devin\u0103 read_only=0.<\/li>\n<li>Nu uita\u021bi c\u0103 oricare slave poate deveni maestru, pe care l-am selectat pentru aceasta (Orchestrator dispune de un mecanism \u00eentreg de preferin\u021be pentru a selecta care slave s\u0103 fie considerate ca poten\u021biali mae\u0219tri \u00een primul r\u00e2nd, \u00een al doilea r\u00e2nd \u0219i care slave s\u0103 nu fie deloc selectate ca mae\u0219tri). Dac\u0103 un slave devine maestru, el va p\u0103stra \u00eenc\u0103rc\u0103tura slave-ului \u0219i va ad\u0103uga \u00eenc\u0103rc\u0103tura maestrului, lucru ce trebuie avut \u00een vedere.<\/li>\n<\/ul>\n<p>\nDe ce ave\u021bi nevoie neap\u0103rat de Orchestrator, dac\u0103 nu \u00eel ave\u021bi?<\/p>\n<ul>\n<li>Orchestrator are o interfa\u021b\u0103 grafic\u0103 foarte prietenoas\u0103, care afi\u0219eaz\u0103 \u00eentreaga topologie (consulta\u021bi captura de ecran de mai jos).<\/li>\n<li>Orchestrator poate urm\u0103ri care slave au \u00eent\u00e2rziat \u0219i unde replicarea a e\u0219uat complet (avem scripturi integrate \u00een Orchestrator pentru a trimite SMS-uri).<\/li>\n<li>Orchestrator v\u0103 indic\u0103 pe care slave exist\u0103 erori GTID errant.<\/li>\n<\/ul>\n<p>\nInterfa\u021ba Orchestrator:<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator pentru MySQL: de ce nu po\u021bi construi un proiect de rezisten\u021b\u0103 f\u0103r\u0103 el\" src=\"\/wp-content\/uploads\/2020\/05\/5129a85ad1c0a5db8e3ecf501cff0d0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCe este GTID errant?<\/p>\n<p>Exist\u0103 dou\u0103 cerin\u021be principale pentru func\u021bionarea Orchestrator:<\/p>\n<ul>\n<li>Este necesar ca pe toate ma\u0219inile din clusterul MySQL s\u0103 fie activat pseudo GTID, iar la noi este activat GTID.<\/li>\n<li>Este necesar ca \u00een toate locurile s\u0103 existe acela\u0219i tip de binloguri, care poate fi statement. Am avut o astfel de configura\u021bie, unde pe maestru \u0219i pe majoritatea slave-urilor era setat Row, iar pe dou\u0103 dintre ele a r\u0103mas istoric modul Mixed. Drept urmare, aceste slave Orchestrator pur \u0219i simplu nu a dorit s\u0103 le conecteze la noul maestru.<\/li>\n<\/ul>\n<p>\nRe\u021bine\u021bi c\u0103 cel mai important lucru pentru un slave \u00een produc\u021bie este consisten\u021ba sa cu maestrul! Dac\u0103 at\u00e2t pe maestru, c\u00e2t \u0219i pe slave este activat Global Transaction ID (GTID), prin func\u021bia gtid_subset se poate verifica dac\u0103 acelea\u0219i interog\u0103ri de modificare a datelor au fost efectuate cu adev\u0103rat pe aceste ma\u0219ini. Pute\u021bi citi mai multe despre acest subiect. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.percona.com\/blog\/2014\/05\/19\/errant-transactions-major-hurdle-for-gtid-based-failover-in-mysql-5-6\/\">aici<\/a><\/noindex>.<\/p>\n<p>Astfel, Orchestrator v\u0103 arat\u0103 prin eroarea GTID errant c\u0103 pe slave exist\u0103 tranzac\u021bii care nu sunt pe master. De ce se \u00eent\u00e2mpl\u0103 asta?<\/p>\n<ul>\n<li>Pe slave, read_only=1 nu este activat, iar cineva s-a conectat \u0219i a executat o interogare de modificare a datelor.<\/li>\n<li>Pe slave, super_read_only=1 nu este activat, astfel \u00eenc\u00e2t un administrator, confund\u00e2nd serverele, s-a conectat \u0219i a executat o interogare acolo.<\/li>\n<li>Dac\u0103 a\u021bi luat \u00een considerare ambele puncte anterioare, exist\u0103 \u00eenc\u0103 o capcan\u0103: \u00een MySQL, interogarea de flush a binlogurilor este, de asemenea, \u00eenregistrat\u0103 \u00een binlog, deci la prima flush pe master \u0219i pe toate slavele va ap\u0103rea GTID errant. Cum se poate evita acest lucru? \u00cen versiunea perona-5.7.25-28 a fost introdus\u0103 setarea binlog_skip_flush_commands=1, care interzice scrierea flush-urilor \u00een binloguri. Pe site-ul mysql.com exist\u0103 informa\u021bii despre aceasta. <noindex><a rel=\"nofollow\" href=\"https:\/\/bugs.mysql.com\/bug.php?id=88720\">o eroare<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nRezum\u00e2nd cele de mai sus. Dac\u0103 \u00eenca nu dori\u021bi s\u0103 folosi\u021bi Orchestrator \u00een modul failover, atunci seta\u021bi-l \u00een modul de observa\u021bie. A\u0219a ve\u021bi avea \u00eentotdeauna la \u00eendem\u00e2n\u0103 o hart\u0103 a interac\u021biunii \u00eentre ma\u0219inile MySQL \u0219i informa\u021bii vizuale despre tipul de replicare de pe fiecare ma\u0219in\u0103, dac\u0103 slavele sunt \u00eent\u00e2rziate \u0219i, cel mai important, c\u00e2t de consistente sunt cu masterul!<\/p>\n<p>O \u00eentrebare evident\u0103: \u201eCum ar trebui s\u0103 func\u021bioneze Orchestrator?\u201d. El ar trebui s\u0103 aleag\u0103 un nou master dintre slavele curente \u0219i apoi s\u0103 le reconecteze pe toate la acesta (tocmai de aceea este necesar GTID; dac\u0103 s-ar folosi mecanismul vechi cu binlog_name \u0219i binlog_pos, atunci nu ar fi posibil s\u0103 se schimbe slavele de la masterul curent la unul nou!). P\u00e2n\u0103 s\u0103 avem Orchestrator, a trebuit odat\u0103 s\u0103 fac totul manual. Vechea ma\u0219in\u0103 master s-a blocat din cauza unui controler defectuos Adaptec, av\u00e2nd aproximativ 10 slave. A trebuit s\u0103 transfer VIP-ul de pe master pe una dintre slave \u0219i s\u0103 reconectez toate celelalte slave la ea. C\u00e2te console a trebuit s\u0103 deschid, c\u00e2te comenzi simultane a trebuit s\u0103 introduc\u2026 A trebuit s\u0103 a\u0219tept p\u00e2n\u0103 la 3 diminea\u021ba, s\u0103 iau sarcina de pe toate slavele, cu excep\u021bia a dou\u0103, s\u0103 fac prima ma\u0219in\u0103 din aceste dou\u0103 master, s\u0103 le conectez imediat pe a doua ma\u0219in\u0103, apoi s\u0103 reconectez toate celelalte slave la noul master \u0219i s\u0103 re\u00eentorc sarcina. \u00cen general, a fost un co\u0219mar...<\/p>\n<p>Cum func\u021bioneaz\u0103 Orchestrator c\u00e2nd trece \u00een modul failover? Cel mai simplu este s\u0103 ilustrezi prin exemplul unei situa\u021bii \u00een care dorim s\u0103 facem master o ma\u0219in\u0103 mai puternic\u0103, mai modern\u0103 dec\u00e2t cea actual\u0103. <\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator pentru MySQL: de ce nu po\u021bi construi un proiect de rezisten\u021b\u0103 f\u0103r\u0103 el\" src=\"\/wp-content\/uploads\/2020\/05\/d2afe9c74b33765e55641b34def3145e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nImaginea ilustreaz\u0103 mijlocul procesului. Ce s-a realizat deja p\u00e2n\u0103 \u00een acest moment? Am spus c\u0103 dorim s\u0103 facem un anumit slave noul master, iar Orchestratorul a \u00eenceput pur \u0219i simplu s\u0103 reconecteze toate celelalte slave la el, \u00een timp ce noul master \u00eendepline\u0219te rolul de ma\u0219in\u0103 de tranzi\u021bie. \u00cen aceast\u0103 schem\u0103 nu apar erori, toate slavele func\u021bioneaz\u0103, Orchestratorul elimin\u0103 VIP-ul de pe vechiul master, \u00eel transfer\u0103 pe noul master, seteaz\u0103 read_only=0 \u0219i uit\u0103 de vechiul master. Tot! Timpul de nefunc\u021bionare al serviciului nostru este timpul necesar pentru transferul VIP-ului, adic\u0103 2-3 secunde.<\/p>\n<p>Asta e tot pentru azi, mul\u021bumesc tuturor. \u00cen cur\u00e2nd va ap\u0103rea al doilea articol despre Orchestrator. \u00centr-un cunoscut film sovietic \u201eGaraj\u201d, un personaj a spus: \u201eNu m-a\u0219 duce cu el \u00een recunoa\u0219tere!\u201d A\u0219a c\u0103 Orchestrator, eu m-a\u0219 duce cu tine \u00een recunoa\u0219tere!<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/501994\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041b\u044e\u0431\u043e\u0439 \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0441 \u043f\u0430\u0440\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. C\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b \u043e\u0434\u0438\u043d DB-\u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0442\u043e\u043c \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043b\u0435\u0439\u0432\u044b, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435. \u0418 \u0442\u0443\u0442 \u2014 \u0441\u0442\u043e\u043f! \u041c\u0430\u0441\u0442\u0435\u0440 \u043e\u0434\u0438\u043d, \u0430 \u0441\u043b\u0435\u0439\u0432\u043e\u0432 \u043c\u043d\u043e\u0433\u043e; \u0435\u0441\u043b\u0438 \u0443\u0439\u0434\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043b\u0435\u0439\u0432\u043e\u0432, \u0442\u043e \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u0430 \u0435\u0441\u043b\u0438 \u0443\u0439\u0434\u0435\u0442 \u043c\u0430\u0441\u0442\u0435\u0440 \u2014 \u0431\u0443\u0434\u0435\u0442 \u043f\u043b\u043e\u0445\u043e: \u0434\u0430\u0443\u043d\u0442\u0430\u0439\u043c, \u0430\u0434\u043c\u0438\u043d\u044b \u0432 \u043c\u044b\u043b\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u044e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440. \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c? \u0420\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0442\u0435\u0440. \u041c\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":82117,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-82116","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041b\u044e\u0431\u043e\u0439 \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0441 \u043f\u0430\u0440\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. C\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b \u043e\u0434\u0438\u043d DB-\u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0442\u043e\u043c \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043b\u0435\u0439\u0432\u044b, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435. \u0418 \u0442\u0443\u0442 \u2014 \u0441\u0442\u043e\u043f!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Orchestrator \u0434\u043b\u044f MySQL: \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041b\u044e\u0431\u043e\u0439 \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0441 \u043f\u0430\u0440\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. C\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b \u043e\u0434\u0438\u043d DB-\u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0442\u043e\u043c \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043b\u0435\u0439\u0432\u044b, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435. \u0418 \u0442\u0443\u0442 \u2014 \u0441\u0442\u043e\u043f!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-19T11:42:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-19T11:42:54+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Orchestrator pentru MySQL: de ce nu po\u021bi construi un proiect tolerant la erori f\u0103r\u0103 el | ProHoster","description":"Orice proiect mare a \u00eenceput cu c\u00e2teva servere. La \u00eenceput a fost un singur server DB, apoi i s-au ad\u0103ugat slave pentru a extinde lectura. \u0218i aici \u2014 stop!","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Orchestrator \u0434\u043b\u044f MySQL: \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 | ProHoster","og:description":"\u041b\u044e\u0431\u043e\u0439 \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0441 \u043f\u0430\u0440\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. C\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b \u043e\u0434\u0438\u043d DB-\u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0442\u043e\u043c \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043b\u0435\u0439\u0432\u044b, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435. \u0418 \u0442\u0443\u0442 \u2014 \u0441\u0442\u043e\u043f!","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-19T11:42:54+00:00","article:modified_time":"2020-05-19T11:42:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"82116","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:44:22","updated":"2022-10-07 20:28:08","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/82116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=82116"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/82116\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/82117"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=82116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=82116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=82116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}