Como replicar o Master-Slave no MySQL Server 5.7

Neste guia, mostraremos como você pode configurar a replicação master-slave no MySQL, primeiramente vamos entender o que exatamente é o MySQL e suas capacidades.

O MySQL é um dos mais populares sistemas de gerenciamento de banco de dados relacional. Ele é usado em pequenos aplicativos, como um rastreador de tempo pessoal, para aplicativos da Web gigantescos, como a Wikipedia.

O MySQL é um sistema de gerenciamento de banco de dados realmente poderoso que suporta quase todos os sites baseados no WordPress. Por padrão, o WordPress usa o MySQL RDBMS para gerenciar e operar os dados.

Alguns sites crescem mais rápido do que o esperado, o que significa que precisamos de mais recursos para executar as consultas do MySQL e fornecer o maior tempo de atividade possível. Em qualquer caso, podemos tirar proveito da replicação no MySQL Server 5.7.

Neste guia, vou começar explicando as vantagens da replicação do MySQL e, em seguida, vamos configurar uma replicação Master-Slave no MySQL Server 5.7.

Então, vamos ver os benefícios que podemos obter usando a replicação MySQL do Master-Slave.

Vantagens da replicação do MySQL

Existem poucas vantagens fundamentais que obtemos usando a replicação do MySQL.

Existem duas maneiras de dimensionar seu aplicativo ou banco de dados ou frontend. Ou fornecer mais recursos para o MySQL em um mesmo servidor, aumentando a RAM, os núcleos da CPU e o armazenamento, que é chamado de ampliação.

E há outra maneira de dimensionar, na qual criamos vários servidores e distribuímos a carga em todos os servidores. Essa é a vantagem que obtemos quando replicamos nosso servidor MySQL ou banco de dados MySQL.

Na replicação Master-Slave, o Master lida com todas as operações de gravação como Create, Update e Delete. Enquanto Slave lida com todas as operações de leitura, como Select.

Desta forma, podemos dizer a nossa aplicação para ler a partir da replicação MySQL Slave e Write on the Master.

Melhoria da Performance

Como podemos distribuir a carga tanto no Master quanto no Slave, podemos obter um melhor desempenho geral. É porque o Mestre tem que lidar apenas com consultas de Gravação e o Escravo tem que lidar apenas com consultas de Leitura.

Além disso, as consultas de leitura, se não forem tão complexas, usam menos recursos do que as consultas de gravação. E como vamos usar as consultas Slave for Read, podemos obter dados mais rapidamente do servidor para exibi-los ao usuário.

Então, estas são algumas vantagens da replicação Master-Slave no MySQL. Agora, podemos começar com o processo de configuração.

Pré-requisitos

Como é uma replicação Master-Slave, precisamos de dois VPS (Virtual private server) ou VM (Virtual machine).

Um funcionará como mestre e outro como escravo. Também precisamos de acesso root a ambos os servidores, pois temos que atualizar algumas linhas no arquivo de configuração do MySQL.

Temos que trabalhar em dois servidores agora.

Eu indicarei o Mestre como “root @ mysql-master: ~ #” e Slave como “root @ mysql-slave: ~ #” para que você possa evitar a execução de comandos em um servidor errado.

Se você tem dois servidores e acesso root a ambos, estamos prontos!

Configurar a replicação Master-Slave no MySQL

Eu dividi este tutorial em etapas simples e compreensíveis. Primeiro de tudo, temos que configurar o mestre.

Configurar o mestre
Considerando que você já tem o MySQL instalado em um servidor Master, podemos começar atualizando algumas linhas no arquivo de configuração do MySQL. Entretanto, se você não tiver o MySQL instalado em um servidor Master, execute os seguintes comandos para instalar o MySQL no master.

root @ mysql-master: ~ # # sudo apt-get atualizar
root @ mysql-master: ~ # # sudo apt-get install mysql-server mysql-client -y
root @ mysql-master: ~ # # sudo mysql_secure_installation

Uma vez que o MySQL está instalado no servidor, execute o seguinte comando para editar o arquivo de configuração do MySQL.

root @ mysql-master: ~ # sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Agora, encontre uma linha contendo bind-addresse. Deve se parecer com:

bind-address = 127.0.0.1

E substitua-o por:

bind-address = MASTER_IP_ADDRESS

Em seguida, encontre uma linha contendo server-ide log_bine descomente ambas as linhas. Depois de executar essa tarefa, verifique se ambas as linhas se parecem com as duas linhas a seguir.

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log

Uma vez feito, pressione CTRL + X seguido por Y e reinicie o serviço MySQL:

root @ mysql-master: ~ # serviço sudo mysql restart

É hora de criar um usuário MySQL com privilégios de replicação para que um usuário escravo possa replicar dados no servidor escravo.

Criar um usuário para escravo e registrar posição
No Master, faça o login no MySQL e execute os seguintes comandos para criar um usuário.

root @ mysql-master: ~ # mysql -uroot -p;
mysql> CREATE USER 'escravo' @ ' SLAVE_IP_ADDRESS ' IDENTIFICADO POR ' SLAVE_PASSWORD ';
mysql> GRANT REPLICATION SLAVE ON *. * TO 'escravo' @ ' SLAVE_IP_ADDRESS ';
mysql> FLUSH PRIVILEGES;

Em seguida, ative o bloqueio em seus bancos de dados para evitar a alteração nos dados.

mysql> FLUSH TABLES WITH READ LOCK;

Como as tabelas agora estão bloqueadas, podemos registrar a posição atual do registro para que o nosso servidor escravo possa começar a ler os dados daquela posição de registro. Para saber o status atual do servidor master, execute o seguinte comando na sua interface do MySQL.

mysql> SHOW MASTER STATUS;

Você verá uma tabela com uma única linha como a imagem a seguir.

Status do MySQL Master

Registre essa posição, pois ainda temos que dizer ao nosso escravo de onde começar.

Agora, temos que descarregar nossos bancos de dados MySQL para importá-los em um escravo com dados mestre.

Transferir dados do Master para o Slave

Agora, é hora de mover nossos dados atuais do MySQL para escravo, depois disso, ele pode começar a replicar a partir da posição de registro que acabamos de gravar. Para mover nossos dados do mestre para o escravo, primeiro temos que despejá-lo em um arquivo SQL.

root @ mysql-master: ~ # mysqldump -u raiz -p –all-databases –master-data> data.sql

Para transferir esse despejo de banco de dados do mestre para o escravo, podemos usar o comando SCP.

scp data.sql root @ SLAVE_IP : ~

Para migrar o arquivo, você terá que digitar a senha SSH do escravo. Após a migração, desbloqueie as tabelas no mestre.

mysql> UNLOCK TABLES;

Uma vez migrado, podemos seguir para a configuração do Slave. A parte mais difícil do tutorial acabou, agora só temos que configurar o nosso escravo e testar a replicação.

Configurar o Slave

Primeiro de tudo, nós temos que instalar o MySQL no slave. Você pode usar os mesmos comandos acima para instalar o MySQL no escravo. Se você já instalou o MySQL no slave, abra o arquivo de configuração do MySQL para atualizar algumas configurações.

root @ mysql-slave: ~ # sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Em seguida, pressione CTRL + W, digite bind-addresse pressione a tecla Enter. Substitua o endereço IP na diretiva bind-address de “127.0.0.1” para o endereço IP do escravo. A linha atualizada deve se parecer com isso.

bind-address = SLAVE_IP_ADDRESS

Agora, encontre uma linha contendo server-id, descomente a linha e defina o server-idpara “2”. Além disso, não se esqueça de atualizar a linha após “server-id”, que é a diretiva “log_bin”. O server-id e o log_bin atualizados devem ter esta aparência:

server-id = 2
log_bin = /var/log/mysql/mysql-bin.log

Reinicie o servidor MySQL usando o seguinte comando.

root @ mysql-slave: ~ # serviço sudo mysql restart

O próximo passo é importar o dump do banco de dados que criamos do mestre.

Importar o despejo de dados

Temos que importar os dados no escravo. Para importar dados, execute o seguinte comando no seu servidor escravo.

root @ mysql-slave: ~ # mysql -uroot -p <data.sql

Uma vez que os dados são importados, entre no MySQL no slave e pare o slave usando o seguinte comando.

root @ mysql-slave: ~ # mysql -uroot -p;
mysql> STOP SLAVE;

Agora podemos mudar o mestre para que nosso escravo possa saber qual servidor replicar. Atualize as informações principais usando o seguinte comando no MySQL.

mysql> CHANGE MASTER PARA MASTER_HOST = ' MASTER_IP ', MASTER_USER = 'escravo', MASTER_PASSWORD = ' SLAVE_PASSWORD ', MASTER_LOG_FILE = ' LOG_FILE_NAME ', MASTER_LOG_POS = LOG_FILE_POSITION ;

Não esqueça de substituir as variáveis ​​neste comando. MASTER_IP é o endereço IP do servidor mestre. SLAVE_PASSWORD é a senha que você definiu para o usuário escravo no servidor mestre. E você tem LOG_FILE_NAME e LOG_FILE_POSITION do servidor mestre. Eu mencionei para registrar esta informação.

Depois de executar o comando, inicie o escravo usando o START SLAVE comando no servidor escravo.

Se você pode ativar o escravo, você é bom ir! Você configurou uma replicação mestre-escravo no servidor MySQL 5.7. Agora é hora de testar a replicação.

Teste a replicação do MySQL

É muito fácil testar se a replicação mestre-escravo do MySQL está funcionando ou não. Nós já sabemos que o escravo basicamente continuará replicando os dados do mestre.

Podemos testar a replicação criando um banco de dados de teste no servidor mestre. Como resultado, ele deve aparecer automaticamente no escravo. Para criar um banco de dados de teste no master, faça o login no MySQL e execute o seguinte comando.

root @ mysql-master: ~ # mysql -uroot -p;
mysql> teste CREATE DATABASE;

Agora, abra a interface de linha de comando do MySQL em seu servidor escravo e verifique se o novo banco de dados existe.

Para obter a lista de banco de dados, execute o seguinte comando no escravo.

root @ mysql-slave: ~ # mysql -uroot -p;
mysql> MOSTRAR BANCOS DE DADOS;

Na lista, você deve ver um banco de dados chamado “teste”. Se você puder ver o banco de dados, a replicação do MySQL está funcionando. Caso contrário, a replicação não está funcionando.

Nesse caso, você pode seguir o guia desde o início novamente.

Então, é assim que você pode configurar a replicação Master-Slave no servidor MySQL 5.7. Se você estiver enfrentando algum problema seguindo este guia, entre em contato com o suporte técnico da Delta Servers para obter ajuda.

E Não deixe de visitar: https://www.deltaservers.com.br/ para acompanhar as soluções disponível na Delta Servers.