A Replicação MySQL permite copiar facilmente o banco de dados de um servidor para outro. O MySQL suporta diferentes tipos de replicação, como master-slave, master-master e replicação de grupo. O MariaDB também oferece suporte à replicação multimestre. Neste artigo, veremos a replicação Master-Slave no MySQL e aprenderemos como replicar o banco de dados MySQL no Linux. Você pode usar estas etapas para replicar o banco de dados MySQL no Ubuntu, Debian, CentOS, Fedora, Red hat e outros tipos de Linux.
Como replicar o banco de dados MySQL
Aqui estão as etapas para replicar o banco de dados MySQL. Para nossa configuração, precisaremos de um banco de dados mestre (IP – 54.24.32.12) e um banco de dados escravo (IP – 45.12.21.23). Replicaremos o banco de dados chamado exampledb de mestre a escravo. Assumimos que você tem o MySQL instalado em ambos os servidores e tem privilégios de root para ambos. Caso contrário, você pode instalar o MySQL com o seguinte comando
$ sudo apt-get install mysql-server mysql-client
Bônus de leitura:Principais alternativas do MySQL Workbench
1. Editar arquivo de configuração mestre
Abra o terminal no servidor do banco de dados mestre e execute o seguinte comando
$ sudo vi /etc/mysql/my.cnf
Por padrão, as conexões remotas estão desabilitadas no MySQL. Precisamos permitir a conexão remota do escravo ao mestre para replicação. Então, descomentamos as duas linhas a seguir para permitir conexões remotas, adicionando # no início, conforme mostrado abaixo
#skip-networking #bind-address=127.0.0.1
Adicione ou descomente as seguintes linhas no bloco [mysqld] para se parecer com o seguinte.
[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb
Vejamos cada uma das linhas acima. A primeira linha server-id especifica um número de ID exclusivo para o mestre. Ele precisa ser um número positivo de 1 a 2^32.
log-bin especifica o local do arquivo de log que será preenchido pelo MySQL com detalhes de replicação.
binlog-do-db indica o nome do banco de dados que precisa ser replicado.
Reinicie o MySQL Server para aplicar as alterações
$ sudo service mysql restart
Faça login no MySQL como usuário root
$ sudo mysql -u root -p
e execute o seguinte comando
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | exampledb | | +------------------+----------+--------------+------------------+
Observe os detalhes acima, precisaremos deles mais tarde na Etapa 3.
Bônus de leitura:Como habilitar SSL/TLS no MySQL
2. Criar usuário de replicação
Faça login no servidor MySQL no mestre.
$ sudo mysql -u root -p
Você será solicitado a senha de root.
Depois de fazer login no MySQL, execute os seguintes comandos para criar um usuário remoto slave_user , e conceda a ele permissões de replicação para todos os bancos de dados. Por favor, substitua 45.12.21.23 abaixo pelo IP do seu servidor escravo e substitua $password por uma senha adequada conforme sua necessidade.
mysql> CREATE USER slave_user@45.12.21.23; mysql> GRANT REPLICATION SLAVE ON *.* TO slave_user@45.12.21.23 IDENTIFIED BY '$password'; mysql> FLUSH PRIVILEGES;
Adicione uma regra de firewall de entrada para a porta 3306 e permita 45.12.21.23. Esse usuário remoto precisa se conectar ao banco de dados mestre para que a replicação aconteça.
Bônus de leitura:Como alterar o agrupamento de todas as tabelas no MySQL
3. Editar arquivo de configuração do escravo
Abra o terminal no servidor do banco de dados escravo e execute o seguinte comando
$ sudo vi /etc/mysql/my.cnf
Adicione as seguintes linhas em [mysqld] para se parecer com
[mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = exampledb
Na primeira linha, atribuímos o ID do servidor 2 ao servidor escravo. As próximas linhas especificam os locais dos arquivos de log de retransmissão e de log de replicação. A última linha especifica o banco de dados a ser replicado.
Reinicie o MySQL Server e faça login no MySQL
$ sudo service mysql restart $ sudo mysql -u root -p
Execute os seguintes comandos para criar um banco de dados vazio no escravo.
mysql> CREATE DATABASE exampledb; mysql> USE exampledb;
Carregar dados do banco de dados mestre para preencher o banco de dados escravo
mysql> LOAD DATA FROM MASTER;
Saia do MySQL.
Bônus de leitura:Principais blogs de banco de dados a seguir
4. Inicializar a replicação
Enquanto estiver conectado ao MySQL, execute os seguintes comandos para iniciar o processo de replicação. Substitua as peças em negrito com seus valores.
mysql> SLAVE STOP; mysql> CHANGE MASTER TO MASTER_HOST='54.24.32.12', MASTER_USER='slave_user', MASTER_PASSWORD='<password>', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
MASTER_HOST – endereço IP ou nome de host do mestre (54.24.32.12).
MASTER_USER – usuário escravo que criamos na etapa #2.
MASTER_PASSWORD – senha do usuário escravo que criamos na etapa #2.
MASTER_LOG_FILE – arquivo que o MySQL devolveu na etapa 1 quando você executou
MOSTRAR STATUS MESTRE
MASTER_LOG_POS – posição que o MySQL devolveu quando você executou SHOW MASTER STATUS na etapa #1
Por fim, iniciamos o slave para iniciar a replicação do banco de dados MySQL.
mysql> START SLAVE;
Espero que este artigo o ajude a replicar o banco de dados MySQL.