Estou pesquisando cluster MySQL. Para isso, faço uma demonstração com 4 máquinas virtuais. Eu tenho alguns problemas na prática.
Topologia
Minha topologia contém quatro nós Nó 1: nó de gerenciamento, endereço IP 192.168.56.205 Nó 2: nó SQL, endereço IP 192.168.56.206 Nó 3: nó de dados 1, endereço IP 192.168.56.207 Nó 4: nó de dados 2, endereço IP 192.168. 56.208
Outra informação
- SO Linux: Centos 6.4, 32 bits
- Kernel Linux: 2.6.32-358.el6.i686
- Versão do MySQL Cluster: MySQL-Cluster-gpl-7.3.6-2.el6.i686.rpm-bundle.tar
- RAM 128MB
- Desativou o firewall iptables
- Selinux desabilitado
Instalação
- Em todos os quatro nós, instalo MySQL-Cluster-server-gpl-7.3.6-2.el6.i686.rpm e MySQL-Cluster-shared-compat-gpl-7.3.6-2.el6.i686.rpm
- Exceto o nó 2 - nó sql, instalo mais MySQL-Cluster-client-gpl-7.3.6-2.el6.i686.rpm
configuração
No nó 1 - nó de gerenciamento
- Crie o diretório /var/lib/mysql-cluster, atribua owner:group is mysql:mysql
Crie /var/lib/mysql-cluster/config.ini:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M[padrão tcp]
número da porta=2202[ndb_mgmd]
hostname=192.168.56.205
datadir=/var/lib/mysql-cluster[ndbd]
hostname=192.168.56.207
datadir=/usr/local/mysql/data[ndbd]
hostname=192.168.56.208
datadir=/usr/local/mysql/data[mysqld]
hostname=192.168.56.206
No nó 2 - nó sql
[mysqld]
datadir = /var/lib/mysql
port = 3306
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.56.205
No nó 3 e nó 4 - nós de dados
- Crie o diretório /usr/local/mysql/data, atribua owner:group is mysql:mysql
Configurar /etc/my.cnf:
[mysqld] ndbcluster
[mysql_cluster] ndb-connectstring=192.168.56.205
Comece
No nó de gerenciamento, executo: ndb_mgmd -f /var/lib/mysql-cluster/config.ini No nó de dados 1 e 2, executo: ndbd Finalmente, no nó sql, executo: mysqld_safe &
Resultado
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.56.207)
id=3 @192.168.56.208 (mysql-5.6.19 ndb-7.3.6, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.56.205 (mysql-5.6.19 ndb-7.3.6)
[mysqld(API)] 1 node(s)
id=4 (not connected, accepting connect from any host)
Erro:
Nó 2: desligamento forçado do nó concluído. Ocorreu durante a fase inicial 0. Iniciado pelo sinal 11.
Há ndb_2_error.log em /usr/local/mysql/data do nó 2
O conteúdo de ndb_2_error.log:
Time: Monday 28 July 2014 - 09:45:01
Status: Temporary error, restart node
Message: WatchDog terminate, internal error or massive overload on the machine running this node (Internal error, programming error or missing error message, please report a bug)
Error: 6050
Error data: Job Handling
Error object: /export/home/pb2/build/sb_0-12598553-1404293345.9/rpm/BUILD/mysql-cluster-gpl-7.3.6/mysql-cluster-gpl-7.3.6/storage/ndb/src/kernel/vm/WatchDog.cpp
Program: ndbd
Pid: 1709
Version: mysql-5.6.19
Aviso para três nós: nó 2, nó 3 e nó 4
2014-07-28 09:47:23 [MgmtSrvr] WARNING -- Failed to allocate nodeid for API at 192.168.56.208. Returned error: 'No free node id found for mysqld(API).'
2014-07-28 09:47:23 [MgmtSrvr] WARNING -- Failed to allocate nodeid for API at 192.168.56.207. Returned error: 'No free node id found for mysqld(API).'
2014-07-28 09:47:23 [MgmtSrvr] WARNING -- Failed to allocate nodeid for API at 192.168.56.206. Returned error: 'No free node id found for mysqld(API).'
Obrigado pelo seu tempo.
Sem olhar em detalhes para sua configuração, eu apostaria que seu problema é o kernel fazendo uma morte por falta de memória (OOM): matando alguns de seus processos ndbd, etc. Geralmente, eles são registrados em
/var/log/messages
, para que você possa confirmá-los facilmente.Não tenho 100% de certeza se você pode executar um cluster NDB com esses aspectos, mas posso dizer que, na prática, você não deseja arquivos . Aqui está um guia sobre quanto consumo de memória você pode esperar mais ou menos do NDB . Lembre-se de que o NDB pré-aloca a maior parte de sua memória na primeira execução e que é um mecanismo transacional com foco na memória . Aumente sua memória RAM disponível e/ou reduza alguns de seus parâmetros de configuração.