MySQL Cluster · 3 min read · Oct 02, 2025
Como Configurar um Cluster MySQL Balanceado por Carga
Como Configurar um Cluster MySQL Balanceado por Carga
Versão 1.0
Autor: Falko Timme
Este tutorial mostra como configurar um cluster MySQL 5 com três nós: dois nós de armazenamento e um nó de gerenciamento. Este cluster é balanceado por um balanceador de carga de alta disponibilidade que, na verdade, possui dois nós que utilizam o pacote Ultra Monkey, que fornece heartbeat (para verificar se o outro nó ainda está ativo) e ldirectord (para dividir as requisições entre os nós do cluster MySQL).
Neste documento, utilizo o Debian Sarge para todos os nós. Portanto, a configuração pode diferir um pouco para outras distribuições. A versão do MySQL que utilizo nesta configuração é a 5.0.19. Se você não quiser usar o MySQL 5, também pode usar o MySQL 4.1, embora eu não tenha testado.
Este guia é destinado a ser um guia prático; não cobre os fundamentos teóricos. Eles são tratados em muitos outros documentos na web.
Este documento é fornecido sem garantia de qualquer tipo! Quero dizer que esta não é a única maneira de configurar um sistema desse tipo. Existem muitas maneiras de alcançar esse objetivo, mas este é o caminho que eu sigo. Não dou nenhuma garantia de que isso funcionará para você!
1 Meus Servidores
Eu uso os seguintes servidores Debian que estão todos na mesma rede (192.168.0.x neste exemplo):
- sql1.example.com: 192.168.0.101 Nó 1 do cluster MySQL
- sql2.example.com: 192.168.0.102 Nó 2 do cluster MySQL
- loadb1.example.com: 192.168.0.103 Balanceador de Carga 1 / Servidor de gerenciamento do cluster MySQL
- loadb2.example.com: 192.168.0.104 Balanceador de Carga 2
Além disso, precisamos de um endereço IP virtual: 192.168.0.105. Ele será atribuído ao cluster MySQL pelo balanceador de carga, para que as aplicações tenham um único endereço IP para acessar o cluster.
Embora queiramos ter dois nós do cluster MySQL em nosso cluster MySQL, ainda precisamos de um terceiro nó, o servidor de gerenciamento do cluster MySQL, por um motivo principal: se um dos dois nós do cluster MySQL falhar, e o servidor de gerenciamento não estiver em execução, então os dados nos dois nós do cluster se tornarão inconsistentes (“cérebro dividido”). Também precisamos dele para configurar o cluster MySQL.
Portanto, normalmente precisaríamos de cinco máquinas para nossa configuração:
2 Nós do cluster MySQL + 1 Servidor de gerenciamento do cluster + 2 Balanceadores de Carga = 5Como o servidor de gerenciamento do cluster MySQL não usa muitos recursos, e o sistema ficaria apenas parado sem fazer nada, podemos colocar nosso primeiro balanceador de carga na mesma máquina, o que nos economiza uma máquina, então acabamos com quatro máquinas.
2 Configurar o Servidor de Gerenciamento do Cluster MySQL
Primeiro, precisamos baixar o MySQL 5.0.19 (a versão max!) e instalar o servidor de gerenciamento do cluster (ndb_mgmd) e o cliente de gerenciamento do cluster (ndb_mgm - que pode ser usado para monitorar o que está acontecendo no cluster). Os seguintes passos são realizados em loadb1.example.com (192.168.0.103):
loadb1.example.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\ glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/bin/ndb_mg*
cd /usr/src
rm -rf /usr/src/mysql-mgm
Em seguida, devemos criar o arquivo de configuração do cluster, /var/lib/mysql-cluster/config.ini:
loadb1.example.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
| [NDBD DEFAULT] NoOfReplicas=2 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] # Seção para o nó de gerenciamento do cluster [NDB_MGMD] # Endereço IP do nó de gerenciamento (este sistema) HostName=192.168.0.103 # Seção para os nós de armazenamento [NDBD] # Endereço IP do primeiro nó de armazenamento HostName=192.168.0.101 DataDir= /var/lib/mysql-cluster [NDBD] # Endereço IP do segundo nó de armazenamento HostName=192.168.0.102 DataDir=/var/lib/mysql-cluster # um [MYSQLD] por nó de armazenamento [MYSQLD] [MYSQLD] |
Por favor, substitua os endereços IP no arquivo adequadamente.
Então, iniciamos o servidor de gerenciamento do cluster:
loadb1.example.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini Faz sentido iniciar automaticamente o servidor de gerenciamento na inicialização do sistema, então criamos um script init muito simples e os links de inicialização apropriados:
loadb1.example.com:
echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.