Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como replicar o banco de dados MySQL para outro servidor


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.