Base de Conhecimento

Como criar uma infraestrutura multi-node no MySQL no Ubuntu imprimir

  • multi-node, mysql, ubuntu, infraestrutura
  • 0

Introdução

MySQL cluster é uma tecnologia de software que fornece alta disponibilidade e rendimento. Se você já está familiarizado com outras tecnologias de cluster, você vai se familiarizar com o cluster MySQL. Em suma, há um ou mais nós de gestão que controlam os nós de dados (onde os dados são armazenados). Após consulta com o nó de gerenciamento, os clientes (clientes MySQL, servidores ou APIs nativas) conectam-se diretamente aos nós de dados.

Você pode se perguntar como a replicação do MySQL está relacionada com clusters MySQL. Com o aglomerado não há replicação típica de dados, mas em vez que existe a sincronização dos nós de dados. Para o efeito, um mecanismo de dados especial deve ser usado - NDBCluster (NDB). Pense no cluster como um único ambiente MySQL lógico com componentes redundantes. Assim, um cluster MySQL pode participar de replicação com outros clusters MySQL.

MySQL cluster funciona melhor em um ambiente compartilhado. Idealmente, há dois componentes que devem compartilhar o mesmo hardware. Para simplificar, a fins de demonstração, vamos limitar-nos a usar apenas três nós. Haverá dois nós que atuam como nós de dados que são a sincronização de dados entre si. A terceiro nó vai ser usado para o gestor de cluster e ao mesmo tempo para o servidor / cliente MySQL. Se você tem mais nós, você pode adicionar mais nós de dados, separar o gerenciador de clusters do servidor / cliente MySQL, e até mesmo adicionar mais nós como gestores de clusters e servidores MySQL / clientes.

Pré-requisitos

Você vai precisar de um total de três nós - um nó para o gerenciador de clusters MySQL e o servidor / cliente MySQL e dois nós para os redundantes nós de dados MySQL.

No mesmo centro de dados DigitalOcean, criar os seguintes nós com redes privadas habilitadas:

MySQL cluster armazena uma grande quantidade de informação na RAM. Cada nó deve ter pelo menos 1 GB de RAM.

Como mencionado no tutorial rede privada , certifique-se de registros personalizados de configuração para os 3 nós. Por uma questão de simplicidade e conveniência, usaremos os seguintes registros personalizados para cada nó no /etc/hosts file:

 

10.XXX.XX.X node1.mysql.cluster 
10.YYY.YY.Y node2.mysql.cluster 
10.ZZZ.ZZ.Z manager.mysql.cluster

 

Por favor, substitua os IPs destacadas com os IPs privados de seus nós correspondentemente.

Salvo indicação em contrário, todos os comandos que requerem privilégios de root neste tutorial deve ser executado com um usuário não-root com privilégios sudo.

 

Passo 1 - Download e instalação MySQL Cluster

 

No momento da escrita deste tutorial, a última versão GPL do cluster MySQL é 7.4.11. O produto é construído em cima do MySQL 5.6 e inclui:

  • Software gerenciador de clusters
  • Software gerenciador de nó de dados
  • MySQL 5.6 servidor e binários do cliente

Você pode baixar a versão gratuita, geralmente disponíveis (GA) MySQL Cluster da página oficial de download de cluster MySQL . A partir desta página, escolher o pacote de plataforma Debian Linux, que também é adequado para Ubuntu. Também certifique-se de selecionar o de 32 bits ou a versão de 64-bit dependendo da arquitetura de seus nós. Enviar o pacote de instalação para cada uma de seus nós.

A instrução de instalação será a mesma para todos os nós, por isso, concluir essas etapas em todos os 3 nós.

Antes de iniciar a instalação, o libaio1 pacote deve ser instalado uma vez que é uma dependência:

 

sudo apt-get install libaio1

Depois disso, instale o pacote de cluster MySQL:

sudo dpkg -i mysql-cluster-gpl-7.4.11-debian7-x86_64.deb

Agora você pode encontrar a instalação do cluster MySQL no diretório /opt/mysql/server-5.6/ .Vamos trabalhar especialmente com o diretório bin ( /opt/mysql/server-5.6/bin/ ), onde todos os binários estão.

Os mesmos passos de instalação deve ser realizada em todos os três nós, independentemente do fato de que cada um terá função diferente - gerente o nó de dados.

Em seguida, vamos configurar o gerenciador de clusters MySQL em cada nó.

 

Passo 2 - Configurando e Iniciando o Cluster Manager

Nesta etapa, vamos configurar o gerenciador de clusters MySQL ( manager.mysql.cluster ). Sua configuração adequada irá garantir a sincronização correta e distribuição de carga entre os nós de dados.Todos os comandos devem ser executados em nó manager.mysql.cluster .

O gerenciador de cluster é o primeiro componente que tem de ser iniciado em qualquer cluster. Ele precisa de um arquivo de configuração que é passado como um argumento para o seu arquivo binário. Por conveniência, vamos usar o arquivo /var/lib/mysql-cluster/config.ini para a sua configuração.

No manager.mysql.cluster nó, primeiro deve-se criar o diretório onde esse arquivo residirá (/var/lib/mysql-cluster ):

 

sudo mkdir / var / lib / mysql-cluster 

Em seguida, crie um arquivo e comece a editá-lo com nano:

sudo nano /var/lib/mysql-cluster/config.ini

Este arquivo deve conter o seguinte código:

/var/lib/mysql-cluster/config.ini
[ndb_mgmd]
# Management process options:
hostname=manager.mysql.cluster  # Hostname of the manager
datadir=/var/lib/mysql-cluster  # Directory for the log files

[ndbd]
hostname=node1.mysql.cluster    # Hostname of the first data node
datadir=/usr/local/mysql/data   # Remote directory for the data files

[ndbd]
hostname=node2.mysql.cluster    # Hostname of the second data node
datadir=/usr/local/mysql/data   # Remote directory for the data files

[mysqld]
# SQL node options:
hostname=manager.mysql.cluster  # In our case the MySQL server/client is on the same Droplet as the cluster manager

 

Para cada um dos componentes acima nós definimos um hostname parâmetro. Esta é uma medida de segurança importante porque somente o nome do host especificado será permitido para se conectar com o gerente e participar do cluster de acordo com seu papel designado.

 

Além disso, os hostname parâmetros especificam a interface que o serviço será executado. Isso é importante para a segurança, porque no nosso caso, os nomes de host acima apontam para IPs privados que temos especificadas no /etc/hosts arquivos. Assim, você não pode acessar qualquer um dos serviços acima do lado de fora da rede privada.

 

No arquivo acima, você pode adicionar mais componentes redundantes, como nós de dados (ndbd) ou servidores MySQL (mysqld) por apenas definir instâncias adicionais exatamente da mesma maneira.

 

Agora você pode iniciar o gerenciador, pela primeira vez, executando o ndb_mgmd binário e especificando o arquivo de configuração com o -f argumento como este:

sudo /opt/mysql/server-5.6/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

Você deverá ver uma mensagem sobre bem-sucedido iniciar semelhante a este:

 

Output of ndb_mgmd
MySQL Cluster Management Server mysql-5.6.29 ndb-7.4.11

 

Você provavelmente gostaria de ter o serviço de gestão iniciado automaticamente com o servidor. O lançamento do cluster GA não vem com um script de inicialização adequado, mas há alguns disponíveis online. Para o início você pode simplesmente adicionar o comando de início para o arquivo /etc/rc.local e o serviço será iniciado automaticamente durante a inicialização. Primeiro, porém, você terá que se certificar de que /etc/rc.local é executado durante a inicialização do servidor. No Ubuntu 16.04 este requer a execução de um comando adicional:

sudo systemctl enable rc-local.service

Em seguida, abra o arquivo /etc/rc.local para edição:

sudo nano /etc/rc.local

Adicionar o comando de partida antes da exit linha como esta:

/etc/rc.local
...
/opt/mysql/server-5.6/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
exit 0

 

Salve e saia do arquivo.

 

O gerente de cluster não tem que correr o tempo todo. Ele pode ser iniciado, parado e reiniciado sem tempo de inatividade para o cluster. É necessário apenas durante o arranque inicial dos nós do cluster e o servidor / cliente MySQL.

Passo 3 - Configurando e iniciando os nós de dados

Em seguida, vamos configurar os nós de dados ( node1.mysql.cluster e node2.mysql.cluster para armazenar os arquivos de dados e apoiar adequadamente o motor NDB. Todos os comandos devem ser executados em ambos os nós. Você pode começar com node1.mysql.cluster e, em seguida, repetir exatamente os mesmos passos em node2.mysql.cluster .

Os nós de dados ler a configuração a partir do arquivo de configuração do MySQL padrão /etc/my.cnf e mais especificamente a parte depois da linha [mysql_cluster] . Criar este arquivo com nano e começar a editá-lo:

sudo nano /etc/my.cnf

Especifique o nome do host do gerente como este:

/etc/my.cnf
[mysql_cluster]
ndb-connectstring=manager.mysql.cluster

 

Salve e saia do arquivo.

 

Especificando a localização do gerente é a única configuração necessária para o motor de nó para iniciar.O resto da configuração será retirado o gerente diretamente. Em nosso exemplo, o nó de dados vai descobrir que seu diretório de dados é /usr/local/mysql/ conforme a configuração do gerenciador. Este diretório tem que ser criado no nó. Você pode fazê-lo com o comando:

sudo mkdir -p /usr/local/mysql/data

Depois você pode iniciar o nó de dados pela primeira vez com o comando:

sudo /opt/mysql/server-5.6/bin/ndbd

Depois de um início bem sucedido você deve ver uma saída semelhante:

Output of ndbd
2016-05-11 16:12:23 [ndbd] INFO     -- Angel connected to 'manager.mysql.cluster:1186'
2016-05-11 16:12:23 [ndbd] INFO     -- Angel allocated nodeid: 2

Você deve ter o serviço ndbd iniciado automaticamente com o servidor. O lançamento do cluster GA não vem com um script de inicialização adequado para isso também. Assim como fizemos para o gerenciador de clusters, vamos adicionar o comando de inicialização para o /etc/rc.local arquivo. Mais uma vez, você terá de se certificar de que /etc/rc.local é executado durante a inicialização do servidor com o comando:

sudo systemctl enable rc-local.service

Em seguida, abra o arquivo /etc/rc.local para edição:

sudo nano /etc/rc.local

Adicione o comando de partida antes do exit linha como esta:

/etc/rc.local

...

 /opt/mysql/server-5.6/bin/ndbd 

exit 0

 

Salve e saia do arquivo.

 

Depois de terminar com o primeiro nó, repetir exatamente os mesmos passos no outro nó, que é node2.mysql.cluster em nosso exemplo.

Passo 4 - Configurando e iniciando o servidor MySQL e cliente

Um servidor MySQL padrão, tal como o que está disponível em padrão repositório apt do Ubuntu, não suporta o motor de cluster MySQL NDB. É por isso que você precisa da instalação do servidor MySQL personalizado. O pacote de cluster que já instalado nos três nós vem com um servidor MySQL e um cliente também. Como já mencionado, vamos usar o servidor MySQL e o cliente no nó de gerenciamento ( manager.mysql.cluster ).

A configuração é armazenada novamente no arquivo padrão  /etc/my.cnf . Em manager.mysql.cluster , abra o arquivo de configuração:

sudo nano /etc/my.cnf

Em seguida, adicione a seguinte linha a ele:

<table class="confluenceTable tablesorter tablesorter-default" style="border-collapse: collapse; overflow-x: aut

Esta resposta lhe foi útil?
« Retornar