Como configurar a replicação de mariadb (mestre-escravo) em CentOS/Rhel 7 e Debian 8/9

Como configurar a replicação de mariadb (mestre-escravo) em CentOS/Rhel 7 e Debian 8/9

Mesmo quando algumas pessoas ouvem a frase “Replicação do banco de dados“, Eles geralmente o associam à necessidade de ter várias cópias das mesmas informações para evitar a perda de dados em caso de falha de hardware ou corrupção de dados. Embora isso seja verdade, em certa medida, há muito mais na replicação do banco de dados do que o conceito comum de backup de um banco de dados e disponibilidade de dados.

Replicação de escravo mestre de mariadb em Centos/Rhel 7 e Debian 8/9

Entre outros benefícios da replicação do banco de dados em uma configuração de escravos mestre, podemos mencionar:

  1. Os backups podem ser feitos no servidor escravo sem afetar (e ser afetado) as operações de gravação no mestre.
  2. Operações intensivas em recursos (como análise de dados) podem ser realizadas no escravo sem influenciar o desempenho do mestre.

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

Se você está procurando Mysql replicação abaixo CENTOS/RHEL 6, Siga este guia Configuração do MySQL (mestre-escravo) Replicação no CentOS/RHEL 6

Instalando o Mariadb 10.1 em 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.18 escravo: 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 a versão mais antiga do mariadb, diga 5.5, considere atualizar para as últimas 10.1 versão usando o artigo abaixo.

  1. Atualize Mariadb 5.5 a Mariadb 10.1

Em Centos/Rhel

Crie um arquivo chamado Mariadb.repo dentro /etc/yum.Repos.d com o seguinte conteúdo em ambos Mestre e Escravo sistemas:

# Mariadb 10.1 Lista de Repositórios do CentOS-Criado 2016-01-23 14:16 UTC # http: // mariadb.org/mariadb/repositórios/[mariadb] nome = mariadb Baseurl = http: // yum.Mariadb.org/10.1/CENTOS7-AMD64 GPGKEY = https: // yum.Mariadb.org/rpm-gpg-key-mariadb gpgcheck = 1 

Salve o arquivo e instale o mariadb em ambos os servidores usando o yum:

# yum update && yum instalar mariadb-server mariadb-client 

Em Debian/Ubuntu

Adicione a chave para autenticar pacotes e o repositório Mariadb:

# apt-get Install Software-Properties-Common # apt-key Adv--RECV-KEYS-KeyServer.Ubuntu.COM 0XCBCB082A1BB943DB # add -pt-repository 'Deb [arch = amd64, i386] http: // espelho.Edatel.líquido.CO/MARIADB/REPO/10.1//Debian Jessie principal' 

Observação: Substitua a distribuição nome e nome de código na linha destacada acima.

Instalar usando apt-get comando:

# atualização apt-get # apt-get install mariadb-server 
Verifique a versão mariadb no mestre escravo-servidor

Depois de instalar o mariadb, execute o mysql_secure_installation Procedimento em mestre e escravo, vamos configurar um banco de dados de teste de amostra na máquina mestre.

Configurando uma amostra MySQL Database no mestre

Vamos agora configurar no servidor mestre o Funcionários banco de dados de https: // github.com/datacharmer/test_db (que fornece um conjunto de dados de 4 milhões de registros espalhados por seis mesas) em duas etapas simples:

Clone o repositório e use -o para importar o banco de dados de amostra para a instalação do Mariadb:

# clone git https: // github.com/datacharmer/test_db # cd test_db # mysql < employees.sql 

Configurando o MySQL Server no mestre

Para configurar o mestre, siga estas etapas:

PASSO 1: Editar o /etc/meu.CNF arquivo. Debaixo de [MySqld] Seção, adicione as quatro linhas a seguir:

Log-bin Server_id = 1 replicar-se-db = funcionários-address = 192.168.0.18 

e reinicie o mariadb:

# SystemCtl reinicie o mariadb 

PASSO 2: Faça logon no servidor mariadb como root, crie o escravo do usuário e atribua os subsídios necessários:

Mariadb [(nenhum)]> Crie o usuário 'escravo'@'localhost' identificado por 'slavePassword'; Mariadb [(nenhum)]> Conceder escravo de replicação em *.* Para escravo identificado por 'SlavePassword' com a opção de concessão; Mariadb [(nenhum)]> Privilégios descarregados; Mariadb [(nenhum)]> Limite as tabelas com o bloqueio de leitura; Mariadb [(nenhum)]> Mostrar status mestre; 

O durar comando (Mostrar status mestre) retorna a posição atual no log binário (as coordenadas exatas que indicam exatamente em que ponto o escravo deve começar a se replicar de:

Configure o MySQL Master para replicação

ETAPA 3: Saia do prompt de mariadb (com saída;) e use o seguinte comando para tirar um instantâneo do banco de dados dos funcionários. Quando você bate Digitar, Você será solicitado a digitar a senha da raiz que você configurou anteriormente mysql_secure_installation:

# mysqldump -u root -p funcionários> funcionários -dump.SQL 

Após a conclusão do despejo, conecte -se ao servidor de banco de dados novamente para desbloquear as tabelas e depois sair:

Mariadb [(nenhum)]> Desbloquear tabelas; Mariadb [(nenhum)]> saída; 

PASSO 4: Copie o despejo para o escravo:

# SCP Funcionários-dump.SQL [email protegido]:/root/ 

Etapa 5: Execute o mysql_upgrade Procedimento para atualizar as tabelas do sistema (você será solicitado a inserir a senha do Mariadb Root):

# mysql_upgrade -u root -p 

Etapa 6: Permitir o serviço de banco de dados através do firewall:

# firewall-cmd --add-service = mysql # firewall-cmd --add-service = mysql --permanente # firewall-cmd--reload 

Agora vamos configurar o escravo.

Configurando o servidor MySQL no escravo

Para configurar o escravo, siga estas etapas:

PASSO 1: Crie a conta para executar as tarefas de replicação. Conecte -se ao servidor MariaDB local com:

# mysql -u root -p 

e insira a senha que você configurou anteriormente.

PASSO 2: Uma vez conectado ao servidor de banco de dados, crie o usuário e um banco de dados vazio e conceda permissões:

Mariadb [(nenhum)]> Criar funcionários do banco de dados; Mariadb [(nenhum)]> Conceder todos os privilégios aos funcionários.* Para 'escravo'@'localhost' com a opção de concessão; Mariadb [(nenhum)]> Privilégios descarregados; 

ETAPA 3: Saia do prompt mariadb e carregue o despejo criado no servidor mestre:

# mysql -u root -p funcionários < employees-dump.sql 

PASSO 4: Editar o /etc/meu.CNF arquivo para atribuir um servidor EU IA para o escravo sob o [MySqld] seção. Observe que precisa ser um número inteiro diferente do que 1, como usamos 1 no mestre:

server_id = 2 replicar-d-db = funcionários 

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 do Mariadb Root):

# mysql_upgrade -u root -p 

Etapa 6: Depois que o despejo é importado para o escravo, somos apenas alguns passos para começar a replicar. Faça logon no banco de dados e execute os seguintes comandos no prompt de mariadb. Preste atenção especial ao Master_log_file e Master_log_pos variáveis, que devem corresponder aos valores retornados por Mostrar status mestre Na etapa 2 de "Configurando o mestre" acima.

Mariadb [(nenhum)]> Alterar mestre para master_host = "192.168.0.18 ", master_user =" escravo ", 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 de mariadb:

Mariadb [(nenhum)]> Iniciar escravo; Mariadb [(nenhum)]> Mostrar status de escravo \ g; 

Não que você precise disso agora, mas observe que você pode parar o escravo com:

Mariadb [(nenhum)]> Pare de escravo; 

Se o Mostrar status de escravo \ g; O comando retorna quaisquer erros. Use esses erros para solucionar problemas e depois execute Iniciar escravo; para testar novamente.

Teste a replicação do banco de dados MySQL/Mariadb

Vamos adicionar um registro ao funcionários Tabela no servidor mestre:

Mariadb [(nenhum)]> Insira nos funcionários (emp_no, birth_date, primeiro_name, last_name, gênero, contratação) valores (500000, '1983-07-12', 'Dave', 'null', 'm', '2014-12-12'); 

Em seguida, verifique se essa mudança foi replicada no escravo:

Mariadb [(nenhum)]> Usar funcionários; Mariadb [(nenhum)]> Selecione * de funcionários onde emp_no = 500000; 
Verifique a replicação do banco de dados MARIADB MYSQL

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

Resumo

Neste artigo, explicamos como instalar a versão mais recente do mariadb em CENTOS/RHEL 7 e Debian 8/9, e discutiu como configurar a replicação de mestrado com GTIDS. Para obter mais informações, convém consultar o guia de replicação do Mariadb e não hesite em entrar em contato conosco usando o formulário abaixo se tiver dúvidas ou comentários.