alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

1. alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

shoujo
shoujo

(usa Slackware)

Enviado em 28/10/2018 - 18:23h

Olá, vou descrever o cenário
Tenho 2 servidores, 1 em nuvem, e dois locais...
Os 2 tem um banco de dados MySQL com o mesmo nome.
Preciso de criar um script, de preferencia em Python que sincronize os dados entre os 2 servidores..
É assim, em cada um dos bancos de dados tem todas as tabelas iguais..
Funciona assim: no servidor 1 algumas tabelas tem que ser escritas nele, essas tabelas são apenas leitura no servidor 2.
Já as outras tabelas são escritas no servidor 2, e no 1 são somente leitura, e uma das tabelas do servidor 2 não existe no servidor 1.
Enfim, qual a melhor forma de fazer isso, vcs acham?
Sqldump(Enviar o arquivo de texto via ftp? ou outro meio)
Eu pensei em enviar os dados via json no websocket, mas tenho medo desse processo ficar pesado.
Alguém recomenda alguma forma mais simples?


  


2. Re: alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

Fabiano
fpires

(usa Debian)

Enviado em 29/10/2018 - 10:41h

Já tentou utilizar a replicação nativa do MySQL?


3. Re: alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

shoujo
shoujo

(usa Slackware)

Enviado em 30/10/2018 - 16:46h

fpires escreveu:

Já tentou utilizar a replicação nativa do MySQL?


Para usar replicação nativa, precisa liberar porta, e os dois precisariam ter ip publico... E tambem por motivos de segurança...
E tb nao preciso que tudo se replique, somente as tabelas especificas, que existem em um e outro.


4. Re: alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

Paulo Bonfanti
pbonfanti

(usa Debian)

Enviado em 31/10/2018 - 10:01h

shoujo escreveu:

fpires escreveu:

Já tentou utilizar a replicação nativa do MySQL?


Para usar replicação nativa, precisa liberar porta, e os dois precisariam ter ip publico... E tambem por motivos de segurança...
E tb nao preciso que tudo se replique, somente as tabelas especificas, que existem em um e outro.


Na documentação do mysql diz que é possível replicar apenas tabelas selecionadas, se você puder resolver seu problema usando recursos do proprio SGBD, acho que é menos sujeito a falhas:
https://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html#option_mysqld_replicate-do-ta...

A respeito de portas existem circunstancias onde alguns admins fazem tunelamentos via ssh para usar certas aplicações em VPS, mas eu nunca usei pessoalmente e nem mexo com banco de dados, mas talvez esse seja o seu caminho, e o ssh tem a vantagem extra de criptografia.
https://www.digitalocean.com/community/tutorials/how-to-secure-mysql-replication-using-ssh-on-a-vps


5. Re: alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

Fabiano
fpires

(usa Debian)

Enviado em 31/10/2018 - 10:37h

pbonfanti escreveu:

shoujo escreveu:

fpires escreveu:

Já tentou utilizar a replicação nativa do MySQL?


Para usar replicação nativa, precisa liberar porta, e os dois precisariam ter ip publico... E tambem por motivos de segurança...
E tb nao preciso que tudo se replique, somente as tabelas especificas, que existem em um e outro.


Na documentação do mysql diz que é possível replicar apenas tabelas selecionadas, se você puder resolver seu problema usando recursos do proprio SGBD, acho que é menos sujeito a falhas:
https://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html#option_mysqld_replicate-do-ta...

A respeito de portas existem circunstancias onde alguns admins fazem tunelamentos via ssh para usar certas aplicações em VPS, mas eu nunca usei pessoalmente e nem mexo com banco de dados, mas talvez esse seja o seu caminho, e o ssh tem a vantagem extra de criptografia.
https://www.digitalocean.com/community/tutorials/how-to-secure-mysql-replication-using-ssh-on-a-vps


Também pensei nisso, uma VPN ou mesmo um tunelamento SSH autenticado por chaves, talvez com a flag de compressão ativada para melhor performance.


6. Re: alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

Ricardo Fabiano Silva
madrugada

(usa Gentoo)

Enviado em 31/10/2018 - 12:05h

Vamos lá! Se você conseguir um tunelamento vai ficar mais fácil, mas é possível mesmo sem tunelamento.

Digamos que você precisa exportar 5 tabelas: a,b,c,d,e
Essas cinco tabelas devem ter cada uma ao menos um campo id que seja 'unique';

Crie uma nova tabela para guardar os parâmetros da exportação, com no mínimo dois campos: table(sim, um campo chamado tabela:-)) e max-value. Esses nomes são apenas sugestões, só pra você entender a idéia da coisa.

O compo table conterá 5 linhas com os valores (a,b,c,d,e). Na verdade cada linha conterá o nome real de cada tabela que será exportada e o campo max-value o valor do maior id que foi exportado.

Agora crie a rotina de exportação para CSV, txt ou até mesmo para um arquivo excel que conterá as 5 tabelas.

No fim colete o valor máximo do id de cada tabela e registre na tabela de parametros de exportação.

Pegue esses arquivos CSV(ou outro) gerados e disponibilize em um local que o outro servidor possa acessar para efetuar a importação.

Na próxima exportação você exportará somente os valores maiores que o id registrado.

Esse tipo de solução vale pra qualquer banco de dados.


7. Re: alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

Ricardo Fabiano Silva
madrugada

(usa Gentoo)

Enviado em 31/10/2018 - 12:23h

Ou pode usar alguma máquina que tenha rede para os dois servidores e usar um aplicativo de ETL tipo Pentaho(é free e usa java) ou o MS SSIS/Data-tools. Em tese essas ferramentas farão a mesma coisa da solução acima, mas de uma forma mais simples, sem a necessidade de gerar arquivos csv. Faz a leitura do max-id nas tabelas do servidor de leitura e guarda em uma variável
cada. Volta na base de origem e faz o select com 'where id > @maxid'. Pega o resultado de select e dá o insert no servidor de destino.


8. Re: alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

Ricardo Fabiano Silva
madrugada

(usa Gentoo)

Enviado em 01/11/2018 - 13:21h

Conseguiu algum progresso?


9. Re: alguem tem alguma dica de qual melhor forma de proceder pra atualizar bancos de dados

shoujo
shoujo

(usa Slackware)

Enviado em 15/11/2018 - 11:32h

madrugada escreveu:

Conseguiu algum progresso?


Então madruga, eu meio que desisti de ter o servidor em nuvens.. Ficou muito lento o meu sistema...
Acho que pra funcionar iria ter que pagar um sistema em nuvens melhor... Acho que compensa mais deixar o servidor no pc do trabalho, pq la a net é boa, tem 150mb de upload, acho que da pro gasto, e fica mais leve






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts