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:
- Três Ubuntu 16.04 nós com um mínimo de 1 GB de RAM e rede privada habilitado
- Usuário não-root com privilégios sudo para cada nó ( Setup inicial do servidor com o Ubuntu 16.04 explica como configurar isso.)
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
|
---|
|
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
|
---|
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
|
---|
|
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
|
---|
|
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
|
---|
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: