{"id":2966,"date":"2026-09-18T17:50:57","date_gmt":"2026-09-18T20:50:57","guid":{"rendered":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/"},"modified":"2026-09-18T17:50:57","modified_gmt":"2026-09-18T20:50:57","slug":"aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql","status":"publish","type":"post","link":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/","title":{"rendered":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA"},"content":{"rendered":"<p>Nesta aula final do curso <strong>MySQL \u2014 Do Zero ao Avan\u00e7ado<\/strong>, voc\u00ea vai dominar uma das compet\u00eancias mais cr\u00edticas para qualquer profissional de banco de dados: colocar o <strong>MySQL em produ\u00e7\u00e3o<\/strong> de verdade. N\u00e3o se trata apenas de subir uma inst\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\u00edvel, tolerante a falhas e preparada para suportar cargas reais de aplica\u00e7\u00f5es corporativas. Ao longo desta aula, vamos trabalhar com duas ferramentas que, combinadas, formam a espinha dorsal de muitos ambientes cr\u00edticos que nossos especialistas utilizam diariamente na <strong>JRT Technology Solutions<\/strong>: o <strong>ProxySQL<\/strong> como camada de roteamento, balanceamento de carga e failover transparente para a aplica\u00e7\u00e3o; e o <strong>MHA (MySQL High Availability)<\/strong> como orquestrador de failover para a camada de replica\u00e7\u00e3o. Voc\u00ea vai aprender exatamente como essas pe\u00e7as se encaixam, por que elas existem e como configur\u00e1-las passo a passo, sem atalhos, sem resumos vagos e sem &#8220;siga o processo padr\u00e3o&#8221;.<\/p>\n<p>A import\u00e2ncia de dominar esses conceitos n\u00e3o pode ser subestimada. Em ambientes de produ\u00e7\u00e3o, o banco de dados \u00e9 o estado da aplica\u00e7\u00e3o. Cada minuto de indisponibilidade pode representar perda de receita, degrada\u00e7\u00e3o de reputa\u00e7\u00e3o e impacto direto na experi\u00eancia do usu\u00e1rio. Por isso, a alta disponibilidade n\u00e3o \u00e9 um luxo: \u00e9 um requisito de neg\u00f3cio. O <strong>MySQL em produ\u00e7\u00e3o<\/strong> exige que voc\u00ea saiba lidar com falhas de hardware, problemas de rede, corrup\u00e7\u00e3o de dados e manuten\u00e7\u00e3o programada sem interromper o servi\u00e7o. O ProxySQL permite que a aplica\u00e7\u00e3o se conecte a um \u00fanico ponto de entrada virtual, enquanto ele distribui as conex\u00f5es entre os n\u00f3s do cluster e detecta falhas automaticamente. O MHA, por sua vez, monitora a sa\u00fade do n\u00f3 prim\u00e1rio da replica\u00e7\u00e3o e, em caso de falha, promove um dos n\u00f3s secund\u00e1rios a prim\u00e1rio em segundos, garantindo a continuidade das escritas.<\/p>\n<p>Antes de come\u00e7ar, voc\u00ea precisa ter conclu\u00eddo as aulas anteriores, especialmente aquelas dedicadas \u00e0 replica\u00e7\u00e3o ass\u00edncrona e semiss\u00edncrona, pois esta aula assume que voc\u00ea j\u00e1 entende como funciona o binlog, o relay log, o GTID e as threads de replica\u00e7\u00e3o. Tamb\u00e9m \u00e9 fundamental que voc\u00ea tenha tr\u00eas servidores Linux dispon\u00edveis \u2014 ou m\u00e1quinas virtuais \u2014 com acesso root ou sudo, rede configurada e, idealmente, o MySQL Server 8.0 instalado em cada um. N\u00e3o se preocupe se voc\u00ea ainda n\u00e3o tem experi\u00eancia com ProxySQL ou MHA: esta aula foi desenhada para levar voc\u00ea do zero ao avan\u00e7ado na pr\u00e1tica, com cada comando explicado linha por linha, cada arquivo de configura\u00e7\u00e3o mostrado na \u00edntegra e cada sa\u00edda esperada devidamente documentada.<\/p>\n<p>Ao final desta aula, voc\u00ea ter\u00e1 um cluster funcional de <strong>MySQL em produ\u00e7\u00e3o<\/strong>, composto por tr\u00eas n\u00f3s: um prim\u00e1rio, dois secund\u00e1rios, um ProxySQL na frente para roteamento de consultas e o MHA pronto para executar failover autom\u00e1tico ou manual. Voc\u00ea saber\u00e1 como testar o failover de forma controlada, como verificar a integridade do cluster, como diagnosticar os erros mais comuns e como aplicar as boas pr\u00e1ticas que fazem a diferen\u00e7a entre um ambiente robusto e um ambiente fr\u00e1gil. Esta \u00e9 a aula que amarra todos os conceitos do curso e transforma voc\u00ea em um profissional capaz de responder com confian\u00e7a quando algu\u00e9m perguntar: \u201cComo voc\u00ea coloca <strong>MySQL em produ\u00e7\u00e3o<\/strong>?\u201d<\/p>\n<h3>O que voc\u00ea vai aprender nesta aula<\/h3>\n<ul>\n<li>Compreender a arquitetura de alta disponibilidade com <strong>MySQL em produ\u00e7\u00e3o<\/strong>, ProxySQL e MHA, identificando o papel de cada componente no fluxo de dados.<\/li>\n<li>Instalar e configurar o <strong>MHA Node<\/strong> e o <strong>MHA Manager<\/strong> em sistemas Ubuntu\/Debian e CentOS\/RHEL\/Rocky Linux, incluindo todas as depend\u00eancias de Perl e SSH.<\/li>\n<li>Configurar a replica\u00e7\u00e3o GTID entre tr\u00eas n\u00f3s MySQL, estabelecendo o prim\u00e1rio e os secund\u00e1rios de forma consistente e verific\u00e1vel.<\/li>\n<li>Instalar e configurar o <strong>ProxySQL<\/strong> como camada de roteamento, definindo usu\u00e1rios, monitoramento, grupos de servidores e regras de consulta para leitura e escrita.<\/li>\n<li>Criar todos os arquivos de configura\u00e7\u00e3o do MHA e do ProxySQL do zero, com coment\u00e1rios linha a linha, e entender cada par\u00e2metro cr\u00edtico.<\/li>\n<li>Executar procedimentos de verifica\u00e7\u00e3o completos, incluindo testes de roteamento, failover manual e failover autom\u00e1tico, com as sa\u00eddas esperadas em cada etapa.<\/li>\n<li>Diagnosticar e corrigir os erros mais frequentes em ambientes de alta disponibilidade com <strong>MySQL em produ\u00e7\u00e3o<\/strong>, como falhas de SSH, problemas de binlog e permiss\u00f5es de monitoramento.<\/li>\n<li>Aplicar boas pr\u00e1ticas de seguran\u00e7a, tuning e opera\u00e7\u00e3o cont\u00ednua para manter o cluster saud\u00e1vel e preparado para o mundo real.<\/li>\n<\/ul>\n<h3>Pr\u00e9-requisitos e Ambiente<\/h3>\n<p>Para acompanhar esta aula sem lacunas, voc\u00ea precisa de tr\u00eas servidores Linux com uma distribui\u00e7\u00e3o suportada. Vamos utilizar como refer\u00eancia tr\u00eas hosts: <strong>db1<\/strong> (IP 192.168.1.101), <strong>db2<\/strong> (IP 192.168.1.102) e <strong>db3<\/strong> (IP 192.168.1.103). O <strong>db1<\/strong> ser\u00e1 inicialmente o prim\u00e1rio da replica\u00e7\u00e3o. Voc\u00ea pode usar m\u00e1quinas f\u00edsicas, VMs em VMware ou VirtualBox, ou at\u00e9 inst\u00e2ncias em nuvem dentro de uma mesma VPC. O importante \u00e9 que os tr\u00eas n\u00f3s se enxerguem pela rede, que o SSH esteja habilitado e que voc\u00ea tenha permiss\u00f5es de root ou sudo em todos eles. Se voc\u00ea estiver usando CentOS\/RHEL\/Rocky Linux, desative o SELinux ou configure as pol\u00edticas adequadas para os bin\u00e1rios do MHA e do ProxySQL, pois o SELinux em modo enforcing pode bloquear conectividade e leitura de binlogs.<\/p>\n<p>O MySQL Server 8.0 deve estar instalado e funcional nos tr\u00eas n\u00f3s. Se voc\u00ea seguiu as aulas anteriores, j\u00e1 sabe como instalar com o <strong>mysql-apt-repository<\/strong> no Ubuntu ou com o reposit\u00f3rio oficial no CentOS. Certifique-se de que o <strong>server_id<\/strong> seja \u00fanico em cada n\u00f3, que o <strong>log_bin<\/strong> esteja ativado, que o <strong>gtid_mode=ON<\/strong> e que o <strong>enforce_gtid_consistency=ON<\/strong> estejam configurados. Essas s\u00e3o bases inegoci\u00e1veis para a replica\u00e7\u00e3o baseada em GTID, que o MHA utiliza para localizar a posi\u00e7\u00e3o exata dos eventos durante o failover. Se voc\u00ea ainda n\u00e3o configurou a replica\u00e7\u00e3o, faremos isso do zero nesta aula, passo a passo, mas ter o MySQL instalado e os par\u00e2metros b\u00e1sicos definidos agiliza o processo.<\/p>\n<p>Al\u00e9m disso, voc\u00ea vai precisar de um servidor extra ou de um dos pr\u00f3prios n\u00f3s para executar o <strong>MHA Manager<\/strong>. Na pr\u00e1tica, recomendamos que o Manager rode em um servidor separado, como uma m\u00e1quina de gerenciamento dedicada, para que a falha de um n\u00f3 de dados n\u00e3o afete o orquestrador. No entanto, para simplificar o aprendizado e reduzir custos de laborat\u00f3rio, vamos instalar o Manager no <strong>db3<\/strong>, um dos secund\u00e1rios. Em nossos projetos na <strong>JRT Technology Solutions<\/strong>, quando o cliente possui um or\u00e7amento de infraestrutura mais restrito, costumamos alocar o Manager em um dos secund\u00e1rios, mas sempre monitorando o consumo de recursos e a sa\u00fade do processo <strong>masterha_manager<\/strong>. Se voc\u00ea tiver um quarto servidor dispon\u00edvel, use-o para o Manager \u2014 a l\u00f3gica de configura\u00e7\u00e3o \u00e9 id\u00eantica.<\/p>\n<p>Por fim, mantenha anotados os IPs, os nomes de usu\u00e1rio e as senhas que voc\u00ea definir\u00e1 nesta aula. A consist\u00eancia entre os arquivos de configura\u00e7\u00e3o do MHA e do ProxySQL \u00e9 essencial. Sugerimos criar um bloco de notas com os seguintes valores de exemplo, que usaremos em todo o laborat\u00f3rio: usu\u00e1rio de replica\u00e7\u00e3o <strong>repl_user<\/strong> com senha <strong>ReplPass@123<\/strong>, usu\u00e1rio de monitoramento <strong>monitor<\/strong> com senha <strong>MonitorPass@123<\/strong> e usu\u00e1rio de aplica\u00e7\u00e3o <strong>app_user<\/strong> com senha <strong>AppPass@123<\/strong>. Substitua por suas pr\u00f3prias credenciais em produ\u00e7\u00e3o, seguindo pol\u00edticas de senha fortes da sua organiza\u00e7\u00e3o.<\/p>\n<h3>Fundamentos de Alta Disponibilidade com MySQL em produ\u00e7\u00e3o<\/h3>\n<p>Antes de executar qualquer comando, precisamos alinhar o modelo mental. Um ambiente de <strong>MySQL em produ\u00e7\u00e3o<\/strong> com alta disponibilidade \u00e9 composto por tr\u00eas camadas l\u00f3gicas: a camada de armazenamento, onde vivem os dados e a replica\u00e7\u00e3o; a camada de orquestra\u00e7\u00e3o, respons\u00e1vel por monitorar e decidir quem \u00e9 o prim\u00e1rio; e a camada de acesso, que abstrai a topologia para a aplica\u00e7\u00e3o. O <strong>MHA<\/strong> atua na segunda camada. Ele monitora constantemente o n\u00f3 prim\u00e1rio, executando verifica\u00e7\u00f5es de conectividade e de leitura de binlogs. Quando detecta uma falha, ele elege o candidato mais adequado entre os secund\u00e1rios, aplica os binlogs pendentes para minimizar a perda de dados e promove esse n\u00f3 a prim\u00e1rio, atualizando toda a topologia. O <strong>ProxySQL<\/strong>, por sua vez, atua na terceira camada. A aplica\u00e7\u00e3o se conecta a um \u00fanico IP e porta, e o ProxySQL decide, a cada consulta, se ela deve ir para o prim\u00e1rio (escritas) ou para um dos secund\u00e1rios (leituras). Em caso de failover, o ProxySQL \u00e9 atualizado automaticamente \u2014 geralmente via scripts fornecidos pelo MHA \u2014 para redirecionar as escritas ao novo prim\u00e1rio, sem que a aplica\u00e7\u00e3o precise saber o que aconteceu.<\/p>\n<p>O MHA \u00e9 composto por dois m\u00f3dulos: o <strong>MHA Node<\/strong>, que deve ser instalado em todos os servidores MySQL, e o <strong>MHA Manager<\/strong>, que \u00e9 instalado no servidor de gerenciamento. O Node coleta informa\u00e7\u00f5es dos binlogs, executa opera\u00e7\u00f5es de recupera\u00e7\u00e3o e aplica eventos pendentes. O Manager orquestra o processo inteiro, tomando decis\u00f5es baseadas em scripts de verifica\u00e7\u00e3o e na sa\u00fade relatada pelos Nodes. Essa separa\u00e7\u00e3o \u00e9 importante porque o Manager n\u00e3o precisa estar no mesmo servidor dos dados, e os Nodes s\u00e3o leves o suficiente para n\u00e3o causar impacto percept\u00edvel na performance do MySQL. O MHA suporta replica\u00e7\u00e3o ass\u00edncrona e semiss\u00edncrona, trabalha com GTID ou com posi\u00e7\u00f5es de binlog tradicionais, e \u00e9 amplamente utilizado em produ\u00e7\u00e3o h\u00e1 mais de uma d\u00e9cada, inclusive em ambientes com milhares de transa\u00e7\u00f5es por segundo.<\/p>\n<p>O ProxySQL \u00e9 um proxy de banco de dados de alta performance, escrito em C++, que entende o protocolo MySQL em n\u00edvel de aplica\u00e7\u00e3o. Ele mant\u00e9m pools de conex\u00f5es persistentes com os backends, reduzindo drasticamente o overhead de abrir e fechar conex\u00f5es a cada requisi\u00e7\u00e3o da aplica\u00e7\u00e3o. Al\u00e9m disso, ele possui um mecanismo de regras de consulta extremamente flex\u00edvel: voc\u00ea pode rotear SELECTs para os secund\u00e1rios, enviar escritas para o prim\u00e1rio, bloquear consultas perigosas, reescrever queries, aplicar limites de conex\u00e3o por usu\u00e1rio e muito mais. No contexto de <strong>MySQL em produ\u00e7\u00e3o<\/strong>, o ProxySQL resolve o cl\u00e1ssico problema de &#8220;a aplica\u00e7\u00e3o n\u00e3o sabe lidar com failover&#8221;. Em vez de configurar m\u00faltiplos endere\u00e7os na aplica\u00e7\u00e3o, voc\u00ea configura um \u00fanico endere\u00e7o: o do ProxySQL. Ele sempre sabe quem \u00e9 o prim\u00e1rio e quem s\u00e3o os secund\u00e1rios, desde que voc\u00ea mantenha o monitoramento atualizado.<\/p>\n<p>Um ponto que confunde muitos iniciantes \u00e9 a diferen\u00e7a entre failover e switchover. O <strong>failover<\/strong> \u00e9 o processo autom\u00e1tico de promo\u00e7\u00e3o de um secund\u00e1rio a prim\u00e1rio quando o prim\u00e1rio atual falha de forma inesperada. O <strong>switchover<\/strong> \u00e9 o processo manual e controlado, geralmente usado para manuten\u00e7\u00e3o programada, como troca de hardware ou atualiza\u00e7\u00e3o de vers\u00e3o. O MHA suporta ambos. Na pr\u00e1tica, testaremos primeiro o switchover, que \u00e9 mais seguro e nos permite validar a configura\u00e7\u00e3o sem derrubar servidores. Somente depois executaremos um failover real, simulando a queda do prim\u00e1rio. Essa abordagem incremental \u00e9 exatamente a que adotamos em nossos treinamentos na <strong>JRT Technology Solutions<\/strong>, porque minimiza o risco de o aluno ficar preso em um estado inconsistente sem saber como voltar atr\u00e1s.<\/p>\n<h3>Passo a Passo \u2014 Instala\u00e7\u00e3o e Configura\u00e7\u00e3o do MHA<\/h3>\n<p>Agora vamos colocar a m\u00e3o na massa. O primeiro passo \u00e9 instalar o <strong>MHA Node<\/strong> em todos os tr\u00eas servidores MySQL. O MHA \u00e9 escrito em Perl e possui depend\u00eancias que precisam ser resolvidas antes da instala\u00e7\u00e3o. Em sistemas <strong>Ubuntu\/Debian<\/strong>, as depend\u00eancias s\u00e3o: <strong>libdbd-mysql-perl<\/strong>, <strong>libdbi-perl<\/strong>, <strong>libconfig-tiny-perl<\/strong>, <strong>liblog-dispatch-perl<\/strong>, <strong>libparallel-forkmanager-perl<\/strong> e <strong>libmodule-install-perl<\/strong>. Em sistemas <strong>CentOS\/RHEL\/Rocky Linux<\/strong>, os pacotes equivalentes s\u00e3o: <strong>perl-DBD-MySQL<\/strong>, <strong>perl-DBI<\/strong>, <strong>perl-Config-Tiny<\/strong>, <strong>perl-Log-Dispatch<\/strong>, <strong>perl-Parallel-ForkManager<\/strong> e <strong>perl-Module-Install<\/strong>. Al\u00e9m disso, todos os n\u00f3s precisam de <strong>sshpass<\/strong> ou de chaves SSH configuradas para que o Manager consiga se conectar sem senha aos servidores de dados.<\/p>\n<p>Nesta aula, usaremos os pacotes pr\u00e9-compilados dispon\u00edveis no reposit\u00f3rio oficial do MHA no GitHub. Para o Ubuntu\/Debian, baixaremos os pacotes <strong>.deb<\/strong>; para o CentOS\/RHEL\/Rocky, os pacotes <strong>.rpm<\/strong>. A vers\u00e3o que utilizaremos \u00e9 a <strong>0.58-0<\/strong>, amplamente testada em produ\u00e7\u00e3o. Execute os comandos abaixo em <strong>todos os tr\u00eas n\u00f3s MySQL<\/strong> para configurar as depend\u00eancias e instalar o MHA Node. Se preferir compilar a partir do c\u00f3digo-fonte, o procedimento tamb\u00e9m \u00e9 suportado, mas os pacotes prontos reduzem o tempo e as chances de erro de compila\u00e7\u00e3o.<\/p>\n<pre><code># ============================================================\n# Instala\u00e7\u00e3o do MHA Node \u2014 Ubuntu\/Debian\n# ============================================================\n# Atualize a lista de pacotes\nsudo apt update\n\n# Instale as depend\u00eancias Perl necess\u00e1rias\nsudo apt install -y libdbd-mysql-perl libdbi-perl libconfig-tiny-perl \\\n                    liblog-dispatch-perl libparallel-forkmanager-perl \\\n                    libmodule-install-perl\n\n# Baixe o pacote .deb do MHA Node (vers\u00e3o 0.58-0)\nwget https:\/\/github.com\/yoshinorim\/mha4mysql-node\/releases\/download\/v0.58\/mha4mysql-node_0.58-0_all.deb\n\n# Instale o pacote .deb\nsudo dpkg -i mha4mysql-node_0.58-0_all.deb\n\n# Verifique se o bin\u00e1rio principal foi instalado\nwhich apply_diff_relay_logs\nwhich save_binary_logs\n# A sa\u00edda esperada deve mostrar os caminhos:\n# \/usr\/bin\/apply_diff_relay_logs\n# \/usr\/bin\/save_binary_logs\n<\/code><\/pre>\n<p>Em sistemas <strong>CentOS\/RHEL\/Rocky Linux<\/strong>, o processo \u00e9 semelhante, mas os comandos de gerenciamento de pacotes s\u00e3o diferentes. Execute as instru\u00e7\u00f5es abaixo em todos os n\u00f3s:<\/p>\n<pre><code># ============================================================\n# Instala\u00e7\u00e3o do MHA Node \u2014 CentOS\/RHEL\/Rocky Linux\n# ============================================================\n# Instale o reposit\u00f3rio EPEL, que cont\u00e9m algumas depend\u00eancias\nsudo yum install -y epel-release\n\n# Instale as depend\u00eancias Perl necess\u00e1rias\nsudo yum install -y perl-DBD-MySQL perl-DBI perl-Config-Tiny \\\n                    perl-Log-Dispatch perl-Parallel-ForkManager \\\n                    perl-Module-Install\n\n# Baixe o pacote .rpm do MHA Node (vers\u00e3o 0.58-0)\nwget https:\/\/github.com\/yoshinorim\/mha4mysql-node\/releases\/download\/v0.58\/mha4mysql-node-0.58-0.el7.noarch.rpm\n\n# Instale o pacote .rpm\nsudo rpm -ivh mha4mysql-node-0.58-0.el7.noarch.rpm\n\n# Verifique a instala\u00e7\u00e3o\nwhich apply_diff_relay_logs\nwhich save_binary_logs\n# A sa\u00edda deve mostrar \/usr\/bin\/apply_diff_relay_logs e \/usr\/bin\/save_binary_logs\n<\/code><\/pre>\n<p>Depois de instalar o MHA Node nos tr\u00eas n\u00f3s, precisamos configurar o <strong>MHA Manager<\/strong>. Como mencionamos, o Manager ficar\u00e1 no <strong>db3<\/strong> (192.168.1.103) para este laborat\u00f3rio. A instala\u00e7\u00e3o do Manager requer as mesmas depend\u00eancias Perl do Node, mais o pacote <strong>mha4mysql-manager<\/strong>. O Manager tamb\u00e9m precisa de <strong>perl-Log-Dispatch-FileRotate<\/strong> e <strong>perl-Parallel-ForkManager<\/strong>, que j\u00e1 instalamos. Execute os comandos abaixo apenas no n\u00f3 que ser\u00e1 o Manager. Para Ubuntu\/Debian:<\/p>\n<pre><code># ============================================================\n# Instala\u00e7\u00e3o do MHA Manager \u2014 Ubuntu\/Debian (no db3)\n# ============================================================\n# Se ainda n\u00e3o instalou as depend\u00eancias, instale-as agora\nsudo apt update\nsudo apt install -y libdbd-mysql-perl libdbi-perl libconfig-tiny-perl \\\n                    liblog-dispatch-perl libparallel-forkmanager-perl \\\n                    libmodule-install-perl\n\n# Baixe o pacote .deb do MHA Manager\nwget https:\/\/github.com\/yoshinorim\/mha4mysql-manager\/releases\/download\/v0.58\/mha4mysql-manager_0.58-0_all.deb\n\n# Instale o pacote\nsudo dpkg -i mha4mysql-manager_0.58-0_all.deb\n\n# Verifique os bin\u00e1rios do Manager\nwhich masterha_manager\nwhich masterha_check_repl\nwhich masterha_check_ssh\n# Sa\u00edda esperada: \/usr\/bin\/masterha_manager, \/usr\/bin\/masterha_check_repl, \/usr\/bin\/masterha_check_ssh\n<\/code><\/pre>\n<p>Para CentOS\/RHEL\/Rocky, o Manager \u00e9 instalado da seguinte forma no <strong>db3<\/strong>:<\/p>\n<pre><code># ============================================================\n# Instala\u00e7\u00e3o do MHA Manager \u2014 CentOS\/RHEL\/Rocky (no db3)\n# ============================================================\nsudo yum install -y epel-release\nsudo yum install -y perl-DBD-MySQL perl-DBI perl-Config-Tiny \\\n                    perl-Log-Dispatch perl-Parallel-ForkManager \\\n                    perl-Module-Install perl-Log-Dispatch-FileRotate\n\n# Baixe o pacote .rpm do MHA Manager\nwget https:\/\/github.com\/yoshinorim\/mha4mysql-manager\/releases\/download\/v0.58\/mha4mysql-manager-0.58-0.el7.noarch.rpm\n\n# Instale o pacote\nsudo rpm -ivh mha4mysql-manager-0.58-0.el7.noarch.rpm\n\n# Verifique os bin\u00e1rios\nwhich masterha_manager\nwhich masterha_check_repl\nwhich masterha_check_ssh\n# Sa\u00edda esperada: \/usr\/bin\/masterha_manager, \/usr\/bin\/masterha_check_repl, \/usr\/bin\/masterha_check_ssh\n<\/code><\/pre>\n<p>Com o Node e o Manager instalados, o pr\u00f3ximo passo cr\u00edtico \u00e9 configurar o <strong>SSH sem senha<\/strong> entre o Manager e todos os n\u00f3s MySQL. O MHA Manager utiliza SSH para executar comandos remotos nos servidores de dados, como leitura de binlogs, aplica\u00e7\u00e3o de relay logs e promo\u00e7\u00e3o de n\u00f3s. Sem SSH configurado corretamente, o MHA n\u00e3o funciona. A configura\u00e7\u00e3o envolve gerar um par de chaves no servidor do Manager e copiar a chave p\u00fablica para os tr\u00eas n\u00f3s. Tamb\u00e9m \u00e9 necess\u00e1rio que o Manager consiga se conectar a si mesmo via SSH, pois o db3 \u00e9 tanto Manager quanto n\u00f3 de dados. Siga os passos abaixo:<\/p>\n<pre><code># ============================================================\n# Configurando SSH sem senha do Manager (db3) para todos os n\u00f3s\n# ============================================================\n# No db3 (Manager), gere um par de chaves SSH sem passphrase\nssh-keygen -t rsa -b 4096 -N \"\" -f ~\/.ssh\/id_rsa\n\n# Copie a chave p\u00fablica para db1 (192.168.1.101)\nssh-copy-id root@192.168.1.101\n\n# Copie para db2 (192.168.1.102)\nssh-copy-id root@192.168.1.102\n\n# Copie para o pr\u00f3prio db3 (192.168.1.103)\nssh-copy-id root@192.168.1.103\n\n# Teste a conectividade SSH para cada n\u00f3, um por vez\nssh root@192.168.1.101 \"hostname; uptime\"\nssh root@192.168.1.102 \"hostname; uptime\"\nssh root@192.168.1.103 \"hostname; uptime\"\n# Sa\u00edda esperada: cada comando deve retornar o hostname do servidor\n# e o uptime, SEM pedir senha. Exemplo:\n# db1\n#  12:34:56 up 10 days,  2:15,  1 user,  load average: 0.00, 0.01, 0.05\n<\/code><\/pre>\n<p>Ao final dessa etapa, voc\u00ea tem o MHA Node instalado nos tr\u00eas servidores MySQL, o MHA Manager instalado no db3 e a comunica\u00e7\u00e3o SSH sem senha funcionando em todas as dire\u00e7\u00f5es necess\u00e1rias. Esse \u00e9 o alicerce sobre o qual construiremos a replica\u00e7\u00e3o e, posteriormente, o failover. Em nossos projetos na <strong>JRT Technology Solutions<\/strong>, nunca iniciamos a configura\u00e7\u00e3o da replica\u00e7\u00e3o sem antes validar o SSH, porque \u00e9 uma causa muito comum de falhas silenciosas durante o failover: o Manager pode detectar a falha, mas n\u00e3o consegue acessar o n\u00f3 secund\u00e1rio para promov\u00ea-lo, deixando o cluster em estado degradado.<\/p>\n<h3>Configurando a Replica\u00e7\u00e3o GTID entre os Tr\u00eas N\u00f3s<\/h3>\n<p>Antes de configurar o ProxySQL, precisamos de uma replica\u00e7\u00e3o saud\u00e1vel entre os tr\u00eas n\u00f3s. Vamos configurar a replica\u00e7\u00e3o baseada em <strong>GTID (Global Transaction Identifier)<\/strong>, que simplifica o failover do MHA porque elimina a necessidade de calcular posi\u00e7\u00f5es exatas de binlog. Com GTID, cada transa\u00e7\u00e3o recebe um identificador global \u00fanico, composto pelo <strong>server_uuid<\/strong> do servidor que a originou e um n\u00famero sequencial. Quando um secund\u00e1rio se conecta ao prim\u00e1rio, ele informa quais GTIDs j\u00e1 executou e o prim\u00e1rio envia apenas as transa\u00e7\u00f5es faltantes. Isso torna a recupera\u00e7\u00e3o muito mais robusta, especialmente em cen\u00e1rios de failover onde m\u00faltiplos secund\u00e1rios podem ter conjuntos de dados ligeiramente diferentes.<\/p>\n<p>Vamos come\u00e7ar pelo <strong>db1<\/strong>, que ser\u00e1 o prim\u00e1rio inicial. Precisamos garantir que os par\u00e2metros de replica\u00e7\u00e3o estejam ativos no arquivo de configura\u00e7\u00e3o do MySQL. Abra o arquivo <strong>\/etc\/mysql\/mysql.conf.d\/mysqld.cnf<\/strong> no Ubuntu ou <strong>\/etc\/my.cnf<\/strong> no CentOS\/RHEL\/Rocky, e adicione ou ajuste as seguintes linhas:<\/p>\n<pre><code># ============================================================\n# Arquivo de configura\u00e7\u00e3o do MySQL \u2014 db1 (prim\u00e1rio inicial)\n# Localiza\u00e7\u00e3o: \/etc\/mysql\/mysql.conf.d\/mysqld.cnf (Ubuntu)\n#               \/etc\/my.cnf (CentOS\/RHEL\/Rocky)\n# ============================================================\n[mysqld]\n# Identifica\u00e7\u00e3o \u00fanica do servidor na topologia\nserver_id = 101\n\n# Ativa o log bin\u00e1rio (obrigat\u00f3rio para replica\u00e7\u00e3o)\nlog_bin = \/var\/log\/mysql\/mysql-bin.log\n\n# Nome do binlog no formato mysql-bin.NNNNNN\n# (o caminho acima j\u00e1 define o prefixo)\n\n# Ativa GTID\ngtid_mode = ON\nenforce_gtid_consistency = ON\n\n# Desativa a escrita de binlog para o banco de sistema\nbinlog_ignore_db = mysql\n\n# Define o formato de binlog como ROW (mais seguro para replica\u00e7\u00e3o)\nbinlog_format = ROW\n\n# Loga as atualiza\u00e7\u00f5es de tabelas que usam chave prim\u00e1ria como eventos\n# de linha completos, melhorando a consist\u00eancia\nbinlog_row_image = FULL\n\n# Habilita checksum nos eventos de binlog\nbinlog_checksum = CRC32\n\n# Expira os binlogs ap\u00f3s 7 dias (ajuste conforme sua pol\u00edtica)\nbinlog_expire_logs_seconds = 604800\n\n# Ativa o cache de binlog para melhor performance\nbinlog_cache_size = 1M\n\n# Define o tamanho m\u00e1ximo de cada binlog antes da rota\u00e7\u00e3o\nmax_binlog_size = 100M\n\n# Habilita o log de relay (para quando este n\u00f3 for secund\u00e1rio)\nrelay_log = \/var\/log\/mysql\/relay-log\n\n# Expira os relay logs ap\u00f3s 7 dias\nrelay_log_expire_logs_seconds = 604800\n\n# Evita que o relay log seja removido imediatamente, \u00fatil no failover\nrelay_log_purge = ON\n\n# Define o modo de recupera\u00e7\u00e3o do relay log\nrelay_log_recovery = ON\n\n# Ativa o log de atualiza\u00e7\u00f5es do relay log (para o MHA)\nlog_slave_updates = ON\n\n# Habilita leitura de binlogs sem exigir privil\u00e9gios especiais\n# (o MHA Manager usar\u00e1 um usu\u00e1rio com REPLICATION SLAVE)\n<\/code><\/pre>\n<p>Repita essa configura\u00e7\u00e3o nos n\u00f3s <strong>db2<\/strong> e <strong>db3<\/strong>, alterando apenas o <strong>server_id<\/strong> para <strong>102<\/strong> e <strong>103<\/strong>, respectivamente. Reinicie o MySQL em cada n\u00f3 ap\u00f3s a altera\u00e7\u00e3o. No Ubuntu, use <strong>sudo systemctl restart mysql<\/strong>; no CentOS\/RHEL\/Rocky, <strong>sudo systemctl restart mysqld<\/strong>. Depois, crie o usu\u00e1rio de replica\u00e7\u00e3o em todos os n\u00f3s, mas ative a replica\u00e7\u00e3o apenas nos secund\u00e1rios. Execute no db1, db2 e db3:<\/p>\n<pre><code># ============================================================\n# Criando o usu\u00e1rio de replica\u00e7\u00e3o em todos os n\u00f3s\n# ============================================================\nsudo mysql -u root -p\n# Digite a senha do root do MySQL\n\n-- No prompt do MySQL, execute:\nCREATE USER 'repl_user'@'%' IDENTIFIED BY 'ReplPass@123';\nGRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl_user'@'%';\nFLUSH PRIVILEGES;\nEXIT;\n\n# ============================================================\n# Configurando a replica\u00e7\u00e3o nos secund\u00e1rios (db2 e db3)\n# ============================================================\n# No db2 (192.168.1.102) e no db3 (192.168.1.103), execute:\nsudo mysql -u root -p\n# Digite a senha do root\n\n-- Pare a thread de replica\u00e7\u00e3o se existir (primeira configura\u00e7\u00e3o)\nSTOP REPLICA;\n\n-- Configure a fonte de replica\u00e7\u00e3o usando GTID\nCHANGE REPLICATION SOURCE TO\n  SOURCE_HOST = '192.168.1.101',\n  SOURCE_USER = 'repl_user',\n  SOURCE_PASSWORD = 'ReplPass@123',\n  SOURCE_AUTO_POSITION = 1;\n\n-- Inicie a replica\u00e7\u00e3o\nSTART REPLICA;\n\n-- Verifique o status\nSHOW REPLICA STATUS\\G\n-- Confira os campos:\n--   Replica_IO_Running: Yes\n--   Replica_SQL_Running: Yes\n--   Retrieved_Gtid_Set: deve mostrar GTIDs recebidos do db1\n--   Executed_Gtid_Set: deve mostrar GTIDs aplicados\nEXIT;\n<\/code><\/pre>\n<p>Ap\u00f3s iniciar a replica\u00e7\u00e3o nos dois secund\u00e1rios, verifique no prim\u00e1rio se ambos est\u00e3o conectados. Execute no db1 o comando <strong>SHOW REPLICAS;<\/strong> ou <strong>SHOW PROCESSLIST;<\/strong> para confirmar que existem duas conex\u00f5es de replica\u00e7\u00e3o ativas, uma para cada secund\u00e1rio. Se voc\u00ea seguiu todos os passos, a topologia est\u00e1 funcionando. Esse \u00e9 o ponto de partida para configurar o MHA e o ProxySQL. A sa\u00edda esperada do <strong>SHOW REPLICA STATUS\\G<\/strong> em um secund\u00e1rio saud\u00e1vel deve conter os seguintes trechos relevantes:<\/p>\n<pre><code class=\"output\">*************************** 1. row ***************************\n             Replica_IO_State: Waiting for source to send event\n                  Source_Host: 192.168.1.101\n                  Source_User: repl_user\n                  Source_Port: 3306\n                Connect_Retry: 60\n              Source_Log_File: mysql-bin.000003\n          Read_Source_Log_Pos: 4567\n               Relay_Log_File: relay-log.000002\n                Relay_Log_Pos: 890\n        Relay_Source_Log_File: mysql-bin.000003\n           Replica_IO_Running: Yes\n          Replica_SQL_Running: Yes\n              Replicate_Do_DB:\n          Replicate_Ignore_DB:\n           Replicate_Do_Table:\n       Replicate_Ignore_Table:\n      Replicate_Wild_Do_Table:\n  Replicate_Wild_Ignore_Table:\n                   Last_Errno: 0\n                   Last_Error:\n                 Skip_Counter: 0\n          Exec_Source_Log_Pos: 4567\n              Relay_Log_Space: 1200\n              Until_Condition: None\n               Until_Log_File:\n                Until_Log_Pos: 0\n           Source_SSL_Allowed: No\n           Source_SSL_CA_File:\n           Source_SSL_CA_Path:\n              Source_SSL_Cert:\n            Source_SSL_Cipher:\n               Source_SSL_Key:\n        Seconds_Behind_Source: 0\nSource_SSL_Verify_Server_Cert: No\n                Last_IO_Errno: 0\n                Last_IO_Error:\n               Last_SQL_Errno: 0\n               Last_SQL_Error:\n  Replicate_Ignore_Server_Ids:\n             Source_Server_Id: 101\n                  Source_UUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890\n             Source_Info_File: mysql.slave_master_info\n                    SQL_Delay: 0\n          SQL_Remaining_Delay: NULL\n      Replica_SQL_Running_State: Replica has read all relay log; waiting for more updates\n           Source_Retry_Count: 86400\n                  Source_Bind:\n      Last_IO_Error_Timestamp:\n     Last_SQL_Error_Timestamp:\n               Source_SSL_Crl:\n           Source_SSL_Crlpath:\n           Retrieved_Gtid_Set: a1b2c3d4-e5f6-7890-abcd-ef1234567890:1-10\n            Executed_Gtid_Set: a1b2c3d4-e5f6-7890-abcd-ef1234567890:1-10\n                Auto_Position: 1\n<\/code><\/pre>\n<h3>Configura\u00e7\u00e3o Detalhada \u2014 Arquivos do MHA<\/h3>\n<p>Agora que a replica\u00e7\u00e3o est\u00e1 ativa, vamos criar os arquivos de configura\u00e7\u00e3o do MHA. O MHA Manager utiliza um arquivo de configura\u00e7\u00e3o por &#8220;aplica\u00e7\u00e3o&#8221; ou por cluster. Neste laborat\u00f3rio, chamaremos nossa aplica\u00e7\u00e3o de <strong>app1<\/strong>. O arquivo ficar\u00e1 em <strong>\/etc\/mha\/app1.cnf<\/strong> no servidor do Manager (db3). Dentro dele, definiremos os n\u00f3s do cluster, as credenciais, os scripts de verifica\u00e7\u00e3o e os par\u00e2metros de failover. O conte\u00fado completo do arquivo \u00e9 mostrado abaixo, com coment\u00e1rios explicando cada diretiva. Preste aten\u00e7\u00e3o especial aos campos <strong>hostname<\/strong>, que devem refletir exatamente os IPs ou nomes resolv\u00edveis dos seus servidores, e ao campo <strong>candidate_master<\/strong>, que indica quais secund\u00e1rios podem ser promovidos.<\/p>\n<pre><code># ============================================================\n# Arquivo de configura\u00e7\u00e3o do MHA \u2014 \/etc\/mha\/app1.cnf\n# ============================================================\n[server default]\n# Usu\u00e1rio de replica\u00e7\u00e3o que o MHA usar\u00e1 para se conectar ao MySQL\nuser=repl_user\npassword=ReplPass@123\n\n# Porta padr\u00e3o do MySQL\nport=3306\n\n# Caminho para o bin\u00e1rio mysql no servidor do Manager\nmysql_binlog=\/usr\/bin\/mysqlbinlog\n\n# Usu\u00e1rio do SO para execu\u00e7\u00e3o remota via SSH\nssh_user=root\n\n# Diret\u00f3rio de trabalho do MHA no Manager\nmanager_workdir=\/var\/log\/mha\/app1\n# Diret\u00f3rio remoto onde os binlogs s\u00e3o salvos temporariamente\nremote_workdir=\/var\/log\/mha\/app1\n\n# Scripta para verifica\u00e7\u00e3o de conectividade secund\u00e1ria\nsecondary_check_script=\/usr\/bin\/masterha_secondary_check -s 192.168.1.102 -s 192.168.1.103\n\n# Script de notifica\u00e7\u00e3o em caso de failover\nmaster_ip_failover_script=\n\n# N\u00famero de tentativas para detec\u00e7\u00e3o de falha\nping_interval=1\nping_type=SELECT\n\n# Toler\u00e2ncia para lat\u00eancia de replica\u00e7\u00e3o\nmax_seconds_behind_master=30\n\n# Habilita o modo GTID\nuse_gtid=1\n\n# Define que o failover deve promover o n\u00f3 mais atualizado\ncheck_repl_delay=1\n\n# Diret\u00f3rio de logs do Manager\nlog_level=info\n\n[server1]\nhostname=192.168.1.101\ncandidate_master=1\nmaster_binlog_dir=\/var\/log\/mysql\n\n[server2]\nhostname=192.168.1.102\ncandidate_master=1\nmaster_binlog_dir=\/var\/log\/mysql\n\n[server3]\nhostname=192.168.1.103\ncandidate_master=0\nmaster_binlog_dir=\/var\/log\/mysql\n<\/code><\/pre>\n<p>Vamos analisar as diretivas mais importantes. A se\u00e7\u00e3o <strong>[server default]<\/strong> define par\u00e2metros que se aplicam a todos os servidores listados nas se\u00e7\u00f5es <strong>[serverN]<\/strong>. O campo <strong>user<\/strong> e <strong>password<\/strong> s\u00e3o as credenciais do usu\u00e1rio de replica\u00e7\u00e3o que o MHA usar\u00e1 para se conectar e executar comandos como <strong>SHOW REPLICA STATUS<\/strong>, <strong>STOP REPLICA<\/strong> e <strong>CHANGE REPLICATION SOURCE<\/strong>. O <strong>ssh_user<\/strong> \u00e9 o usu\u00e1rio do sistema operacional usado para as conex\u00f5es SSH \u2014 no nosso laborat\u00f3rio, <strong>root<\/strong>. Em produ\u00e7\u00e3o, recomendamos criar um usu\u00e1rio dedicado com permiss\u00f5es de sudo apenas para os comandos necess\u00e1rios, seguindo o princ\u00edpio do menor privil\u00e9gio. O <strong>secondary_check_script<\/strong> \u00e9 fundamental: ele instrui o Manager a verificar a sa\u00fade do prim\u00e1rio a partir de m\u00faltiplos pontos de vista. O script <strong>masterha_secondary_check<\/strong> recebe dois IPs de secund\u00e1rios e, se ambos tamb\u00e9m n\u00e3o conseguirem se conectar ao prim\u00e1rio, o Manager conclui que a falha \u00e9 real e n\u00e3o apenas um problema de rede local do Manager. Sem isso, um simples particionamento de rede entre o Manager e o prim\u00e1rio poderia desencadear um failover desnecess\u00e1rio, causando split-brain.<\/p>\n<p>O campo <strong>ping_interval<\/strong> define a frequ\u00eancia, em segundos, com que o Manager verifica a conectividade com o prim\u00e1rio. O <strong>ping_type=SELECT<\/strong> instrui o Manager a executar um SELECT simples para validar que o MySQL est\u00e1 respondendo, n\u00e3o apenas que o host est\u00e1 acess\u00edvel. O <strong>max_seconds_behind_master<\/strong> define o limite de atraso de replica\u00e7\u00e3o aceit\u00e1vel para um secund\u00e1rio ser promovido. Se um secund\u00e1rio estiver mais de 30 segundos atrasado, ele n\u00e3o ser\u00e1 considerado candidato. O <strong>use_gtid=1<\/strong> ativa a integra\u00e7\u00e3o com GTID, permitindo que o MHA utilize os GTIDs para aplicar apenas as transa\u00e7\u00f5es pendentes durante o failover. Finalmente, o <strong>candidate_master<\/strong> em cada se\u00e7\u00e3o <strong>[serverN]<\/strong> controla se aquele n\u00f3 pode ser promovido a prim\u00e1rio. No nosso caso, db1 e db2 podem ser prim\u00e1rios, mas db3 n\u00e3o, porque escolhemos db3 como Manager e, muitas vezes, preferimos que o Manager n\u00e3o assuma o papel de prim\u00e1rio para evitar sobrecarregar a mesma m\u00e1quina.<\/p>\n<p>\u00c9 importante criar os diret\u00f3rios de trabalho referenciados no arquivo, tanto no Manager quanto nos n\u00f3s remotos. Execute os seguintes comandos em todos os n\u00f3s e no Manager:<\/p>\n<pre><code># ============================================================\n# Criando diret\u00f3rios de trabalho do MHA\n# ============================================================\n# Em todos os n\u00f3s MySQL e no Manager, execute:\nsudo mkdir -p \/var\/log\/mha\/app1\nsudo chown -R root:root \/var\/log\/mha\n\n# No Manager (db3), verifique se o arquivo de configura\u00e7\u00e3o est\u00e1 leg\u00edvel\nsudo cat \/etc\/mha\/app1.cnf\n# Sa\u00edda esperada: o conte\u00fado completo do arquivo, sem erros de sintaxe\n<\/code><\/pre>\n<p>Depois de criar o arquivo, o pr\u00f3ximo passo \u00e9 validar a configura\u00e7\u00e3o com os scripts de verifica\u00e7\u00e3o do MHA. O comando <strong>masterha_check_ssh<\/strong> valida se o Manager consegue se conectar via SSH a todos os n\u00f3s sem senha. O comando <strong>masterha_check_repl<\/strong> valida se a replica\u00e7\u00e3o est\u00e1 saud\u00e1vel, se as credenciais est\u00e3o corretas e se o MHA consegue acessar os binlogs e relay logs. Execute ambos como root no Manager:<\/p>\n<pre><code># ============================================================\n# Validando a configura\u00e7\u00e3o do MHA \u2014 SSH e Replica\u00e7\u00e3o\n# ============================================================\n# Verifica\u00e7\u00e3o de SSH\nsudo masterha_check_ssh --conf=\/etc\/mha\/app1.cnf\n\n# Verifica\u00e7\u00e3o de replica\u00e7\u00e3o\nsudo masterha_check_repl --conf=\/etc\/mha\/app1.cnf\n<\/code><\/pre>\n<p>A sa\u00edda esperada de <strong>masterha_check_ssh<\/strong> deve indicar que todos os hosts foram acessados com sucesso. A sa\u00edda de <strong>masterha_check_repl<\/strong> deve confirmar que a replica\u00e7\u00e3o est\u00e1 saud\u00e1vel e que o MHA pode ler os binlogs. Veja um exemplo real de sa\u00edda bem-sucedida:<\/p>\n<pre><code class=\"output\"># Sa\u00edda de masterha_check_ssh\nTue Sep 14 10:15:22 2026 - [info] Executing SSH checks for all hosts...\nTue Sep 14 10:15:22 2026 - [info] All SSH connection tests passed successfully.\n\n# Sa\u00edda de masterha_check_repl\nTue Sep 14 10:16:01 2026 - [info] Reading default configuration from \/etc\/mha\/app1.cnf...\nTue Sep 14 10:16:01 2026 - [info] Checking replication health on 192.168.1.101...\nTue Sep 14 10:16:02 2026 - [info] Checking replication health on 192.168.1.102...\nTue Sep 14 10:16:03 2026 - [info] Checking replication health on 192.168.1.103...\nTue Sep 14 10:16:04 2026 - [info] Replication health check passed.\nTue Sep 14 10:16:04 2026 - [info] Checking if there is a primary server configured...\nTue Sep 14 10:16:04 2026 - [info] Checking secondary backup settings...\nTue Sep 14 10:16:05 2026 - [info] Checking binlog settings...\nTue Sep 14 10:16:05 2026 - [info] Binlog settings check passed.\nTue Sep 14 10:16:05 2026 - [info] MySQL Replication Health is OK.\n<\/code><\/pre>\n<p>Se os dois checks passarem sem erros, sua configura\u00e7\u00e3o do MHA est\u00e1 correta e voc\u00ea pode prosseguir para a instala\u00e7\u00e3o do ProxySQL. Caso encontre erros, n\u00e3o avance: anote a mensagem exata e consulte a se\u00e7\u00e3o de erros comuns desta aula, onde abordaremos as causas mais frequentes e suas solu\u00e7\u00f5es.<\/p>\n<h3>Passo a Passo \u2014 Instala\u00e7\u00e3o e Configura\u00e7\u00e3o do ProxySQL<\/h3>\n<p>Com o MHA validado, chegamos \u00e0 camada de acesso. O ProxySQL ser\u00e1 instalado em um servidor dedicado ou em um dos n\u00f3s, dependendo da sua prefer\u00eancia. Para este laborat\u00f3rio, instalaremos o ProxySQL no <strong>db3<\/strong>, junto com o Manager, para simplificar a quantidade de m\u00e1quinas. Em produ\u00e7\u00e3o, na <strong>JRT Technology Solutions<\/strong>, recomendamos fortemente um servidor dedicado para o ProxySQL, especialmente se a aplica\u00e7\u00e3o tiver alto volume de conex\u00f5es. O ProxySQL consome pouca CPU, mas a lat\u00eancia de rede entre a aplica\u00e7\u00e3o e o ProxySQL \u00e9 cr\u00edtica, ent\u00e3o posicione-o o mais pr\u00f3ximo poss\u00edvel da aplica\u00e7\u00e3o, geralmente na mesma sub-rede ou at\u00e9 na mesma m\u00e1quina em arquiteturas menores.<\/p>\n<p>A instala\u00e7\u00e3o no Ubuntu\/Debian utiliza o reposit\u00f3rio oficial do ProxySQL. Execute os comandos abaixo no servidor onde o ProxySQL ficar\u00e1 \u2014 no nosso caso, db3:<\/p>\n<pre><code># ============================================================\n# Instala\u00e7\u00e3o do ProxySQL \u2014 Ubuntu\/Debian (no db3)\n# ============================================================\n# Adicione o reposit\u00f3rio oficial do ProxySQL\nsudo apt update\nsudo apt install -y lsb-release wget gnupg\n\nwget -O - 'https:\/\/repo.proxysql.com\/ProxySQL\/repo_pub_key' | sudo apt-key add -\n\necho \"deb https:\/\/repo.proxysql.com\/ProxySQL\/proxysql-2.7.x\/$(lsb_release -sc)\/ .\/\" \\\n  | sudo tee \/etc\/apt\/sources.list.d\/proxysql.list\n\nsudo apt update\n\n# Instale o ProxySQL\nsudo apt install -y proxysql\n\n# Habilite e inicie o servi\u00e7o\nsudo systemctl enable proxysql\nsudo systemctl start proxysql\n\n# Verifique o status\nsudo systemctl status proxysql\n# Sa\u00edda esperada: Active: active (running)\n<\/code><\/pre>\n<p>Para CentOS\/RHEL\/Rocky Linux, o processo \u00e9 similar, usando o reposit\u00f3rio RPM oficial:<\/p>\n<pre><code># ============================================================\n# Instala\u00e7\u00e3o do ProxySQL \u2014 CentOS\/RHEL\/Rocky (no db3)\n# ============================================================\n# Adicione o reposit\u00f3rio oficial do ProxySQL\nsudo tee \/etc\/yum.repos.d\/proxysql.repo <<'EOF'\n[proxysql_repo]\nname=ProxySQL YUM repository\nbaseurl=https:\/\/repo.proxysql.com\/ProxySQL\/proxysql-2.7.x\/centos\/$releasever\ngpgcheck=1\ngpgkey=https:\/\/repo.proxysql.com\/ProxySQL\/repo_pub_key\nEOF\n\n# Limpe o cache e instale\nsudo yum clean all\nsudo yum install -y proxysql\n\n# Habilite e inicie o servi\u00e7o\nsudo systemctl enable proxysql\nsudo systemctl start proxysql\n\n# Verifique o status\nsudo systemctl status proxysql\n# Sa\u00edda esperada: Active: active (running)\n<\/code><\/pre>\n<p>Ap\u00f3s a instala\u00e7\u00e3o, o ProxySQL estar\u00e1 rodando na porta <strong>6033<\/strong> para conex\u00f5es de aplica\u00e7\u00e3o e na porta <strong>6032<\/strong> para administra\u00e7\u00e3o. A porta de administra\u00e7\u00e3o utiliza o usu\u00e1rio <strong>admin<\/strong> com senha <strong>admin<\/strong> por padr\u00e3o \u2014 voc\u00ea deve alter\u00e1-la imediatamente. A configura\u00e7\u00e3o do ProxySQL pode ser feita via arquivo de configura\u00e7\u00e3o ou via interface SQL administrativa. Nesta aula, usaremos a interface SQL, que \u00e9 a forma mais flex\u00edvel e a que recomendamos para ambientes din\u00e2micos. Primeiro, conecte-se \u00e0 interface administrativa:<\/p>\n<pre><code># ============================================================\n# Conectando-se \u00e0 interface administrativa do ProxySQL\n# ============================================================\n# O ProxySQL admin aceita MySQL client na porta 6032\nmysql -u admin -padmin -h 127.0.0.1 -P 6032\n\n# Sa\u00edda esperada:\n# Welcome to the MySQL monitor.  Commands end with ; or \\g.\n# Your MySQL connection id is 1\n# Server version: 5.5.30 (ProxySQL Admin Module)\n# mysql>\n<\/code><\/pre>\n<p>Agora, vamos configurar os backends MySQL no ProxySQL. Precisamos informar ao ProxySQL os endere\u00e7os dos tr\u00eas n\u00f3s, definir qual \u00e9 o grupo de leitura e qual \u00e9 o grupo de escrita, e criar usu\u00e1rios de monitoramento e de aplica\u00e7\u00e3o. O ProxySQL utiliza <strong>hostgroups<\/strong> para agrupar servidores. Por conven\u00e7\u00e3o, o hostgroup 0 \u00e9 para escritas (prim\u00e1rio) e o hostgroup 1 \u00e9 para leituras (secund\u00e1rios). No entanto, voc\u00ea pode usar qualquer numera\u00e7\u00e3o. O importante \u00e9 que as regras de consulta saibam mapear cada tipo de opera\u00e7\u00e3o para o hostgroup correto. Execute os comandos abaixo no prompt administrativo do ProxySQL:<\/p>\n<pre><code>-- ============================================================<br \/>\n-- Configurando os backends MySQL no ProxySQL<br \/>\n-- ============================================================<br \/>\n-- Insira os tr\u00eas servidores MySQL<br \/>\nINSERT INTO mysql_servers(hostgroup_id<\/p>\n<div style=\"margin:52px 0 40px;padding:36px 28px;background:linear-gradient(135deg,#0f172a 0%,#1a2744 100%);border:2px solid #25D366;border-radius:18px;text-align:center;box-shadow:0 4px 28px rgba(37,211,102,0.18)\">\n<p style=\"margin:0 0 10px;font-size:18px;color:#ffffff;font-weight:700;line-height:1.4\">Quer aprender na pr\u00e1tica com especialistas?<\/p>\n<p style=\"margin:0 0 28px;font-size:15px;color:#94a3b8;font-weight:400;line-height:1.6\">A JRT Technology Solutions oferece treinamentos e implementa\u00e7\u00e3o de MySQL para equipes corporativas.<\/p>\n<p>  <a href=\"https:\/\/api.whatsapp.com\/send\/?phone=5521980606699&#038;text=Ol%C3%A1!%20Tenho%20interesse%20no%20treinamento%20de%20MySQL.&#038;type=phone_number&#038;app_absent=0\"\n     target=\"_blank\" rel=\"noopener noreferrer\"\n     style=\"display:inline-flex;align-items:center;gap:12px;background:#25D366;color:#ffffff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:16px;font-weight:700;padding:15px 32px;border-radius:100px;text-decoration:none;box-shadow:0 4px 16px rgba(37,211,102,0.45);letter-spacing:0.01em\"><br \/>\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"#ffffff\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/><\/svg><br \/>\n    Falar no WhatsApp<br \/>\n  <\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Nesta aula final do curso MySQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar uma das compet\u00eancias mais cr\u00edticas para qualquer profissional de banco de dados: colocar o MySQL em produ\u00e7\u00e3o de verdade. N\u00e3o se trata apenas de subir uma inst\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\u00edvel, tolerante &#8230; <a title=\"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA\" class=\"read-more\" href=\"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/\" aria-label=\"Read more about Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA\">Ler mais<\/a><\/p>\n","protected":false},"author":1,"featured_media":2965,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"iawp_total_views":0,"footnotes":""},"categories":[75],"tags":[3473],"class_list":["post-2966","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-mysql-do-zero-ao-avancado-mysql-em-producao-alta-disponibilidade-com-proxysql-e-mha"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Nesta aula final do curso MySQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar uma das compet\u00eancias mais cr\u00edticas para qualquer profissional de banco de dados: colocar o MySQL em produ\u00e7\u00e3o de verdade. N\u00e3o se trata apenas de subir uma inst\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\u00edvel, tolerante\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Thiago Paes Rodrigues\"\/>\n\t<meta name=\"google-site-verification\" content=\"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_BR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta property=\"og:description\" content=\"Nesta aula final do curso MySQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar uma das compet\u00eancias mais cr\u00edticas para qualquer profissional de banco de dados: colocar o MySQL em produ\u00e7\u00e3o de verdade. N\u00e3o se trata apenas de subir uma inst\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\u00edvel, tolerante\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"100\" \/>\n\t\t<meta property=\"og:image:height\" content=\"75\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-18T20:50:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-18T20:50:57+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61590814880509\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Nesta aula final do curso MySQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar uma das compet\u00eancias mais cr\u00edticas para qualquer profissional de banco de dados: colocar o MySQL em produ\u00e7\u00e3o de verdade. N\u00e3o se trata apenas de subir uma inst\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\u00edvel, tolerante\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#blogposting\",\"name\":\"Aula 23: MySQL em produ\\u00e7\\u00e3o \\u2014 alta disponibilidade com ProxySQL e MHA - BLOG - JRT Technology Solutions\",\"headline\":\"Aula 23: MySQL em produ\\u00e7\\u00e3o \\u2014 alta disponibilidade com ProxySQL e MHA\",\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ai-image-1789764654165.jpg\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 23: MySQL em produ\\u00e7\\u00e3o \\u2014 alta disponibilidade com ProxySQL e MHA\"},\"datePublished\":\"2026-09-18T17:50:57-03:00\",\"dateModified\":\"2026-09-18T17:50:57-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#webpage\"},\"articleSection\":\"DevOps, MySQL \\u2014 Do Zero ao Avan\\u00e7ado: MySQL em produ\\u00e7\\u00e3o \\u2014 alta disponibilidade com ProxySQL e MHA\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/#listItem\",\"name\":\"DevOps\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/#listItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#listItem\",\"name\":\"Aula 23: MySQL em produ\\u00e7\\u00e3o \\u2014 alta disponibilidade com ProxySQL e MHA\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#listItem\",\"position\":3,\"name\":\"Aula 23: MySQL em produ\\u00e7\\u00e3o \\u2014 alta disponibilidade com ProxySQL e MHA\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/devops\\\/#listItem\",\"name\":\"DevOps\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"telephone\":\"+552138277513\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/cropped-logo-mini.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#organizationLogo\",\"width\":100,\"height\":75},\"image\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=61590814880509\",\"https:\\\/\\\/www.instagram.com\\\/jrtx.tech\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/\",\"name\":\"Thiago Paes Rodrigues\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#authorImage\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/cropped-foto-rascunho3-96x96.jpeg\",\"width\":96,\"height\":96,\"caption\":\"Thiago Paes Rodrigues\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#webpage\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/\",\"name\":\"Aula 23: MySQL em produ\\u00e7\\u00e3o \\u2014 alta disponibilidade com ProxySQL e MHA - BLOG - JRT Technology Solutions\",\"description\":\"Nesta aula final do curso MySQL \\u2014 Do Zero ao Avan\\u00e7ado, voc\\u00ea vai dominar uma das compet\\u00eancias mais cr\\u00edticas para qualquer profissional de banco de dados: colocar o MySQL em produ\\u00e7\\u00e3o de verdade. N\\u00e3o se trata apenas de subir uma inst\\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\\u00edvel, tolerante\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ai-image-1789764654165.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#mainImage\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 23: MySQL em produ\\u00e7\\u00e3o \\u2014 alta disponibilidade com ProxySQL e MHA\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/09\\\/18\\\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\\\/#mainImage\"},\"datePublished\":\"2026-09-18T17:50:57-03:00\",\"dateModified\":\"2026-09-18T17:50:57-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"alternateName\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA - BLOG - JRT Technology Solutions","description":"Nesta aula final do curso MySQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar uma das compet\u00eancias mais cr\u00edticas para qualquer profissional de banco de dados: colocar o MySQL em produ\u00e7\u00e3o de verdade. N\u00e3o se trata apenas de subir uma inst\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\u00edvel, tolerante","canonical_url":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#blogposting","name":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA - BLOG - JRT Technology Solutions","headline":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA","author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/09\/ai-image-1789764654165.jpg","width":1440,"height":1024,"caption":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA"},"datePublished":"2026-09-18T17:50:57-03:00","dateModified":"2026-09-18T17:50:57-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#webpage"},"isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#webpage"},"articleSection":"DevOps, MySQL \u2014 Do Zero ao Avan\u00e7ado: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA"},{"@type":"BreadcrumbList","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","position":1,"name":"Home","item":"https:\/\/jrtx.com.br\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/devops\/#listItem","name":"DevOps"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/devops\/#listItem","position":2,"name":"DevOps","item":"https:\/\/jrtx.com.br\/blog\/category\/devops\/","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#listItem","name":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA"},"previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#listItem","position":3,"name":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA","previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/devops\/#listItem","name":"DevOps"}}]},{"@type":"Organization","@id":"https:\/\/jrtx.com.br\/blog\/#organization","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","url":"https:\/\/jrtx.com.br\/blog\/","telephone":"+552138277513","logo":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#organizationLogo","width":100,"height":75},"image":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=61590814880509","https:\/\/www.instagram.com\/jrtx.tech\/"]},{"@type":"Person","@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author","url":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/","name":"Thiago Paes Rodrigues","image":{"@type":"ImageObject","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#authorImage","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/09\/cropped-foto-rascunho3-96x96.jpeg","width":96,"height":96,"caption":"Thiago Paes Rodrigues"}},{"@type":"WebPage","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#webpage","url":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/","name":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA - BLOG - JRT Technology Solutions","description":"Nesta aula final do curso MySQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar uma das compet\u00eancias mais cr\u00edticas para qualquer profissional de banco de dados: colocar o MySQL em produ\u00e7\u00e3o de verdade. N\u00e3o se trata apenas de subir uma inst\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\u00edvel, tolerante","inLanguage":"pt-BR","isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#breadcrumblist"},"author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"creator":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/09\/ai-image-1789764654165.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#mainImage","width":1440,"height":1024,"caption":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA"},"primaryImageOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/#mainImage"},"datePublished":"2026-09-18T17:50:57-03:00","dateModified":"2026-09-18T17:50:57-03:00"},{"@type":"WebSite","@id":"https:\/\/jrtx.com.br\/blog\/#website","url":"https:\/\/jrtx.com.br\/blog\/","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","alternateName":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","inLanguage":"pt-BR","publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","og:type":"article","og:title":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA - BLOG - JRT Technology Solutions","og:description":"Nesta aula final do curso MySQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar uma das compet\u00eancias mais cr\u00edticas para qualquer profissional de banco de dados: colocar o MySQL em produ\u00e7\u00e3o de verdade. N\u00e3o se trata apenas de subir uma inst\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\u00edvel, tolerante","og:url":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/","og:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:secure_url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:width":100,"og:image:height":75,"article:published_time":"2026-09-18T20:50:57+00:00","article:modified_time":"2026-09-18T20:50:57+00:00","article:publisher":"https:\/\/www.facebook.com\/profile.php?id=61590814880509","twitter:card":"summary_large_image","twitter:title":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA - BLOG - JRT Technology Solutions","twitter:description":"Nesta aula final do curso MySQL \u2014 Do Zero ao Avan\u00e7ado, voc\u00ea vai dominar uma das compet\u00eancias mais cr\u00edticas para qualquer profissional de banco de dados: colocar o MySQL em produ\u00e7\u00e3o de verdade. N\u00e3o se trata apenas de subir uma inst\u00e2ncia e criar tabelas. Trata-se de projetar, implementar e validar uma arquitetura altamente dispon\u00edvel, tolerante","twitter:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg"},"aioseo_meta_data":{"post_id":"2966","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_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":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_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"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,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-09-18 20:51:58","updated":"2026-09-18 20:51:58","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\/category\/devops\/\" title=\"DevOps\">DevOps<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tAula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/jrtx.com.br\/blog"},{"label":"DevOps","link":"https:\/\/jrtx.com.br\/blog\/category\/devops\/"},{"label":"Aula 23: MySQL em produ\u00e7\u00e3o \u2014 alta disponibilidade com ProxySQL e MHA","link":"https:\/\/jrtx.com.br\/blog\/2026\/09\/18\/aula-23-mysql-em-producao-alta-disponibilidade-com-proxysql\/"}],"_links":{"self":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/2966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/comments?post=2966"}],"version-history":[{"count":0,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/2966\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media\/2965"}],"wp:attachment":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}