Cluster MySQL - Instalação e configuração

Nesse artigo aprenderemos como configurar um cluster MySQL com três nós, um nó de gerenciamento e dois nós de armazenamento.

[ Hits: 55.947 ]

Por: André Costa em 25/10/2010


Introdução



Bom pessoal, espero que esse artigo seja útil para alguém, serei claro e rápido na instalação e configuração.

Para instalação do cluster MySQL foi usado RHEL 5.2 (Red Hat Enterprise Linux), também poderá ser usado o CentOS 5.2 e 5.3.

Espero que gostem, comentários e críticas construtivas serão bem vindas para o melhoramento de futuros artigos.

Bom, vamos pôr a mão na massa.

Vamos ver nosso ambiente de trabalho.
  • BD1 - 172.16.3.241 - Servidor de Gerenciamento (MGM) node.
  • BD2 - 172.16.3.242 - Servidor de Armazenamento (NDBD) node 1.
  • BD3 - 172.16.3.243 - Servidor de Armazenamento (NDBD) node 2.

1° passo - Configuração do servidor de gerenciamento (MGM)

Primeiramente instalar os seguintes pacotes através do YUM:

# yum install perl-HTML*
# yum install perl-DBD-MySQL


Link para baixar os pacotes do MySQL usado nesse tutorial:
Instalar pacotes:

# rpm -ivh MySQL-ndb-management-5.0.90-1.glibc23.i386.rpm
# rpm -ivh MySQL-ndb-tools-5.0.90-1.glibc23.i386.rpm


Criar diretório:

# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini


[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the .world. database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]

# Seção do Gerenciamento (MGM)
[NDB_MGMD]
#NodeId = 1
# Endereco IP do nó de Gereciamento
HostName=172.16.3.241

# Seção do Servidor de Armazenamento (NDBD)
[NDBD]
#NodeId = 2
# Endereco IP do Servidor Armazenamento (NDBD) node 1
HostName=172.16.3.242
DataDir=/var/lib/mysql
BackupDataDir=/var/lib/backup
DataMemory=100M

[NDBD]
#NodeId = 3
# Endereco IP do Servidor Armazenamento (NDBD) node 2
HostName=172.16.3.243
DataDir=/var/lib/mysql
BackupDataDir=/var/lib/backup
DataMemory=100M

# one [MYSQLD] per storage node
# 2 Clientes MySQL
[MYSQLD]
#NodeId = 5
[MYSQLD]
#NodeId = 6

Após configurar os endereços IP dos servidores no arquivo de configuração config.ini é preciso iniciar o serviço de gerenciamento:

# ndb_mgmd

Comando para entrar no console de administração:

# ndb_mgm

Comando "SHOW" mostra os nós que estão conectados ao cluster:

ndb_mgm> show

Comando "HELP" para melhores informações:

ndb_mgm> help

Mas como ainda não possuímos outros nós, vamos criá-los.

    Próxima página

Páginas do artigo
   1. Introdução
   2. 2° passo - Configuração dos servidores de armazenamento (NDBD) node 1 e node 2
   3. Como desligar e reiniciar o cluster
Outros artigos deste autor

Webmail Squirrelmail e Roundcubemail, Clamav e SpamAssassin integrados no MTA Postfix

Servidor de e-mail Postfix + MySQL + Dovecot + Cyrus

Leitura recomendada

MySQL Workbench no Slackware 14.0

Instalando o MySQL Workbench - com solução de possível problemas de dependência

Configurando Apache + MySQL + PHP no Slackware

OcoMon 2.0RC6 no OpenSUSE 11.2 com PHP5 + MySQL5 + Apache2 com correção de acentuação

Slackware + MariaDB (MySQL): importando e exportando arquivos TXT

  
Comentários
[1] Comentário enviado por fs.schmidt em 26/10/2010 - 12:15h

Parabéns, exclente solução e artigo !

[2] Comentário enviado por removido em 26/10/2010 - 14:30h

Muito Bom seu artigo...

Mas tenho uma dúvida? O acesso ao banco se dará pelo servidor de Gerenciamento?

E se o servidor de Gerenciamento falhar, estiver down, como fica o acesso das aplicações que estão usando este acesso?

Mais uma vez parabéns...

Bruno Lima®

[3] Comentário enviado por andrecostall em 26/10/2010 - 16:28h

Opa, muito obrigado Bruno !!!

As aplicações podem se conectar tanto no servidor 172.16.3.242 (BD2) como no servidor 172.16.3.243 (BD3). Mas se eles tentarem se conectar ao servidor que possui as ferramentas administrativas 172.16.3.241 (BD2) eles não conseguiram se conectar, ele somente faz o gerenciamento do Cluster.
Caso um nó do cluster não esteja "up" isso não será um problema para a aplicação, uma vez que os outros nós funcionaram de forma independente. Quando um nó estiver "down" e quando subir o serviço NDBD ele irá procurar as informações perdidas e tentará sincronizar os dados.

Há, tem uma ferramenta chamada "MySQLProxy" esse serviço faz o balanceamento de carga, você pode instalar no Servidor de Gerenciamento, ai as aplicações podem se conectar apenas no Servidor de Gerenciamento, com esse serviço você terá uma solução completa de balanceamento de carga, tolerância a falhas e replicação dos dados por meio do cluster.

Bom cara é isso, espero ter tirado sua dúvida.

Qualquer coisa me add no msn andreclsilva@hotmail.com.

Abraços

[4] Comentário enviado por snails em 14/11/2010 - 17:51h

Bom artigo....

To pensando já aonde posso aplica essa solução..rsrsrsrs...

Referente a pergunta do bjnl eu entendi a duvida.....alias...como vão gerenciar os nodos, se o gerenciador estiver off.....

Bem, pelo que parece, o gerenciador que faz o sync dos bancos..... então caso ele esteja off, vc apenas perde o sync dos bancos de dados....
Uma solução robusta e phoderosa para usar com esse sistema seria o heartbeat com sync de sistemas. Foi postado um tuto sobre ele aqui no VOL....

Poderia ser feito um heartbeat do gerenciador com o MysqlProxy e alguns nodos do cluster..isso tbm garantiria 99,9% de osciosidade nos seus sstemas DB.

Vai ae a dica !!!

Flw

[5] Comentário enviado por wasleyalmeida em 03/05/2013 - 09:02h

Bom dia amigo,

Desculpe minha ignorância, consigo utilizar essa tecnologia possuindo apenas dois servidores, ou seja

Servidor 1: rodaria o NDBD (node 1) e rodaria tb o MGM
Servidor 2: rodaria o NDBD (node 2) e receberia as replicações do node 2.

Deseja agradeço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts