Pular para o conteúdo

Sincronização segura entre bancos de dados MySQL utilizando SJA

Este tutorial tem como objetivo explicar como fazer a sincronização unilateral entre bancos de dados MySQL utilizando a versão livre do SQLyog Job Agent (SJA) para Linux.
Henrique Ribeiro Rezende henriquerr
Hits: 51.497 Categoria: Banco de Dados Subcategoria: MySQL
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Parte 2: Tunelamento SSH (opcional)

Para a conexão entre os bancos de dados criaremos um túnel SSH. Assim a sincronização ficará mais segura e não precisaremos deixar a porta do MySQL com acessos externos. Nos exemplos vamos considerar esta sincronização unilateral. Para fazer uma sincronização bilateral, basta aplicar o tunelamento SSH em ambos os lados. Como estamos supondo uma sincronização unilateral, vamos considerar o cliente como a máquina que vai sincronizar seu banco com o servidor. Vale ressaltar que esta parte é opcional, caso não haja necessidade de transferir os dados de maneira segura basta ignorar esta parte.

Basicamente iremos mapear uma porta do computador cliente para que ao entrarmos, estejamos acessando uma porta do servidor (no caso, a porta do MySQL, 3306). Toda esta conexão será feita através de SSH. Portanto, na realidade não estamos acessando diretamente a porta 3306 do servidor, e sim a porta 22. Assim que criarmos esta conexão, teremos acesso ao MySQL como se estivéssemos dentro do servidor.

Se executarmos o comando abaixo, teremos um tunelamento SSH entre duas máquinas. Não convém a este tutorial explicar como funciona cada parâmetro abaixo. Para isto, basta verificar neste site* o motivo de cada parâmetro.

# ssh -f -L local-port:remote-address:remote-port login-name sleep 60 >> logfile

Sendo que local-port é a porta local (do cliente) a qual queremos acessar diretamente no servidor, remote-address:remote-port é o endereço do servidor com a porta a qual acessaremos o MySQL. O SSH mapeará este endereço com esta porta na local-port do cliente, portanto aqui colocaremos 127.0.0.1:3306 que é o endereço do MySQL de dentro do servidor, e login-name é o login usado para conectar no servidor (Por exemplo root@ServerAddress).

Porém toda vez que executarmos esse comando ele pedirá a senha do servidor e isto não é interessante para a aplicação. Para não termos que digitar esta senha a cada conexão, basta criarmos uma chave DSA no cliente e colocarmos no servidor. Assim o servidor sempre aceitará conexão vinda da máquina que gerou a chave.

Para isso, basta executarmos os seguintes comandos no cliente:

# ssh-keygen -t dsa -f ~/.ssh/id_dsa
# cat ~/.ssh/id_dsa.pub | ssh login-name 'cat - >> ~/.ssh/authorized_keys'
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


Na primeira linha estamos criando uma chave DSA e armazenando em id_dsa. Neste caso estamos usando o parâmetro DSA devido ao suporte ao SSH versão 2. Se seu sistema suporta somente o SSH versão 1, troque esta opção por rsa1.

Na segunda e terceira linha, colocamos a chave dentro do arquivo de chaves autorizadas no cliente e no servidor. login-name é o login do servidor, conforme já informado acima.

Repita o comando para criar o tunelamento e repare que não será pedida a senha novamente.

Referência: PHP, MySQL and SSH Tunneling (Port Forwarding) « The Metric System

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Tunelamento SSH (opcional)
   3. Sincronização utilizando SJA
Nenhum artigo encontrado.

Resolva Problemas com o MySQL Workbench no Linux Mint 21.1

Sqlite Manager - Plugin do Firefox para criação e manipulação SQL

Replicação em banco de dados MySQL

Instalando o MySQL no Slackware

Administrando bancos MySQL com phpMyAdmin

#1 Comentário enviado por jhonatasbs em 26/08/2011 - 13:30h
Muito bom seu artigo porém estou com muito problema pra executa-lo, quando eu configuro o xml para conexão, ele conecta certinho, porém da erro com o socket do meu mysql, tem como eu inserir a localidade do socket no XML do sja?
#2 Comentário enviado por joaoportal em 05/07/2012 - 16:54h
Olá. Funcionou perfeitamente no meu, até criei um arquivo (conectar.sh) para executar tudo de uma vez. Porém quando jogo para ser executado no crontab ele não funciona a linha: ssh -f -L 3307 ...
Todo o resto funciona mesnos essa linha.

Segue o conecta.sh
----------------------------------------------------------------------------------------
#!/bin/bash
echo iniciando!! >> /home/teste/mysql/teste.txt

#contecta no servidor - APENAS O COMANDO ABAIXO NÃO EXECUTA
ssh -f -L 3307:127.0.0.1:3306 root@127.123.26.119 sleep 240 >> /home/teste/mysql/logfile
#backups
/home/teste/mysql/sja /home/teste/mysql/festas.xml
echo 'fim!!' >> /home/teste/mysql/teste.txt
----------------------------------------------------------------------------------------

Aguardo
#3 Comentário enviado por phenrique0206 em 16/09/2013 - 15:16h
Pra mim deu a seguinte mensagem de erro:

SQLyog Job Agent v11.24 (64 bit) Copyright(c) Webyog Inc. All Rights Reserved.

Error in the job file. Error No. 9 : Error reading end tag.

Check sja.log for complete error details.


O que pode ser isso?

Contribuir com comentário

Entre na sua conta para comentar.