Pesquisa de site

Como configurar a replicação mestre-escravo do MySQL no Ubuntu 18.04


A replicação mestre-escravo do MySQL é um procedimento que permite que arquivos de banco de dados sejam replicados ou copiados em um ou mais nós em uma rede. Esta configuração fornece redundância e tolerância a falhas de modo que, no caso de uma falha no nó mestre, os bancos de dados ainda possam ser recuperados no nó escravo. Isso dá aos usuários a tranquilidade de que nem tudo será perdido em nenhuma eventualidade, pois uma réplica dos bancos de dados ainda pode ser recuperada de um servidor diferente.

Neste guia, você aprenderá como executar uma replicação Mestre-escravo de banco de dados MySQL em um sistema Ubuntu 18.04.

Pré-requisitos

Na configuração, teremos dois servidores rodando Ubuntu 18.04 com os seguintes endereços IP.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Vamos agora nos aprofundar e ver como podemos configurar a configuração da replicação Master-slave no Ubuntu.

Etapa 1: Instale o MySQL nos nós mestre e escravo

Os repositórios do Ubuntu contêm a versão 5.7 do MySQL. Para aproveitar quaisquer novos recursos e evitar possíveis problemas, você deve instalar a versão mais recente do MySQL. Mas primeiro, vamos atualizar os dois nós usando o seguinte comando apt.

sudo apt update

Para instalar o MySQL em ambos os nós, execute o comando.

sudo apt install mysql-server mysql-client

Em seguida, abra o arquivo de configuração mysql.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

No nó mestre, role e localize o atributo bind-address conforme mostrado abaixo.

bind-address 	 =127.0.0.1

Altere o endereço de loopback para corresponder ao endereço IP do nó mestre.

bind-address  	=10.128.0.28

Em seguida, especifique um valor para o atributo server-id na seção [mysqld]. O número escolhido não deve corresponder a nenhum outro número de identificação do servidor. Vamos atribuir o valor 1.

server-id	 =1

No final do arquivo de configuração, copie e cole as linhas abaixo.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Saia do arquivo de configuração e reinicie o serviço MySQL para que as alterações tenham efeito no nó mestre.

sudo systemctl restart mysql

Para verificar se o servidor MySQL está funcionando conforme esperado, emita o comando.

sudo systemctl status mysql

Perfeito! O servidor MySQL está funcionando conforme o esperado!

Etapa 2: Criar um novo usuário para replicação no nó mestre

Nesta seção, criaremos um usuário de replicação no nó mestre. Para conseguir isso, faça login no servidor MySQL conforme mostrado.

sudo mysql -u root -p

A seguir, prossiga e execute as consultas abaixo para criar um usuário de réplica e conceder acesso ao escravo de replicação. Lembre-se de usar seu endereço IP.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Em seguida, execute o seguinte comando.

mysql> SHOW MASTER STATUS\G

A saída deve ser semelhante ao que você pode ver abaixo.

Esteja atento e anote o valor mysql-bin.000002 e o ID da posição 1643. Estes valores serão cruciais ao configurar o servidor escravo.

Etapa 3: configurar o servidor MySQL Slave

Vá para o servidor escravo e, como fizemos com o servidor mestre, abra o arquivo de configuração do MySQL.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Assim como o servidor mestre, edite as linhas a seguir.

bind-address           = 10.128.0.29

Como antes, especifique um valor para o atributo server-id na seção [mysqld]. Desta vez selecione um valor diferente. Vamos com 2.

server-id		=2 

Novamente, cole as linhas abaixo no final do arquivo de configuração.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Em seguida, reinicie o servidor MySQL no nó escravo.

sudo systemctl restart mysql

Uma vez feito isso, salve e saia do editor de texto

Em seguida, faça login no shell do MySQL conforme mostrado.

sudo mysql -u root -p

Nesta etapa, você precisará fazer algumas configurações que permitirão que o servidor escravo se conecte ao servidor mestre. Mas primeiro, pare os threads escravos conforme mostrado.

mysql> STOP SLAVE; 

Para permitir que o servidor escravo replique o servidor mestre, execute o comando.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Se você estiver interessado o suficiente, observará que usamos o valor mysql-bin.00002 e o ID de posição 1643 exibido anteriormente após a criação do usuário de replicação escravo.

Além disso, foram utilizados o endereço IP do servidor Master, usuário de replicação e senha.

Mais tarde, inicie o tópico que você interrompeu anteriormente.

mysql> START SLAVE;

Etapa 4: verifique a replicação mestre-escravo do MySQL

Para verificar se a configuração está realmente funcionando conforme o esperado, vamos criar um novo banco de dados no master e verificar se ele foi replicado no servidor MySQL Slave.

Faça login no MySQL no servidor mestre.

sudo mysql -u root -p

Vamos criar um banco de dados de teste. Neste caso, criaremos um banco de dados chamado replication_db.

mysql> CREATE DATABASE replication_db;

Agora, faça login em sua instância MySQL no servidor escravo.

sudo mysql -u root -p

Agora liste os bancos de dados usando a consulta.

mysql> SHOW DATABASES;

Você notará que o banco de dados criado no mestre foi replicado no escravo. Incrível ! Sua replicação MySQL Master-slave está funcionando conforme o esperado! Agora você pode ter certeza de que, em caso de falha, as cópias dos arquivos do banco de dados serão replicadas para o servidor escravo.

Conclusão

Neste guia, você aprendeu como configurar uma configuração de replicação MySQL Master-slave no Ubuntu 18.04.