Este artigo tem como objetivo apresentar como instalar e configurar um cluster MySQL baseado em 2 servidores. E perceba que o MySQL ainda pode continuar funcionando quando qualquer servidor tiver problemas ou estiver inativo.
Perceber! Embora este seja um cluster MySQL baseado em 2 servidores, deve haver um terceiro servidor adicional como nó de gerenciamento, mas este servidor pode ser desligado após a conclusão da inicialização do cluster. Ao mesmo tempo, deve-se observar que não é recomendado desligar o servidor que serve como nó de gerenciamento após a conclusão da inicialização do cluster. Embora seja teoricamente possível construir um cluster MySQL baseado em apenas dois servidores, com tal arquitetura, uma vez que um servidor cai, o cluster não pode continuar a funcionar normalmente, perdendo assim o significado do cluster. Por esse motivo, é necessário um terceiro servidor para funcionar como nó de gerenciamento. Além disso, muitos amigos podem não ter o ambiente real de três servidores, por isso podem considerar a realização de experimentos em VMWare ou outras máquinas virtuais.
O seguinte assume a situação destes três serviços:
Servidor1: mysql1.vmtest.net 192.168.0.1
Servidor2: mysql2.vmtest.net 192.168.0.2
Servidor3: mysql3.vmtest.net 192.168.0.3
Servidores1 e Servidor2 servem como servidores que realmente configuram o cluster MySQL. Os requisitos para Server3 como nó de gerenciamento são menores. Apenas pequenos ajustes são necessários no sistema Server3 e não há necessidade de instalar o MySQL Server3 pode usar um computador com configuração inferior e pode executar outros serviços no Server3 ao mesmo tempo. 2. Instale o MySQL no Servidor1 e Servidor2
================================De [url]/u/info_img/2009-05/30/url] Baixe mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz Nota: Deve ser a versão máxima do MySQL. A versão padrão não suporta implantação de cluster! As etapas a seguir precisam ser executadas uma vez no Servidor1 e no Servidor2.
# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# cd /usr/local/
#grupoadd mysql
#useradd -g mysql mysql
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
#cd mysql
# scripts/mysql_install_db --user=mysql
# chown -R raiz.
# chown -R dados mysql
#chgrp -R mysql.
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
#chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld Não inicie o MySQL neste momento!
Instalar e configurar o servidor do nó de gerenciamento (Server3)
==================================== Como um servidor de nó de gerenciamento, o Server3 requer dois arquivos: ndb_mgm e ndb_mgmd: Baixe mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz de [url]/u/info_img/2009-05/30/url]
# mkdir /usr/src/mysql-mgm
# cd /usr/src/mysql-mgm
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
#rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# cd mysql-max-4.1.9-pc-linux-gnu-i686
# mv bin/ndb_mgm .
# mv bin/ndb_mgmd.
#chmod +x ndb_mg*
# mv ndb_mg* /usr/bin/
#cd
# rm -rf /usr/src/mysql-mgm Agora comece a criar o arquivo de configuração para este servidor do nó de gerenciamento:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini Adicione o seguinte conteúdo ao config.ini:
[NDBD PADRÃO]
NoOfReplicas=2
[PADRÃO MYSQLD]
[NDB_MGMD PADRÃO]
[PADRÃO TCP]
#ManagementServer
[NDB_MGMD]
HostName=192.168.0.3 #O endereço IP do servidor do nó de gerenciamento Server3
# Mecanismos de armazenamento
[NDBD]
HostName=192.168.0.1 #O endereço IP do cluster MySQL Server1
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.2 #O endereço IP do cluster MySQL Server2
DataDir=/var/lib/mysql-cluster
# Os dois [MYSQLD] a seguir podem preencher os nomes de host do Servidor1 e Servidor2.
# Porém, para substituir o servidor no cluster de forma mais rápida, é recomendado deixar em branco, caso contrário esta configuração deverá ser alterada após a substituição do servidor.
[MYSQL]
[MYSQLD] Após salvar e sair, inicie o servidor do nó de gerenciamento Server3:
# Depois de iniciar o nó de gerenciamento com ndb_mgmd, observe que este é apenas o serviço do nó de gerenciamento, não o terminal de gerenciamento. Portanto, você não verá nenhuma informação de saída sobre a inicialização. 4. Configure o servidor de cluster e inicie o MySQL
============================= As seguintes alterações precisam ser feitas no Servidor1 e no Servidor2:
# vi /etc/my.cnf
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.3 # Endereço IP do Servidor3
[mysql_cluster]
ndb-connectstring=192.168.0.3 #Depois de salvar o endereço IP do Server3 e sair, crie um diretório de dados e inicie o MySQL:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# /usr/local/mysql/bin/ndbd --initial
# /etc/rc.d/init.d/mysqld start Você pode adicionar /usr/local/mysql/bin/ndbd a /etc/rc.local para iniciar. Nota: Você só precisa usar o parâmetro --initial ao iniciar o ndbd pela primeira vez ou após fazer alterações no config.ini do Server3! 5. Verifique o status de trabalho
================ Retorne ao servidor do nó de gerenciamento Server3 e inicie o terminal de gerenciamento:
# /usr/bin/ndb_mgm Digite o comando show para visualizar o status de trabalho atual: (A seguir está um exemplo de saída de status)
[root@mysql3 root]# /usr/bin/ndb_mgm
-- Cluster NDB -- Cliente de gerenciamento --
ndb_mgm> mostrar
Conectado ao Servidor de Gerenciamento em: localhost:1186
Configuração de cluster
--------------------------
[ndbd(NDB)] 2 nós
id=2 @192.168.0.1 (versão: 4.1.9, grupo de nós: 0, mestre)
id=3 @192.168.0.2 (versão: 4.1.9, grupo de nós: 0)
[ndb_mgmd(MGM)] 1 nó(s)
id=1 @192.168.0.3 (versão: 4.1.9)
[mysqld(API)] 2 nós
id=4 (versão: 4.1.9)
id=5 (versão: 4.1.9)
ndb_mgm>
Se não houver problemas acima, comece a testar o MySQL agora: Observe que este documento não define a senha root para MySQL. É recomendado que você mesmo defina a senha root do MySQL para Server1 e Server2. No Servidor1:
# /usr/local/mysql/bin/mysql -u root -p
> teste de uso;
> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
> INSERIR EM ctest() VALORES (1);
> SELECT * FROM ctest Você poderá ver 1 linha de informações retornadas (valor de retorno 1). Se o acima estiver normal, mude para o Servidor2 e repita o teste acima para observar o efeito. Se for bem-sucedido, execute INSERT no Server2 e depois volte para o Server1 para observar se funciona normalmente. Se não houver problemas, parabéns pelo sucesso! 6. Testes destrutivos
============== Desconecte o cabo de rede do Servidor1 ou Servidor2 e observe se o outro servidor de cluster está funcionando normalmente (você pode usar a consulta SELECT para testar). Após a conclusão do teste, reinsira o cabo de rede. Caso você não tenha acesso ao servidor físico, ou seja, não consiga desconectar o cabo de rede, você também pode testar assim: No Servidor1 ou Servidor2:
# ps aux | grep ndbd verá todas as informações do processo ndbd:
raiz 5578 0,0 0,3 6220 1964 ?
raiz 5579 0,0 20,4 492072 102828 R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd e então elimine um processo ndbd para destruir o servidor de cluster MySQL:
# kill -9 5578 Após 5579, use a consulta SELECT em outro servidor de cluster para testar. E se você executar o comando show no terminal de gerenciamento do servidor do nó de gerenciamento, verá o status do servidor danificado. Após a conclusão do teste, você só precisa reiniciar o processo ndbd do servidor danificado:
#ndbdAtenção! Como mencionado anteriormente, não há necessidade de adicionar o parâmetro --initial neste momento! Neste ponto, a configuração do cluster MySQL está concluída!