Patrick, eu consegui reproduzir exatamente o mesmo que voce. Agora estou precisando além de replicar, configurar o pool de conexões, para quando uma instancia cair uma outra assume a parada. Voce teria este tutorial?
Pra quem não estiver usando o docker e estiver no usuario root provável que seja necessário dar o comando: sudo chown postgres -R /var/lib/postgresql/{versão-do-postgres}/main/ Quando usei o comando pg_basebackup ele definiu a pasta do postgres para o root e o postgres não conseguiu iniciar, então com isso ele volta o acesso da pasta para o usuario postgres
É possível usar dois servidores com o mesmo banco de dados para balancear a carga. Neste exemplo a informação a informação do Master é replicada. O acesso é total é só no srv master.
opa, você pode configurar um pgpool para atualizar como um proxy entre sua aplicação e os bancos de dados e ele faz esse papel de load balance da conexões.
Patrick, excelente didática e um vídeo de conteúdo Premium. Parabens! Dúvida: existe uma maneira de transformar a minha(s) replica(s) em um banco de escrita, e que todos os nós funcione com comunicação bidirecional (tanto escrita como leitura para ambos os sentidos main->replica / replica->main)? Obrigado!
Estou com esse problema, e a maioria dos vídeos é sobre isso de backup, eu quero algo útil ! Tenho 7 lojas e o servidor master é na cloud, como deixar todo mundo sincronizado e cada loja tem seu servidor local e vai usar esse servidor como o master da loja....acho que isso é o básico kkk
Patrick, estou precisando aprender a configurar o failover com o pgpool para manter a alta disponibilidade de duas instancias postgis usando o docker. Com seu vídeo eu consegui realizar a replicação com sucesso. Teria um tutorial ensinando? Agradeço desde já. Obrigado
Muito bom o Vídeo!! mais fiquei com uma duvida, como monitorar no dia a dia se a replicação esta ok ou se ocorreu algum problema? aproveitando, com essa mesma configuração posso colocar mais de um slave ou tem algo mais a configurar?
fala ai amigo, tudo beleza? então, hoje eu monitoro as vm's apenas, isso através do zabbix, claro que isso não garante que a replicação esteja funcionando, mas parto do principio que se configurei tudo certo, e ambos (master e replicas) estão conversando só irão parar de funcionar se acontecer alguma interrupção, geralmente a nível de VM, mas eventuamente dou uma olhada de forma manual nos logs. Sobre sua segunda pergunta não tem limite de replicas, a configuração é a mesma para qualquer replica, talvez o limite é a quantidade de slot que você definir no master, bem como recursos de infra. Enfim, espero ter ajudado, abraços.
Por padrão é assíncrona (podendo configurar para síncrono), porém o atraso da configuração assíncrona é quase imperceptível se ambos as bases estiverem na mesma rede.
@Patrick Muniz, eu gostaria de saber se consigo fazer replicação, no caso para uma migração com uma versão diferente no PostgreSQL? Exemplo, meu master e slave atual está na versão 10 e, crio um novo slave com a versão 13. Ele replicaria?
Olá Rafael, obrigado pelo comentário, na documentação atual do postgres tem sim a citação dessa possibilidade, mas confesso que nunca utilizei, valeria uma tentativa em um ambiente de testes, talvez migrar do 10 para 13 seria muito abrupto, mas migrar para 11 depois 12 e por fim para 13 via replication você teria mais chances de sucesso. Na documentação na sessão 19.6.3 fala sobre o assunto, segue o link: www.postgresql.org/docs/14/upgrading.html Por fim, boa sorte e sucesso.
@@patrickmuniz7878 muito obrigado pela atenção. PostgreSQL, tem estado em alta e, estou certo que seu conhecimento ajudará demais, aos que como eu, estão iniciando com essa engine. Fica a dica, faz um curso na Udemy de administração, com replicação entre versões, pq não tem isso não viu
Boa noite Rafael,tudo bom ? A resposta correta é não,no video ele usa replicação fisica e para esse recurso é comendado que você utilize a mesma versão majoritária do postgresql ,mesmo S.O e o mesmo FS ( Replicação Fisíca é feita bloco a bloco,por isso precisa ter o mesmo ambiente).Replicação entre versões diferentes funciona apenas na replicação logica e este recurso esta disponivel a partir da versão 10 do postgres.
Existe a possibilidade de fazer a replicação de duas vias, ou seja, um espelhando o outro. Digo isso para caso uma instância caia a outra assuma e depois faça a sincronia com o outro
opa, o que você precisa é de uma arquitetura que tenha um "proxy" entre os bancos e sua aplicação, fazendo esse fail over em caso de falha. O software que pode te auxiliar é o pgpool-II.
Opa Patrick blz ? tutorial incrível meu amigo, mas eu gostaria de fazer uma pergunta, no momento 26:31 você replicou outras instancias do postgresql, eu poderia fazer diferente por exemplo configurar um server master em uma VM e clonar ele assim transformando o clonado em slave?
Opa Caio, blz? Sua abordagem proposta de clonar uma VM master creio que funcionaria sim, desde que claro fazendo as devidas configurações, na prática o que você deseja é fazer o mesmo trabalho do pg_base_backup só de de outra forma, enfim sugiro realizar o experimento em um ambiente de testes, boa sorte.
Amigo, apenas uma pergunta. Eu preciso ter os S.Os que contem os banco de dados Identicos? ou seja um servidor Ubuntu18.4 no que contem o Postgree como master e outro servidor 18.4 no Slave (backup)? e aproveitando...as versoes do postegree tem que serem identicas pra efetuar a replicação?
Sobre a primeira pergunta, pode subir o banco de dados em S.O's e versões diferentes. Sobre a segunda pergunta, nos meus testes só consegui replicar na msm versão.
Quando vou inserir, atualizar ou até deletar alguma informação no banco replication, dar erro de inserção Erro SQL [25006]: ERROR: cannot execute INSERT in a read-only transaction ERROR: cannot execute INSERT in a read-only transaction ERROR: cannot execute INSERT in a read-only transaction parece que a replica tá apenas como leitura. Como deixar a replica de leitura com permissão de inserir, deletar e atualizar ?
Hugo, instancia de replicação funciona apenas como leitura, não é permitido fazer escrita. Você só consegue fazer operações nele a partir do momento de deixa de ser replica para virar um banco master. Se você precisa de uma arquitetura que seja necessário ter 2 ou mais bancos com possibilidade de escrita então você precisa procurar por banco "multi master", que não é o caso desse video, espero ter esclarecido.
Fala, Patrick. Beleza? Tenho uma big dúvida. Montei o arquivo docker-compose igual o seu mas os arquivos do postgresql não são copiados para a pasta master. O que eu posso estar fazendo de errado?
@@jeanvictor7798 Na real, os arquivos são copiados para a pasta mas as permissões para essa pasta mudam quando executamos o comando do docker-compose. Com ele rodando, rode um chmod nessa pasta em específico. Você verá os arquivos lá. O chato é que eu tive que rodar o chmod toda vez que executava o docker-compose. Tenta e me avisa.
O mais importante não foi feito nem falado, no titulo do video diz redundancia, ta e cadÊ ? se o banco principal cair, o outro assume automaticamente, do jeito q vc fez..nao, e se assumir, quando o master voltar ao ar..vai voltar como slave ? duvido muito , oq vc fez eh muito basico, tem imagens no dockerhub que ja sao pre configuradas pra subir como master e outra slave, a grande questao é fazer o failover..um cair e outra assumir a frente. perdi meu tempo com seu video
Grato pelo feedback. Apenas complemento que redundância não se limita ao formato que você esperava, se o master cair no sentido de perder tudo msm, uma replica pode te salvar como um backup, mas de fato não falei de ferramentas como pg-pool que faz esse switch em caso de queda do principal.
@@patrickmuniz7878 isso que é o que mais falta no youtube sobre esse assunto, alta disponibilidade de banco de dados. tem muita coisa gringa mas nada muito claro, se souber seria bom fazer um video sobre.
Patrick, eu consegui reproduzir exatamente o mesmo que voce. Agora estou precisando além de replicar, configurar o pool de conexões, para quando uma instancia cair uma outra assume a parada. Voce teria este tutorial?
Excelente conteúdo parabéns pela didática e pelo conhecimento compartilhado Deus abençoe.
Patrick Muniz Excelente conteúdo. Obrigado por se dispor a explicar esse conteúdo tão necessário e ainda fez de forma simples e clara e objetiva.
Muito bom seu conteúdo, mano! Sucesso.
Muito bom!
Parabéns pela abordagem
Sensacional. Muito obrigado!
Parabéns pelo canal e pelo conteúdo, Patrick!
Muito bom Patrick Parabéns pela aula!
muito bom o video
Excelente conteúdo, mandou bem!
Excelente. Parabéns.
Valeu pela aula! 🍞
Parabéns pelo conteúdo! Muito bom .. teria ja o tuto de backup continuo ?
Muito obrigado. Parabéns.
excelente video, parabens. continue trazendo conteudos assim. como sugestao, traga conteudos do postgres em k8s. abs
Muito interessante 💯
Excelente video, me ajudou muito.
Muito obrigado!
Pra quem não estiver usando o docker e estiver no usuario root provável que seja necessário dar o comando:
sudo chown postgres -R /var/lib/postgresql/{versão-do-postgres}/main/
Quando usei o comando pg_basebackup ele definiu a pasta do postgres para o root e o postgres não conseguiu iniciar, então com isso ele volta o acesso da pasta para o usuario postgres
E se houver alteração na instância REPLICATION? A MAIN recebe essa informação?
É possível usar dois servidores com o mesmo banco de dados para balancear a carga. Neste exemplo a informação a informação do Master é replicada. O acesso é total é só no srv master.
opa, você pode configurar um pgpool para atualizar como um proxy entre sua aplicação e os bancos de dados e ele faz esse papel de load balance da conexões.
Patrick, excelente didática e um vídeo de conteúdo Premium. Parabens! Dúvida: existe uma maneira de transformar a minha(s) replica(s) em um banco de escrita, e que todos os nós funcione com comunicação bidirecional (tanto escrita como leitura para ambos os sentidos main->replica / replica->main)? Obrigado!
Estou com esse problema, e a maioria dos vídeos é sobre isso de backup, eu quero algo útil ! Tenho 7 lojas e o servidor master é na cloud, como deixar todo mundo sincronizado e cada loja tem seu servidor local e vai usar esse servidor como o master da loja....acho que isso é o básico kkk
Muito bom, obrigado!
muito bom, gostei, continue assim ótima didática. onde está o link dos arquivos que voce disse no video !?
Patrick, estou precisando aprender a configurar o failover com o pgpool para manter a alta disponibilidade de duas instancias postgis usando o docker. Com seu vídeo eu consegui realizar a replicação com sucesso. Teria um tutorial ensinando? Agradeço desde já. Obrigado
muito bom !
Excelente explicação! Conteúdo muito bom. Uma dúvida a respeito, é possível realizar a replicação de uma única tabela para outra base?
sim, é possível
👏👏👏👏
Muito bom!
Muito bom o Vídeo!! mais fiquei com uma duvida, como monitorar no dia a dia se a replicação esta ok ou se ocorreu algum problema? aproveitando, com essa mesma configuração posso colocar mais de um slave ou tem algo mais a configurar?
fala ai amigo, tudo beleza? então, hoje eu monitoro as vm's apenas, isso através do zabbix, claro que isso não garante que a replicação esteja funcionando, mas parto do principio que se configurei tudo certo, e ambos (master e replicas) estão conversando só irão parar de funcionar se acontecer alguma interrupção, geralmente a nível de VM, mas eventuamente dou uma olhada de forma manual nos logs. Sobre sua segunda pergunta não tem limite de replicas, a configuração é a mesma para qualquer replica, talvez o limite é a quantidade de slot que você definir no master, bem como recursos de infra.
Enfim, espero ter ajudado, abraços.
Muito boa suas aulas mas eu gostaria de saber se tem com fazer uma replicação em ambiente Windows com PotgresSQL para backup
Em teoria sim, creio que as configurações do postgres são iguais para qualquer plataforma
Muito bom o vídeo Patrick! Me tira uma duvida, essa replicação é assincrona ou sincrona?
Por padrão é assíncrona (podendo configurar para síncrono), porém o atraso da configuração assíncrona é quase imperceptível se ambos as bases estiverem na mesma rede.
@Patrick Muniz, eu gostaria de saber se consigo fazer replicação, no caso para uma migração com uma versão diferente no PostgreSQL? Exemplo, meu master e slave atual está na versão 10 e, crio um novo slave com a versão 13. Ele replicaria?
Olá Rafael, obrigado pelo comentário, na documentação atual do postgres tem sim a citação dessa possibilidade, mas confesso que nunca utilizei, valeria uma tentativa em um ambiente de testes, talvez migrar do 10 para 13 seria muito abrupto, mas migrar para 11 depois 12 e por fim para 13 via replication você teria mais chances de sucesso.
Na documentação na sessão 19.6.3 fala sobre o assunto, segue o link: www.postgresql.org/docs/14/upgrading.html
Por fim, boa sorte e sucesso.
@@patrickmuniz7878 muito obrigado pela atenção. PostgreSQL, tem estado em alta e, estou certo que seu conhecimento ajudará demais, aos que como eu, estão iniciando com essa engine. Fica a dica, faz um curso na Udemy de administração, com replicação entre versões, pq não tem isso não viu
Boa noite Rafael,tudo bom ? A resposta correta é não,no video ele usa replicação fisica e para esse recurso é comendado que você utilize a mesma versão majoritária do postgresql ,mesmo S.O e o mesmo FS ( Replicação Fisíca é feita bloco a bloco,por isso precisa ter o mesmo ambiente).Replicação entre versões diferentes funciona apenas na replicação logica e este recurso esta disponivel a partir da versão 10 do postgres.
Patrick, Otimo video Parabéns! Me tira uma duvida, no caso do master morrer, posso usar a replicação sem problemas? ou tem algum ajuste a ser feito?
Opa, então, basta remover o arquivo standby.signal da raiz da instancia de replicação e reiniciar o banco que ele inicializará como um master.
Existe a possibilidade de fazer a replicação de duas vias, ou seja, um espelhando o outro. Digo isso para caso uma instância caia a outra assuma e depois faça a sincronia com o outro
opa, o que você precisa é de uma arquitetura que tenha um "proxy" entre os bancos e sua aplicação, fazendo esse fail over em caso de falha.
O software que pode te auxiliar é o pgpool-II.
Opa Patrick blz ? tutorial incrível meu amigo, mas eu gostaria de fazer uma pergunta, no momento 26:31 você replicou outras instancias do postgresql, eu poderia fazer diferente por exemplo configurar um server master em uma VM e clonar ele assim transformando o clonado em slave?
Opa Caio, blz?
Sua abordagem proposta de clonar uma VM master creio que funcionaria sim, desde que claro fazendo as devidas configurações, na prática o que você deseja é fazer o mesmo trabalho do pg_base_backup só de de outra forma, enfim sugiro realizar o experimento em um ambiente de testes, boa sorte.
Amigo, apenas uma pergunta. Eu preciso ter os S.Os que contem os banco de dados Identicos? ou seja um servidor Ubuntu18.4 no que contem o Postgree como master e outro servidor 18.4 no Slave (backup)? e aproveitando...as versoes do postegree tem que serem identicas pra efetuar a replicação?
Sobre a primeira pergunta, pode subir o banco de dados em S.O's e versões diferentes. Sobre a segunda pergunta, nos meus testes só consegui replicar na msm versão.
@@patrickmuniz7878 muito obrigado!!
sua didática é boa, vc deveria fazer mais vídeos, porém sei que na área de TI ter tempo livre é difícil
é possivel o servidor main ser a versao 9.5 e o replication uma versao mais atual ? tipo a 16
Quando vou inserir, atualizar ou até deletar alguma informação no banco replication, dar erro de inserção
Erro SQL [25006]: ERROR: cannot execute INSERT in a read-only transaction
ERROR: cannot execute INSERT in a read-only transaction
ERROR: cannot execute INSERT in a read-only transaction
parece que a replica tá apenas como leitura.
Como deixar a replica de leitura com permissão de inserir, deletar e atualizar ?
Hugo, instancia de replicação funciona apenas como leitura, não é permitido fazer escrita.
Você só consegue fazer operações nele a partir do momento de deixa de ser replica para virar um banco master.
Se você precisa de uma arquitetura que seja necessário ter 2 ou mais bancos com possibilidade de escrita então você precisa procurar por banco "multi master", que não é o caso desse video, espero ter esclarecido.
Fala, Patrick. Beleza? Tenho uma big dúvida. Montei o arquivo docker-compose igual o seu mas os arquivos do postgresql não são copiados para a pasta master. O que eu posso estar fazendo de errado?
também estou com o mesmo problema
@@jeanvictor7798 Na real, os arquivos são copiados para a pasta mas as permissões para essa pasta mudam quando executamos o comando do docker-compose. Com ele rodando, rode um chmod nessa pasta em específico. Você verá os arquivos lá. O chato é que eu tive que rodar o chmod toda vez que executava o docker-compose. Tenta e me avisa.
Se o servidor primário cair, outros iram assumir?
não, para ter esse recurso você precisa adicionar uma camada de "Proxy", como a ferramenta pgpool-II.
O mais importante não foi feito nem falado, no titulo do video diz redundancia, ta e cadÊ ? se o banco principal cair, o outro assume automaticamente, do jeito q vc fez..nao, e se assumir, quando o master voltar ao ar..vai voltar como slave ? duvido muito , oq vc fez eh muito basico, tem imagens no dockerhub que ja sao pre configuradas pra subir como master e outra slave, a grande questao é fazer o failover..um cair e outra assumir a frente. perdi meu tempo com seu video
Grato pelo feedback. Apenas complemento que redundância não se limita ao formato que você esperava, se o master cair no sentido de perder tudo msm, uma replica pode te salvar como um backup, mas de fato não falei de ferramentas como pg-pool que faz esse switch em caso de queda do principal.
@@patrickmuniz7878 isso que é o que mais falta no youtube sobre esse assunto, alta disponibilidade de banco de dados. tem muita coisa gringa mas nada muito claro, se souber seria bom fazer um video sobre.
@@patrickmuniz7878 Patrick, seu vídeo ficou ótimo, vou dar uma estudada no PG Pool e colocar ele no meu lab para ter o fail over. Thanks!!!