{"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\/pt\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt","title":{"rendered":"Orchestrator para MySQL: por que n\u00e3o se pode construir um projeto tolerante a falhas sem ele","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Todo grande projeto come\u00e7ou com alguns servidores. Primeiro havia um servidor DB, depois foram adicionados escravos para escalar a leitura. E ent\u00e3o \u2014 pare! O mestre \u00e9 \u00fanico, mas h\u00e1 muitos escravos; se um dos escravos falhar, tudo ficar\u00e1 bem, mas se o mestre falhar \u2014 ser\u00e1 um problema: tempo de inatividade, administradores se esfor\u00e7ando para levantar o servidor. O que fazer? Reservar o mestre. Meu colega Pavel j\u00e1 escreveu sobre isso. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/491044\/\">artigo<\/a><\/noindex>, n\u00e3o vou repetir. Em vez disso, vou contar por que voc\u00ea precisa urgentemente do Orchestrator para MySQL!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nComecemos pela quest\u00e3o principal: \"Como iremos alternar o c\u00f3digo para a nova m\u00e1quina quando o mestre falhar?\".<\/p>\n<ul>\n<li>O esquema com VIP (Virtual IP) \u00e9 o que eu mais gosto, e \u00e9 sobre isso que falaremos abaixo. \u00c9 o mais simples e \u00f3bvio, embora tenha uma limita\u00e7\u00e3o clara: o mestre que vamos reservar deve estar no segmento L2 com a nova m\u00e1quina, ou seja, esque\u00e7a o segundo DC. E, na verdade, se seguirmos a regra de que um grande L2 \u00e9 um mal, porque L2 \u00e9 apenas para o rack, e entre os racks \u00e9 L3, esse esquema tem ainda mais limita\u00e7\u00f5es.<\/li>\n<li>Voc\u00ea pode registrar o nome DNS no c\u00f3digo e resolv\u00ea-lo atrav\u00e9s do \/etc\/hosts. Na verdade, n\u00e3o haver\u00e1 resolu\u00e7\u00e3o. A vantagem do esquema: n\u00e3o h\u00e1 a limita\u00e7\u00e3o caracter\u00edstica do primeiro m\u00e9todo, ou seja, podemos organizar at\u00e9 mesmo cross-DC. Mas ent\u00e3o surge a quest\u00e3o \u00f3bvia, como vamos atualizar rapidamente a mudan\u00e7a em \/etc\/hosts atrav\u00e9s do Puppet-Ansible.<\/li>\n<li>Podemos modificar um pouco o segundo m\u00e9todo: em todos os servidores web, instalamos um DNS em cache, pelo qual o c\u00f3digo ir\u00e1 consultar a base mestre. Podemos definir TTL 60 para esse registro no DNS. Parece que, se implementado corretamente, \u00e9 uma boa solu\u00e7\u00e3o.<\/li>\n<li>O esquema com descoberta de servi\u00e7o, que envolve o uso de Consul e etcd.<\/li>\n<li>Uma op\u00e7\u00e3o interessante com <noindex><a rel=\"nofollow\" href=\"https:\/\/proxysql.com\/\">ProxySQL<\/a><\/noindex>. Precisamos redirecionar todo o tr\u00e1fego para MySQL atrav\u00e9s do ProxySQL, que sabe determinar quem \u00e9 o mestre no momento. A prop\u00f3sito, sobre uma das maneiras de usar esse produto, voc\u00ea pode ler em meu <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/501730\/\">artigo<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nAutor do Orchestrator, enquanto trabalhava no Github, implementou primeiro o esquema com VIP e depois alterou para o esquema com Consul.<\/p>\n<p>Esquema t\u00edpico de infraestrutura:<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator para MySQL: por que n\u00e3o se pode construir um projeto tolerante a falhas sem ele\" src=\"\/wp-content\/uploads\/2020\/05\/b08220e7aa6336229cbbfedd78afdcc3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nVou descrever imediatamente as situa\u00e7\u00f5es \u00f3bvias que devem ser consideradas:<\/p>\n<ul>\n<li>O endere\u00e7o VIP n\u00e3o deve estar configurado em nenhum dos servidores. Vamos imaginar a situa\u00e7\u00e3o: o mestre foi reiniciado, e enquanto ele est\u00e1 carregando, o Orchestrator entrou em modo failover e fez um dos escravos o novo mestre; ent\u00e3o o antigo mestre foi levantado, e agora o VIP est\u00e1 em duas m\u00e1quinas. Isso \u00e9 ruim.<\/li>\n<li>Para o orquestrador, ser\u00e1 necess\u00e1rio escrever um script que se conecte ao mestre antigo e ao novo mestre. No antigo, deve-se executar ifdown, enquanto no novo mestre \u2014 ifup vip. Seria bom tamb\u00e9m incluir neste script que, em caso de failover, a porta no switch do mestre antigo seja simplesmente desativada, para evitar qualquer split-brain.<\/li>\n<li>Depois que o Orchestrator chamar seu script para primeiro remover o VIP e\/ou desativar a porta no switch, e ent\u00e3o no novo mestre chamar o script para ativar o VIP, n\u00e3o se esque\u00e7a de avisar a todos com o comando arping que o novo VIP est\u00e1 agora aqui.<\/li>\n<li>Todos os slaves devem ter read_only=1, e assim que voc\u00ea promover um slave a mestre, ele deve ter read_only=0.<\/li>\n<li>N\u00e3o se esque\u00e7a de que qualquer slave que escolhermos pode se tornar mestre (o Orchestrator tem um mecanismo inteiro de prefer\u00eancia sobre qual slave considerar candidato ao novo mestre em primeiro lugar, qual em segundo, e qual slave n\u00e3o deve ser escolhido como mestre de forma alguma). Se um slave se tornar mestre, ele manter\u00e1 a carga do slave e ter\u00e1 a carga do mestre adicionada, isso deve ser considerado.<\/li>\n<\/ul>\n<p>\nPor que voc\u00ea definitivamente precisa do Orchestrator se n\u00e3o o tem?<\/p>\n<ul>\n<li>O Orchestrator tem uma interface gr\u00e1fica muito conveniente que exibe toda a topologia (veja a captura de tela abaixo).<\/li>\n<li>O Orchestrator pode monitorar quais slaves est\u00e3o atrasados e onde a replica\u00e7\u00e3o quebrou completamente (temos scripts anexados ao Orchestrator para enviar SMS).<\/li>\n<li>O Orchestrator informa quais slaves t\u00eam erro GTID errant.<\/li>\n<\/ul>\n<p>\nInterface do Orchestrator:<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator para MySQL: por que n\u00e3o se pode construir um projeto tolerante a falhas sem ele\" src=\"\/wp-content\/uploads\/2020\/05\/5129a85ad1c0a5db8e3ecf501cff0d0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nO que \u00e9 GTID errant?<\/p>\n<p>Existem dois requisitos principais para o funcionamento do Orchestrator:<\/p>\n<ul>\n<li>\u00c9 necess\u00e1rio que em todas as m\u00e1quinas do cluster MySQL esteja ativado o pseudo GTID, n\u00f3s temos GTID ativado.<\/li>\n<li>\u00c9 necess\u00e1rio que todos tenham um tipo de binlog, pode ser statement. Tivemos uma configura\u00e7\u00e3o em que no mestre e na maioria dos slaves era Row, e em dois historicamente ficou o modo Mixed. Como resultado, o Orchestrator simplesmente n\u00e3o quis conectar esses slaves ao novo mestre.<\/li>\n<\/ul>\n<p>\nLembre-se de que o mais importante em um slave de produ\u00e7\u00e3o \u00e9 sua consist\u00eancia com o mestre! Se tanto no mestre quanto no slave o Global Transaction ID (GTID) estiver ativado, ent\u00e3o atrav\u00e9s da fun\u00e7\u00e3o gtid_subset \u00e9 poss\u00edvel verificar se realmente as mesmas solicita\u00e7\u00f5es de modifica\u00e7\u00e3o de dados foram executadas nessas m\u00e1quinas. Voc\u00ea pode ler mais sobre isso. <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\/\">aqui<\/a><\/noindex>.<\/p>\n<p>Assim, o Orchestrator mostra a voc\u00ea atrav\u00e9s do erro GTID errante que existem transa\u00e7\u00f5es no slave que n\u00e3o est\u00e3o no master. Por que isso acontece?<\/p>\n<ul>\n<li>O read_only=1 n\u00e3o est\u00e1 ativado no slave, algu\u00e9m se conectou e executou uma solicita\u00e7\u00e3o para alterar dados.<\/li>\n<li>O super_read_only=1 n\u00e3o est\u00e1 ativado no slave, ent\u00e3o o administrador, confundindo o servidor, acessou e executou uma solicita\u00e7\u00e3o l\u00e1.<\/li>\n<li>Se voc\u00ea levou em conta os dois pontos anteriores, h\u00e1 um truque adicional: na MySQL, a solicita\u00e7\u00e3o de flush dos binlogs tamb\u00e9m \u00e9 registrada no binlog, portanto, ao primeiro flush no master e em todos os slaves, aparecer\u00e1 o GTID errante. Como evitar isso? Na vers\u00e3o perona-5.7.25-28, foi adicionada a configura\u00e7\u00e3o binlog_skip_flush_commands=1, que pro\u00edbe a grava\u00e7\u00e3o de flush nos binlogs. H\u00e1 um registro no site mysql.com. <noindex><a rel=\"nofollow\" href=\"https:\/\/bugs.mysql.com\/bug.php?id=88720\">bug<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nResumindo tudo o que foi dito. Se voc\u00ea ainda n\u00e3o deseja usar o Orchestrator no modo failover, defina-o no modo de monitoramento. Assim, voc\u00ea sempre ter\u00e1 em vista um mapa de intera\u00e7\u00e3o das m\u00e1quinas MySQL e informa\u00e7\u00f5es visuais sobre que tipo de replica\u00e7\u00e3o h\u00e1 em cada m\u00e1quina, se os slaves est\u00e3o atrasados e, o mais importante, qu\u00e3o consistentes eles est\u00e3o com o master!<\/p>\n<p>Uma pergunta \u00f3bvia: \"Como o Orchestrator deve funcionar?\" Ele deve escolher um novo master entre os atuais slaves e, em seguida, reconectar todos os slaves a ele (\u00e9 para isso que o GTID \u00e9 necess\u00e1rio; se usar o mecanismo antigo com binlog_name e binlog_pos, a mudan\u00e7a do slave do master atual para o novo simplesmente n\u00e3o \u00e9 poss\u00edvel!). Antes de termos o Orchestrator, uma vez tive que fazer tudo isso manualmente. O master antigo travou devido a um controlador Adaptec com defeito, e havia cerca de 10 slaves. Eu precisava transferir o VIP do master para um dos slaves e reconectar todos os outros slaves a ele. Quantos consoles eu tive que abrir, quantos comandos simult\u00e2neos tive que digitar\u2026 Tive que esperar at\u00e9 \u00e0s 3 da manh\u00e3, descarregar a carga de todos os slaves, exceto dois, fazer da primeira m\u00e1quina uma master, conectar imediatamente a segunda m\u00e1quina a ela, em seguida, conectar todos os outros slaves ao novo master e devolver a carga. Em resumo, um horror\u2026<\/p>\n<p>Como o Orchestrator funciona ao entrar no modo failover? \u00c9 mais f\u00e1cil demonstrar com um exemplo de situa\u00e7\u00e3o em que queremos tornar uma m\u00e1quina mais poderosa e moderna o master em vez da que est\u00e1 atualmente. <\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator para MySQL: por que n\u00e3o se pode construir um projeto tolerante a falhas sem ele\" src=\"\/wp-content\/uploads\/2020\/05\/d2afe9c74b33765e55641b34def3145e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA imagem mostra o meio do processo. O que j\u00e1 foi feito at\u00e9 este momento? N\u00f3s dissemos que quer\u00edamos fazer um determinado slave se tornar o novo master, o Orchestrator come\u00e7ou simplesmente a reconectar todos os outros slaves a ele, enquanto o novo master atua como uma m\u00e1quina de tr\u00e2nsito. Com esse esquema, n\u00e3o ocorrem erros, todos os slaves funcionam, o Orchestrator retira o VIP do antigo master, transfere para o novo, define read_only=0 e esquece do antigo master. Isso! O downtime do nosso servi\u00e7o \u00e9 o tempo de transfer\u00eancia do VIP, que leva de 2 a 3 segundos.<\/p>\n<p>Por hoje \u00e9 isso, muito obrigado a todos. Em breve haver\u00e1 um segundo artigo sobre o Orchestrator. Em um famoso filme sovi\u00e9tico chamado \"Garagem\", um personagem disse: \"Eu n\u00e3o iria com ele para a miss\u00e3o de reconhecimento!\" Ent\u00e3o, Orchestrator, eu iria com voc\u00ea para a miss\u00e3o de reconhecimento!<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 5.0.3 - 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\/pt\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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 para MySQL: por que n\u00e3o se pode construir um projeto tolerante a falhas sem ele | ProHoster","description":"Qualquer grande projeto come\u00e7ou com alguns servidores. Primeiro havia um servidor de DB, depois foram adicionados slaves para escalar a leitura. E aqui \u2014 pare!","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/orchestrator-dlya-mysql-pochemu-bez-nego-nelzya-stroit-otkazoustojchivyj-proekt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/82116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=82116"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/82116\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/82117"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=82116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=82116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=82116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}