MatheusOliveira-dev / AutoFBackup

Backups automatizados para Bancos de Dados Firebird.
MIT License
19 stars 6 forks source link

Firebird 5.0 - Replicação Nativa #4

Closed rogeriomarquesribeiro closed 1 year ago

rogeriomarquesribeiro commented 1 year ago

Olá, estamos com uma nova versão de FB 5.0 a sair oficialmente em setembro e temos no momento a BETA funcionando. Sobre o tema proposto agora temos replicação (SYNC e ASYNC) nativa, porém não envia os pacotes automaticamente para destino, teria como implmentar esta funcionalidade nesta solução ? ou seja, envio de replicação ao destino desejado seja SYNC ou ASYNC ? obrigado.

MatheusOliveira-dev commented 1 year ago

Olá.

Em primeiro momento, creio que a implementação dessa funcionalidade fuja do propósito do AutoFBackup.

O problema descrito ("não envia os pacotes automaticamente para destino") está diretamente relacionado na criação dos arquivos de backup, mesmo que criado externamente (sem o uso do AutoFBackup)?

Dado o problema, é feito algum procedimento extra para saná-lo? Se sim, como?

rogeriomarquesribeiro commented 1 year ago

Olá,

Com o FB 5.0 e replicação ASYNC os pacotes de dados para replicação ficam na propria máquina ( e o usuário envia para outro local como sejejar). O que estou sugerindo seria implementar o recurso de REPLICAÇÃO (recursos FB5.0) nesta solução ou outra nova, assim além de gerar os pacotes de dados (utilizaria esta solução) para enviar tais pacotes ao seu destino final (servidor de backup) entendeu ? seria possível ?

MatheusOliveira-dev commented 1 year ago

Vou avaliar a possibilidade.

rogeriomarquesribeiro commented 1 year ago

Maravilha, obrigado.

MatheusOliveira-dev commented 1 year ago

@rogeriomarquesribeiro, dando sequência nessa solicitação, confesso que não estou muito familiarizado com o Firebird 5.0, ou mesmo com essa funcionalidade de replicação de dados nativa, pois pelo que lembro, na versão 4.0 também há. Ainda não tive tempo de estudar sobre, pois até então utilizo minha própria ferramenta para replicação de dados entre bancos de dados Firebird e tem me atendido bem há alguns anos.

Então apenas reunindo mais algumas informações, para avaliar a viabilidade e possibilidade de incluir isso no AutoFBackup em cima das versões 4.0 e 5.0 do Firebird, com a replicação de dados nativa:

1 - Os pacotes de dados da replicação ficam na própria máquina pelo que você citou. Esses pacotes são salvos como arquivos ou é em determinada tabela dentro do próprio banco de dados da máquina local? Como pode-se localizá-los?

2 - A ideia de enviar esses pacotes de dados da replicação do banco de dados local, seria apenas obtê-los, compactá-los e realizar o envio para algum lugar (FTP/Mega.NZ) ou seria identificar os dados de cada pacote para poder persistir os dados presentes dentro de cada um em outro banco de dados diretamente?

As considerações finais que cito seriam:

Se os arquivos de dados da replicação da máquina local ficarem em arquivos, numa tabela do banco de dados, ou mesmo for possível localizá-los de alguma forma (por favor, me informe como), será possível obter todos eles (ou com alguma regra específica, caso seja possível, por exemplo: dos últimos x dias), compactá-los em um arquivo .zip e enviar para determinada pasta de um FTP ou mesmo para o Mega.NZ. Só talvez criemos uma opção dentro da rotina do backup para indicar se é uma rotina de backup do banco de dados ou rotina de backup dos arquivos de dados de replicação, algo assim, ainda irei elaborar. Então se for desejado efetuar o backup automatizado do banco de dados, cria-se uma rotina. Se for desejado um backup automatizado dos arquivos de dados da replicação, cria-se outro.

Agora se entendi errado e a ideia é localizar esses arquivos, obter o conteúdo deles e persistir as informações num outro banco de dados diretamente, aí não será feito, pois foge da ideia do projeto AutoFBackup. Entende-se que o procedimento de gerar os pacotes de dados da replicação e transmitir para o banco de dados de destino para persistir as informações é trabalho do próprio Firebird.

MatheusOliveira-dev commented 1 year ago

Estava lendo sobre a funcionalidade de replicação nativa e acredito que agora sim entendi sua solicitação.

Na verdade seria apenas efetuar o upload de todos os arquivos de replicação (já prontos para serem transmitidos) do servidor primário de x em x minutos para a pasta de destino do servidor secundário, para que o Firebird desse servidor secundário possa interpretar os arquivos e persistir os dados, é isso?

Se sim, é possível. Inicialmente a transmissão será via FTP dos arquivos do servidor principal para o servidor secundário.

O Firebird 4.0 e/ou 5.0 suporta a replicação de dados de mais de um banco de dados? Isso é, se tiver dois bancos de dados no mesmo servidor primário, eu consigo habilitar e configurar para que cada banco de dados eu diga onde gerar os arquivos de replicação e para onde e qual pasta transmitir os respectivos arquivos no servidor secundário? Caso não seja possível, talvez possamos colocar essas opções da transmissão nas configurações gerais, e não como rotina. O que você acha?

rogeriomarquesribeiro commented 1 year ago

Olá, bom dia

Isso, correto. Seria utilizar o que a ferramenta já faz, porém adapatada para FB 4.0 e 5.0 (replicação NATIVA) e enviar do servidor MASTER para SLAVE.

O ideial para ficar TOP seria implementar as duas opções:

      - SYNC: envia dos dados em em real time (não recomendada pois se não tiver internet no instante de tempo, perdeu o pacote e bagunça o banco SLAVE)

            Video de referência: https://youtu.be/v6L_exonTys

      - ASYNC: Envia dos dados de X/X tempo, recomendada pois pode fazer um série de validações prévida antes de enviar o pacote de dados para SLAVE.

            Video de referência: https://youtu.be/COdWtRn4hgs

Qual seu contato de ZAP para trocarmos informações ? estou estudando bastante o tema e podemos trocar figurinha.

segue meu contato: 11 9 6266-2193

Att.


From: Matheus Oliveira @.> Sent: Saturday, July 1, 2023 17:22 To: MatheusOliveira-dev/AutoFBackup @.> Cc: rogeriomarquesribeiro @.>; Mention @.> Subject: Re: [MatheusOliveira-dev/AutoFBackup] Firebird 5.0 - Replicação Nativa (Issue #4)

Estava lendo sobre a funcionalidade de replicação nativa e acredito que agora sim entendi sua solicitação.

Na verdade seria apenas efetuar o upload de todos os arquivos replicação (já prontos para serem transmitidos) do servidor primário de x em `x`` minutos para a pasta de destino do servidor secundário, para que o Firebird desse servidor secundário possa interpretar os arquivos e persistir os dados, é isso?

— Reply to this email directly, view it on GitHubhttps://github.com/MatheusOliveira-dev/AutoFBackup/issues/4#issuecomment-1616088284, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEF56XRN66PUYZTAZMM4PP3XOCBHDANCNFSM6AAAAAAZUDYDIY. You are receiving this because you were mentioned.Message ID: @.***>

MatheusOliveira-dev commented 1 year ago

Vou implementar o transporte dos pacotes de replicação já prontos para replicar do servidor Master para o Slave, de acordo com a ideia do método Async.

O fluxo para configuração será dessa forma (sujeito a alterações, se necessário):

1 - Deve ser criado uma nova rotina, similar às rotinas para backup, mas agora com o tipo de rotina: Replicação de Dados.

2 - Nas opções desse tipo de rotina, deve-se incluir o diretório de onde monitorar localmente (servidor Master), de quanto em quanto tempo (minutos ou horas) a verificação deve ser feita nesse diretório (do servidor Master) e para qual diretório de FTP enviar (no servidor Slave). Posteriormente pode ser analisado outras formas de transporte, além do envio pelo FTP.

Feito isso, com a rotina criada e devidamente configurada, o AutoFBackup se encarregará de enviar os arquivos via FTP, respeitando a regra de quanto em quanto tempo verificar no diretório dos pacotes prontos para replicar do Servidor Master para o Slave.

rogeriomarquesribeiro commented 1 year ago

Olá,

acredito que ficará otimo com as alterações, seguem minhas considerações:

Vou implementar o transporte dos pacotes de replicação já prontos para replicar do servidor Master para o Slave, de acordo com a ideia do método Async. Resp.: Correto que é melhor tecnicmente, porém se fosse possível neste momento (ou posterior) termos as duas opções (SYNC e ASYNC) pelo fato se desejermos termos a replicação em real time (isso se termos uma rede LAN ou até mesmo uma internet estável) e mesmo assim desejarmos ter o mais real time possível (implementação dos dois se possível é claro).

1 - Deve ser criado uma nova rotina, similar às rotinas para backup, mas agora com o tipo de rotina: Replicação de Dados. Res.: Isso mesmo, nova rotina agora Replicação de dados.

2 - Nas opções desse tipo de rotina, deve-se incluir o diretório de onde monitorar localmente (servidor Master), de quanto em quanto tempo (minutos ou horas) a verificação deve ser feita nesse diretório (do servidor Master) e para qual diretório de FTP enviar (no servidor Slave). Posteriormente pode ser analisado outras formas de transporte, além do envio pelo FTP. Resp.: Maravilha, inicialmente por FTP e posteriormente por outros meios (já existentes na ferramenta).

Obrigado.

rogeriomarquesribeiro commented 1 year ago

Olá,

Sobre as respostas que mencionei faz sentido ? você tem alguma idéia de implementação sobre o tema que estamos falando ? Precisa de alguma ajuda sobre ?

Att.

MatheusOliveira-dev commented 1 year ago

Olá, @rogeriomarquesribeiro. Desculpe pela demora no retorno quanto a essa issue. Me ausentei estes tempos por motivos de saúde. Creio que até o final dessa semana seja liberada uma versão com essa funcionalidade. Já está praticamente pronta, falta apenas alguns ajustes finais.

rogeriomarquesribeiro commented 1 year ago

Olá, bom dia.

Imagina, espero que esteja bem !

Sobre a liberação que relata, será contemplada com os comentários que fiz acima ? só pra saber mesmo o que virá nesta release quando liberar.

Att.

MatheusOliveira-dev commented 1 year ago

Sim, na verdade a ideia é simplesmente transferir o arquivo de replicação de um computador para o outro usando um FTP. Configurando, claro, a opção de onde monitorar e para onde transferir (IP/DDNS e o diretório de destino).

rogeriomarquesribeiro commented 1 year ago

Maravilha .... se precisar de alguma ajuda só falar.

Gostaria de trocar uma ideia com você sobre algumas questões, seria possivel você entrar em contato comigo ?

11 9 6266-2193

Att.

MatheusOliveira-dev commented 1 year ago

Por gentileza, testar na última versão.

Pode-se atualizar o aplicativo na tela inicial dele, no botão Atualizar App.

Se necessário, abrir uma nova issue, por favor.

rogeriomarquesribeiro commented 1 year ago

Olá, tudo bem ?

Sem problemas, vou baixar e testar sim.

Obrigado.