MySQL Cluster

Antes de iniciar este post gostaria de informar que a tarefa aqui é apenas levantar o ambiente da imagem1. Não vou entrar nos detalhes sobre funcionalidades de cada serviço, deixarei este assunto para um próximo post.



Instalei os pacotes MySQL-Cluster-client-gpl-7.3.2.1.rhel5.x86_64.rpm e MySQL-Cluster-embedded-gpl-7.3.2.1.rhel5.x86_64.rpm em todos os servidores. A diferença está apenas na função que cada um vai assumir para o cluster funcionar.

No servidor de gerenciamento, configurei apenas o serviço ndb_mgmd. Em alguns rápidos testes, percebi que o cluster não funciona caso ele não esteja rodando!

O seu principal arquivo de configuração é o config.ini que no caso do CentOS 5.7 64bits está localizado em /usr/mysql-cluster/config.ini. A imagem abaixo descreve como configurei.


Depois de configurado, vamos iniciá-lo, para isso digite: ndb_mgm no terminal. O ndb_mgm informa quantos servidores estão conectados, assim como também a versão do mysql utilizada em cada servidor. Digite: ndb_mgm -e show e confira.


No servidor de banco de dados, após instalarmos os dois pacotes listados no inicio deste post, devemos configurar o arquivo my.cnf localizado por default no CentOS em /usr/my.cnf.

Gostaria de abrir um parênteses, porque como usuário do debian e suas derivações, estava acostumado com o arquivo my.cnf em outro diretório. Esta foi inclusive uma grande dificuldade que enfrentei durante o processo.

É preciso informar dois parâmetros adicionais na tag [mysqld] e criarmos as tags [mysql-cluster] e [ndb]. Como podem reparar, como este ambiente é apenas de teste, o my.cnf não possui nenhuma outra configuração.


Importante lembrar que os passos acima relacionados ao servidor de banco de dados 1, devem ser repetidos para o banco de dados 2. Feito isso, devemos iniciar os serviços: ndbd e MySQL em ambos os bancos de dados.
ndbd -c 10.0.2.120
/etc/init.d/mysql start --ndbcluster

O servidor que roda o ndb_mgm deve identificar as conexões, como mostra a imagem abaixo.

Apos iniciar os serviços, este deve ser o resultado!
Curiosidade: Reparem nas informações do conky(direita)

Quando os ndbd's e os mysql's estiverem rodando, vá até o servidor de banco de dados e crie um banco utilizando o engine: ndbcluster. Reparou que este banco foi automaticamente replicado no segundo servidor? agora crie as tabelas e comece a utilizar!

Muito importante informar que apenas os bancos de dados cujo a engine for ndbcluster vão ser replicados. Não consegui fazer funcionar utilizando innoDB, MyISAM ou qualquer outro.

Entendo que este post poderia ter mais detalhes! não tem porque ainda estou fazendo testes nesse ambiente. Optei por escrever apenas para documentar alguns passos.


Referencias:

https://dev.mysql.com/downloads/cluster/#downloads
http://imasters.com.br/artigo/11673/mysql/cluster-no-mysql-parte-01/
http://imasters.com.br/artigo/11901/mysql/cluster-no-mysql-parte-2/
http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster.html
http://bugs.mysql.com/bug.php?id=21743

5 comentários:

  1. Há meios de implementar o cadastro automático em um segundo banco de dados diretamente pelo banco titular.

    Williams.

    ResponderExcluir
  2. Bom Dia, estou tentando configurar mysql cluster no debian, mais tenho algumas dúvidas, preciso ter instalado o mysql-server nos servidores banco de dados antes da configuração. e outra como preceder para configurar no debian ?

    ResponderExcluir
  3. Para levantar esse ambiente não utilizei os pacotes de nome MySQL Server. Apenas o cluster, como listado acima. Talvez a confusão esteja exatamente nisso, embora o pacote tenha nome: MySQL Cluster ele é um server também.

    ResponderExcluir
  4. Bom então pra configurar no debian preciso instalar o pacote mysql-cluster-gpl-7.3.5-debian6.0-i686.deb nos mgm e ndb e seguir seus passos /

    ResponderExcluir
  5. O conceito assusta um pouco, mas esse primeiro passo é sim bem simples de fazer. Após levantar o ambiente, recomendo procurar por "MySQL Tuning". Existem infinidades de parametros que podem ser ajustados dependendo do ambiente que você aplicar o cluster.

    ResponderExcluir