MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como configurar a replicação MariaDB (Master-Slave) no CentOS/RHEL 7 e Debian 8/9


Mesmo quando algumas pessoas de TI ouvem a frase “Replicação de banco de dados “, muitas vezes associam isso à necessidade de ter várias cópias da mesma informação para evitar a perda de dados em caso de falha de hardware ou corrupção de dados. Embora isso seja verdade até certo ponto, há muito mais na replicação de banco de dados do que o conceito comum de backup de um banco de dados e disponibilidade de dados.

Entre outros benefícios da replicação de banco de dados em uma configuração mestre-escravo podemos citar:
  1. Os backups podem ser feitos no servidor escravo sem afetar (e ser afetado por) as operações de gravação no mestre.
  2. As operações que consomem muitos recursos (como análise de dados) podem ser executadas no escravo sem influenciar o desempenho do mestre.

Neste artigo, explicaremos como configurar a replicação mestre-escravo no MariaDB 10.1 . Ao contrário da replicação clássica, o MariaDB introduziu o conceito de IDs de transação global (GTIDs ) na v10.0 , que permite alterar um escravo para conectar e replicar de um mestre diferente facilmente. Além disso, o estado do escravo é registrado de maneira segura contra falhas (as atualizações do estado são feitas na mesma transação que as atualizações dos dados).

Se você estiver procurando por MySQL replicação em CentOS/RHEL 6 , siga este guia Configurar a replicação MySQL (Master-Slave) no CentOS/RHEL 6

Instalando o MariaDB 10.1 no CentOS/RHEL 7 e Debian 8/9


Nosso ambiente de teste consiste nas seguintes máquinas (ambas são CentOS 7 ):
Mestre:192.168.0.18Escravo:192.168.0.19

Para instalar a versão mais recente do MariaDB, precisaremos adicionar seus repositórios aos nossos servidores. Se você estiver usando uma versão mais antiga do MariaDB, digamos 5.5, considere atualizar para a versão 10.1 mais recente usando o artigo abaixo.
  1. Atualize o MariaDB 5.5 para o MariaDB 10.1

No CentOS/RHEL


Crie um arquivo chamado MariaDB.repo dentro de /etc/yum.repos.d com o seguinte conteúdo em ambos Master e Escravo sistemas:
# Lista de repositórios MariaDB 10.1 CentOS - criada 2016-01-23 14:16 UTC# http://mariadb.org/mariadb/repositories/[mariadb]name =MariaDBbaseurl =http://yum.mariadb.org/ 10.1/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1

Salve o arquivo e instale o MariaDB nos dois servidores usando o yum:
# yum update &&yum install MariaDB-server MariaDB-client

No Debian/Ubuntu


Adicione a chave para autenticar os pacotes e o repositório MariaDB:
# apt-get install software-properties-common# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db# add-apt-repository 'deb [arch=amd64,i386] http:/ /mirror.edatel.net.co/mariadb/repo/10.1/debian jessie principal'

Observação :Substitua a distribuição nome e codinome na linha destacada acima.

Instale usando apt-get comando:
# apt-get update# apt-get install mariadb-server

Depois de instalar o MariaDB, execute o mysql_secure_installation procedimento no mestre e no escravo, vamos configurar um banco de dados de teste de amostra na máquina mestre.

Configurando um banco de dados MySQL de exemplo no mestre


Agora vamos configurar no servidor master os Employees banco de dados de https://github.com/datacharmer/test_db (que fornece um conjunto de dados de 4 milhões de registros distribuídos em seis tabelas) em duas etapas simples:

Clone o repositório e use-o para importar o banco de dados de amostra para sua instalação do MariaDB:
# git clone https://github.com/datacharmer/test_db# cd test_db# mysql  

Configurando o servidor MySQL no mestre


Para configurar o mestre, siga estas etapas:

ETAPA 1: Edite o /etc/my.cnf Arquivo. Sob o [mysqld] seção, adicione as quatro linhas a seguir:
log-binserver_id=1replicate-do-db=employeesbind-address=192.168.0.18

e reinicie o MariaDB:
# systemctl reinicie o mariadb

ETAPA 2: Faça logon no servidor MariaDB como root, crie o usuário slave e atribua as permissões necessárias:
MariaDB [(nenhum)]> CRIAR USUÁRIO 'slave'@'localhost' IDENTIFICADO POR 'SlavePassword';MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* PARA slave IDENTIFICADO POR 'SlavePassword' COM GRANT OPTION;MariaDB [(none)]> FLUSH PRIVILEGES;MariaDB [(nenhum)]> FLUSH TABLES WITH READ LOCK;MariaDB [(none)]> MOSTRAR STATUS MESTRE;

O último comando (MOSTRAR STATUS MESTRE ) retorna a posição atual no log binário (as coordenadas exatas que indicam exatamente em qual ponto o escravo deve começar a replicar:

ETAPA 3: Saia do prompt do MariaDB (com exit; ) e use o comando a seguir para tirar um instantâneo do banco de dados de funcionários. Quando você pressiona Enter , você será solicitado a digitar a senha do root que você configurou anteriormente através de mysql_secure_installation :
# mysqldump -u root -p funcionários> funcionários-dump.sql

Após a conclusão do dump, conecte-se ao servidor de banco de dados novamente para desbloquear as tabelas e saia:
MariaDB [(nenhum)]> DESBLOQUEAR TABELAS;MariaDB [(nenhuma)]> sair;

ETAPA 4: Copie o dump para o slave:
# scp employees-dump.sql [email protected]:/root/ 

ETAPA 5: Execute o mysql_upgrade procedimento para atualizar as tabelas do sistema (você será solicitado a inserir a senha de root do MariaDB):
# mysql_upgrade -u root -p

ETAPA 6: Permita o serviço de banco de dados através do firewall:
# firewall-cmd --add-service=mysql# firewall-cmd --add-service=mysql --permanent# firewall-cmd --reload

Agora vamos configurar o slave.

Configurando o MySQL Server no Slave


Para configurar o escravo, siga estes passos:

ETAPA 1: Crie a conta para executar as tarefas de replicação. Conecte-se ao servidor MariaDB local com:
# mysql -u root –p

e digite a senha que você configurou anteriormente.

ETAPA 2: Uma vez conectado ao servidor de banco de dados, crie o usuário e um banco de dados vazio e conceda as permissões:
MariaDB [(nenhum)]> CREATE DATABASE funcionários;MariaDB [(none)]> CONCEDER TODOS OS PRIVILÉGIOS AOS funcionários.* PARA 'slave'@'localhost' COM OPÇÃO DE CONCESSÃO;MariaDB [(none)]> PRIVILÉGIOS DE LIMPEZA;

ETAPA 3: Saia do prompt do MariaDB e carregue o dump criado no servidor master:
# mysql -u root -p funcionários  
ETAPA 4: Edite o /etc/my.cnf arquivo para atribuir um ID de servidor para o escravo sob o [mysqld] seção. Observe que ele precisa ser um número inteiro diferente de 1 , pois usamos 1 no mestre:
server_id=2replicate-do-db=employees

Reinicie o servidor de banco de dados:
# systemctl reinicie o mariadb

ETAPA 5: Execute o mysql_upgrade procedimento para atualizar as tabelas do sistema (você será solicitado a inserir a senha de root do MariaDB):
# mysql_upgrade -u root -p

ETAPA 6: Uma vez que o dump foi importado para o slave, faltam apenas alguns passos para começar a replicar. Faça logon no banco de dados e execute os seguintes comandos no prompt do MariaDB. Preste atenção especial ao MASTER_LOG_FILE e MASTER_LOG_POS variáveis, que devem corresponder aos valores retornados por SHOW MASTER STATUS no PASSO 2 de “Configurando o mestre” acima.
MariaDB [(nenhum)]> ALTERAR MASTER PARA MASTER_HOST='192.168.0.18', MASTER_USER='slave', MASTER_PASSWORD='SlavePassword', MASTER_PORT=3306, MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=314, MASTER_CONNECT_RETRY=10, MASTER_USE_GTID=current_pos; 
ETAPA 7: Inicie o escravo e verifique seu status sem sair do prompt do MariaDB:
MariaDB [(nenhum)]> START SLAVE;MariaDB [(nenhum)]> MOSTRAR STATUS DO ESCRAVO\G;

Não que você precise disso agora, mas observe que você pode parar o escravo com:
MariaDB [(nenhum)]> PARAR DE ESCRAVO;

se SHOW SLAVE STATUS\G; comando retorna quaisquer erros. Use esses erros para solucionar problemas e execute START SLAVE; para testar novamente.

Testar a replicação de banco de dados MySQL/MariaDB


Vamos adicionar um registro aos funcionários tabela no servidor mestre:
MariaDB [(nenhum)]> INSERT INTO funcionários (emp_no, birth_date, first_name, last_name, gender, rental_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12'); 
Em seguida, verifique se essa alteração foi replicada no escravo:
MariaDB [(nenhum)]> USE funcionários;MariaDB [(nenhum)]> SELECT * FROM empregados WHERE emp_no=500000;

Como você pode ver, a replicação está funcionando corretamente do mestre para o escravo.

Resumo


Neste artigo, explicamos como instalar a versão mais recente do MariaDB no CentOS/RHEL 7 e Debian 8/9, e discutimos como configurar a replicação mestre-escravo com GTIDs. Para obter mais informações, você pode consultar o Guia de Replicação do MariaDB e não hesite em nos contatar usando o formulário abaixo se tiver dúvidas ou comentários.