{"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\/it\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt","title":{"rendered":"Orchestrator per MySQL: perch\u00e9 \u00e8 indispensabile per costruire un progetto ad alta disponibilit\u00e0.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Qualunque grande progetto inizia con un paio di server. All'inizio c'era un server DB, poi sono stati aggiunti degli slave per scalare la lettura. E qui\u2014stop! C'\u00e8 un solo master e molti slave; se uno degli slave va via, va tutto bene, ma se va via il master\u2014sar\u00e0 un problema: downtime, gli admin in crisi devono ripristinare il server. Cosa fare? Riservare il master. Il mio collega Pavel ha gi\u00e0 scritto di questo, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/491044\/\">articolo<\/a><\/noindex>, non lo ripeter\u00f2. Invece, vi racconter\u00f2 perch\u00e9 avete assolutamente bisogno di un Orchestrator per MySQL!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nIniziamo con la domanda principale: \u00abCome passeremo il codice su una nuova macchina in caso di malfunzionamento del master?\u00bb<\/p>\n<ul>\n<li>Lo schema con VIP (Virtual IP) mi piace di pi\u00f9, di questo parleremo pi\u00f9 avanti. \u00c8 il pi\u00f9 semplice e ovvio, anche se ha un chiaro limite: il master che riserveremo deve trovarsi nello stesso segmento L2 della nuova macchina, quindi possiamo dimenticare il secondo DC. Inoltre, seguendo la regola che un grande L2 \u00e8 un male, perch\u00e9 L2 \u00e8 solo per il rack, mentre tra i rack c'\u00e8 L3, e tale schema ha ancora pi\u00f9 limitazioni.<\/li>\n<li>\u00c8 possibile registrare nel codice il nome DNS e risolverlo tramite \/etc\/hosts. In realt\u00e0 non ci sar\u00e0 risoluzione. Il vantaggio di questo schema \u00e8 che non ci sono limitazioni tipiche del primo metodo, quindi \u00e8 possibile organizzare un cross-DC. Ma poi sorge la domanda ovvia: quanto velocemente porteremo la modifica in \/etc\/hosts tramite Puppet-Ansible.<\/li>\n<li>Il secondo metodo pu\u00f2 essere leggermente modificato: su tutti i server web, installiamo un DNS cache, attraverso cui il codice acceder\u00e0 al master database. \u00c8 possibile impostare un TTL di 60 per questa registrazione nel DNS. Sembra che, se implementato correttamente, sia un buon metodo.<\/li>\n<li>Schema di service discovery, che prevede l'uso di Consul e etcd.<\/li>\n<li>Un'opzione interessante con <noindex><a rel=\"nofollow\" href=\"https:\/\/proxysql.com\/\">ProxySQL<\/a><\/noindex>. \u00c8 necessario instradare tutto il traffico MySQL attraverso ProxySQL, che sa automaticamente chi \u00e8 attualmente il master. A proposito, si pu\u00f2 leggere di una delle modalit\u00e0 di utilizzo di questo prodotto nel mio <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/501730\/\">articolo<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nL'autore di Orchestrator, lavorando in Github, ha prima implementato il primo schema con VIP e poi lo ha modificato per un schema con Consul.<\/p>\n<p>Schema tipico di infrastruttura:<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator per MySQL: perch\u00e9 \u00e8 indispensabile per costruire un progetto ad alta disponibilit\u00e0.\" src=\"\/wp-content\/uploads\/2020\/05\/b08220e7aa6336229cbbfedd78afdcc3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDescriviamo subito le situazioni ovvie che devono essere considerate:<\/p>\n<ul>\n<li>L'indirizzo VIP non deve essere registrato nella configurazione di nessuno dei server. Immaginiamo una situazione: il master si riavvia, e mentre si avvia, l'Orchestrator passa in modalit\u00e0 failover e rende uno dei slave il nuovo master; poi il vecchio master si riaccende, e ora il VIP \u00e8 presente su entrambe le macchine. Questo \u00e8 problematico.<\/li>\n<li>Per l'orchestratore sar\u00e0 necessario scrivere uno script che interagisca con il vecchio master e il nuovo master. Sul vecchio \u00e8 necessario eseguire ifdown, mentre sul nuovo master\u2014ifup vip. Sarebbe utile includere nello script anche che in caso di failover, la porta sullo switch del vecchio master venga disattivata per evitare qualsiasi split-brain.<\/li>\n<li>Dopo che l'Orchestrator ha eseguito il vostro script per prima disattivare il VIP e\/o spegnere la porta sullo switch, e poi invitato il nuovo master a eseguire lo script di attivazione del VIP, non dimenticate di usare il comando arping per avvisare tutti che il nuovo VIP ora \u00e8 qui.<\/li>\n<li>Tutti gli slave devono avere read_only=1, e non appena promuovete uno slave a master, deve diventare read_only=0.<\/li>\n<li>Non dimenticate che qualsiasi slave pu\u00f2 diventare master, selezionato per questo (Orchestrator ha un intero meccanismo di preferenze per determinare quale slave considerare prima come candidato a nuovo master, quale in secondo luogo e quale slave non dovrebbe mai essere scelto come master in nessuna circostanza). Se uno slave diventa master, rimarr\u00e0 con il carico dello slave e si aggiunger\u00e0 il carico del master, questo deve essere considerato.<\/li>\n<\/ul>\n<p>\nPerch\u00e9 avete davvero bisogno di Orchestrator se non lo avete?<\/p>\n<ul>\n<li>Orchestrator ha un'interfaccia grafica molto comoda che mostra l'intera topologia (vedi screenshot qui sotto).<\/li>\n<li>Orchestrator pu\u00f2 monitorare quali slave sono in ritardo e dove la replicazione \u00e8 completamente rotta (abbiamo script per inviare SMS collegati a Orchestrator).<\/li>\n<li>Orchestrator ti informa su quali slave ci sono errori GTID erranti.<\/li>\n<\/ul>\n<p>\nInterfaccia di Orchestrator:<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator per MySQL: perch\u00e9 \u00e8 indispensabile per costruire un progetto ad alta disponibilit\u00e0.\" src=\"\/wp-content\/uploads\/2020\/05\/5129a85ad1c0a5db8e3ecf501cff0d0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCos'\u00e8 il GTID errante?<\/p>\n<p>Ci sono due requisiti principali per l'operativit\u00e0 di Orchestrator:<\/p>\n<ul>\n<li>\u00c8 necessario che su tutte le macchine del cluster MySQL sia abilitato il pseudo GTID, noi abbiamo abilitato il GTID.<\/li>\n<li>\u00c8 necessario avere un unico tipo di binlog ovunque, si pu\u00f2 usare statement. Avevamo una configurazione in cui sul master e sulla maggior parte degli slave era impostato Row, mentre su due \u00e8 rimasto storicamente il modo Mixed. Di conseguenza, Orchestrator non ha voluto collegare questi slave al nuovo master.<\/li>\n<\/ul>\n<p>\nRicordate che la cosa pi\u00f9 importante in uno slave di produzione \u00e8 la sua coerenza con il master! Se sia sul master che nello slave \u00e8 abilitato il Global Transaction ID (GTID), attraverso la funzione gtid_subset \u00e8 possibile verificare se sulle macchine sono stati eseguiti gli stessi comandi di modifica dei dati. Puoi leggere di pi\u00f9 su questo. <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\/\">qui<\/a><\/noindex>.<\/p>\n<p>Cos\u00ec, Orchestrator ti segnala tramite l'errore GTID errant che nello slave ci sono transazioni che non sono presenti sul master. Perch\u00e9 succede questo?<\/p>\n<ul>\n<li>Lo slave non ha abilitato read_only=1, qualcuno si \u00e8 connesso ed ha eseguito una richiesta di modifica dei dati.<\/li>\n<li>Lo slave non ha abilitato super_read_only=1, quindi un admin, confondendo il server, \u00e8 entrato ed ha eseguito la richiesta l\u00ec.<\/li>\n<li>Se hai considerato entrambi i punti precedenti, c'\u00e8 un'altra astuzia: in MySQL, il comando di flush dei binlog viene anch'esso registrato nel binlog, quindi al primo flush sul master e su tutti i slave apparir\u00e0 un GTID errante. Come evitarlo? Nella versione perona-5.7.25-28 \u00e8 stata introdotta l'impostazione binlog_skip_flush_commands=1, che vieta di scrivere il flush nei binlog. Sul sito mysql.com \u00e8 disponibile <noindex><a rel=\"nofollow\" href=\"https:\/\/bugs.mysql.com\/bug.php?id=88720\">bug<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nIn sintesi, se non vuoi ancora utilizzare Orchestrator in modalit\u00e0 failover, impostalo in modalit\u00e0 monitoraggio. In questo modo avrai sempre davanti a te una mappa delle interazioni delle macchine MySQL e informazioni chiare sul tipo di replicazione presente su ciascuna macchina, se gli slave sono in ritardo e, soprattutto, quanto sono coerenti con il master!<\/p>\n<p>La domanda \u00e8 ovvia: \u00abCome dovrebbe funzionare Orchestrator?\u00bb. Dovrebbe selezionare un nuovo master tra gli attuali slave e poi ricollegare tutti gli slave ad esso (\u00e8 proprio per questo che \u00e8 necessario il GTID; se si utilizza il vecchio meccanismo con binlog_name e binlog_pos, il passaggio dello slave dall'attuale master al nuovo \u00e8 semplicemente impossibile!). Prima che avessimo Orchestrator, una volta ho dovuto fare tutto questo manualmente. Il vecchio master si bloccava a causa di un controller Adaptec difettoso, e avevo circa 10 slave. Dovevo trasferire il VIP dal master a uno degli slave e ricollegare a esso tutti gli altri slave. Quante console ho dovuto aprire, quante comandi simultanei eseguire\u2026 Ho dovuto aspettare fino alle 3 di notte, alleggerire il carico da tutti gli slave, tranne due, rendere master la prima macchina di due, collegare subito la seconda macchina a essa, e poi ricollegare tutti gli altri slave al nuovo master e ripristinare il carico. In sintesi, un incubo...<\/p>\n<p>Come funziona Orchestrator quando passa in modalit\u00e0 failover? \u00c8 pi\u00f9 facile mostrarlo con un esempio di situazione in cui vogliamo rendere master una macchina pi\u00f9 potente e moderna rispetto a quella attuale. <\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator per MySQL: perch\u00e9 \u00e8 indispensabile per costruire un progetto ad alta disponibilit\u00e0.\" src=\"\/wp-content\/uploads\/2020\/05\/d2afe9c74b33765e55641b34def3145e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nL'immagine mostra il cuore del processo. Cosa \u00e8 stato fatto fino a questo momento? Abbiamo detto che vogliamo rendere un certo slave il nuovo master, e l'Orchestrator ha iniziato semplicemente a riconnettere tutti gli altri slave a lui, mentre il nuovo master funge da macchina di transito. Con questa configurazione non ci sono errori, tutti gli slave funzionano, l'Orchestrator rimuove il VIP dal vecchio master, lo trasferisce sul nuovo, imposta read_only=0 e dimentica il vecchio master. Fatto! Il downtime del nostro servizio \u00e8 il tempo necessario per trasferire il VIP, che sono 2-3 secondi.<\/p>\n<p>Questo \u00e8 tutto per oggi, grazie a tutti. Presto ci sar\u00e0 un secondo articolo su Orchestrator. In un famoso film sovietico \"Garage\", un personaggio ha detto: \"Non ci andrei in esplorazione con lui!\" Ebbene, Orchestrator, con te ci andrei in esplorazione!<br \/>\n<br \/>Fonte: <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 4.9.10 - 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! \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\" \/>\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\/it\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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! \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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 per MySQL: perch\u00e9 \u00e8 essenziale per costruire un progetto ad alta disponibilit\u00e0 | ProHoster","description":"Qualsiasi grande progetto inizia con un paio di server. Inizialmente c'era un solo server DB, poi sono stati aggiunti slave per scalare la lettura. E qui \u2014 fermati! Un master e tanti slave; se uno degli slave va via, va tutto bene, ma se va via il master \u2014 \u00e8 un disastro: downtime, gli admin agitati cercano di riavviare il server. Cosa fare? Riservare il master. Il mio","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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! \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","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/82116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=82116"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/82116\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/82117"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=82116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=82116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=82116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}