Editado 4 dias atrás por ExtremeHow Equipe Editorial
DebianMySQLReplicaçãoBanco de DadosConfiguração do ServidorSQLLinuxCódigo AbertoAdministração de SistemasInterface de Linha de Comando
Tradução atualizada 4 dias atrás
A replicação MySQL é um processo que permite copiar automaticamente dados de um servidor de banco de dados MySQL (mestre) para um ou mais servidores de banco de dados MySQL (escravos). Essa configuração é muito útil para melhorar o desempenho, confiabilidade e balanceamento de carga. Neste guia, vamos percorrer os passos necessários para configurar a replicação MySQL em um servidor Linux Debian. Vamos cobrir tudo, desde preparar seu servidor, configurar as configurações de replicação e verificar se a replicação está funcionando corretamente. Vamos mergulhar nisso.
A replicação MySQL permite a cópia assíncrona de dados entre servidores de banco de dados. O servidor primário é conhecido como mestre, e qualquer servidor secundário que recebe os dados replicados é chamado de escravo. Essa arquitetura é benéfica em muitos cenários, como ambientes de banco de dados intensivo em leitura, processos de backup e recuperação de dados, análise de dados e data centers distribuídos geograficamente.
Antes de começar a configurar a replicação MySQL, certifique-se de que você tenha os seguintes pré-requisitos em mente:
Vamos começar configurando o servidor mestre, que manterá os dados originais e enviará atualizações para os servidores escravos.
Comece abrindo o arquivo de configuração do MySQL no servidor mestre. Este arquivo geralmente está localizado em /etc/mysql/mysql.conf.d/mysqld.cnf
. Use um editor de texto como o nano
para editá-lo:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Procure a seção [mysqld] no arquivo de configuração e modifique ou adicione as seguintes linhas:
[mysqld] log-bin = mysql-bin server-id = 1
A diretiva log-bin
habilita o registro binário, que é necessário para a replicação, pois registra todas as alterações no banco de dados. server-id
deve ser um número inteiro positivo único para cada servidor participante na configuração de replicação. Neste caso, usamos 1
como ID do servidor para o mestre.
Depois de editar, salve e feche o arquivo. Se você usou o nano, pode fazer isso pressionando CTRL + X
, depois Y
e depois ENTER
.
Para aplicar as alterações que fizemos, reinicie o serviço MySQL:
sudo systemctl restart mysql
Em seguida, faça login na linha de comando do MySQL no servidor mestre para criar uma conta de usuário que o servidor escravo possa usar para conectar para replicação. Use o seguinte comando:
mysql -u root -p
Após o login, execute os seguintes comandos SQL para criar um usuário de replicação e conceder a ele privilégios. Substitua 'replica_user'
e 'password'
pelo nome de usuário e senha de sua escolha:
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES;
Esses comandos criam um novo usuário MySQL com privilégios de replicação. Usar '%'
como host permite que o escravo se conecte de qualquer endereço IP.
Antes de prosseguir para configurar o escravo, você precisa registrar o arquivo de log e status atual do mestre. Use o seguinte comando para obter essas informações:
SHOW MASTER STATUS;
Anote os valores File
e Position
, pois eles serão necessários ao configurar o servidor escravo. A saída pode ser semelhante a esta:
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 123 | | | +------------------+----------+--------------+------------------+
Depois de configurar o servidor mestre, o próximo passo é configurar os servidores escravos.
Assim como na configuração do mestre, abra a configuração do MySQL em cada servidor escravo editando /etc/mysql/mysql.conf.d/mysqld.cnf
:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Certifique-se de que a seção [mysqld] tenha as seguintes configurações:
[mysqld] server-id = 2 relay-log = mysql-relay-bin
server-id
deve ser único e diferente de qualquer outro servidor na configuração de replicação. Aqui, usamos 2
. A configuração relay-log
facilita o processamento do fluxo de replicação do servidor mestre.
Depois de editar, salve e feche o arquivo de configuração como antes.
Reinicie o servidor MySQL no escravo para aplicar as alterações:
sudo systemctl restart mysql
Faça login no cliente de linha de comando MySQL no servidor escravo:
mysql -u root -p
Após o login, conecte o escravo ao mestre usando o comando CHANGE MASTER TO
. Certifique-se de substituir 'master_host'
, 'replica_user'
, 'password'
, 'mysql-bin.X'
e position_number
pelo endereço IP do servidor mestre, nome de usuário, senha, arquivo de log e posição obtidos anteriormente:
CHANGE MASTER TO MASTER_HOST = 'master_host', MASTER_USER = 'replica_user', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.X', MASTER_LOG_POS = position_number;
Depois de configurar as informações do mestre, inicie o processo do escravo com o seguinte comando:
START SLAVE;
Para verificar se o servidor escravo está configurado corretamente e conectado ao mestre, execute:
SHOW SLAVE STATUS\G;
Olhe para os campos Slave_IO_Running
e Slave_SQL_Running
na saída. Ambos devem mostrar Yes
para indicar que o escravo está funcionando corretamente. Você também deve olhar para os valores de Relay_Master_Log_File
e Exec_Master_Log_Pos
, que confirmam o progresso da replicação.
Depois de configurar ambos os servidores, mestre e escravo, é uma boa prática testar a configuração de replicação para garantir que tudo esteja funcionando como esperado.
Para testar a replicação, tente inserir uma entrada de dados simples no servidor mestre e veja se ela aparece no escravo.
No servidor mestre, faça login no MySQL e crie um banco de dados e uma tabela simples:
mysql -u root -p
CREATE DATABASE testdb; USE testdb; CREATE TABLE testtable (id INT PRIMARY KEY AUTO_INCREMENT, value VARCHAR(255)); INSERT INTO testtable (value) VALUES ('Replication Test');
Faça login na linha de comando do MySQL no servidor escravo e verifique se os dados foram replicados:
mysql -u root -p
USE testdb; SELECT * FROM testtable;
Você deve ver a linha inserida na tabela mestre agora presente na tabela escrava. Se a replicação estiver funcionando corretamente, você verá:
+----+------------------+ | id | value | +----+------------------+ | 1 | Replication Test | +----+------------------+
Caso surjam problemas durante ou após a configuração, aqui estão algumas etapas gerais de solução de problemas que você pode considerar:
ping
ou telnet
).A replicação MySQL no Debian, conforme demonstrado, envolve a configuração de servidores mestre e escravo para lidar e reproduzir alterações do banco de dados em vários sistemas. Esta configuração pode aumentar significativamente a confiabilidade e eficiência de acesso aos dados. Embora configurar a replicação exija algum esforço e compreensão da arquitetura do banco de dados, seguir essas instruções deve tornar o processo gerenciável e bem-sucedido.
Lembre-se de que é sempre uma boa ideia monitorar regularmente seu servidor MySQL e realizar verificações regulares de consistência e desempenho em seus dados replicados para garantir que seus sistemas funcionem de maneira suave e eficiente.
Se você encontrar algo errado com o conteúdo do artigo, você pode