carlosleandro2 Postado Março 3, 2015 Denunciar Share Postado Março 3, 2015 Boa tarde pessoal!! Estou precisando de uma ajuda sobre replicação postgresql 9.4 no Windows, porque não possuo muita experiência... No master eu mudei as seguintes configurações: postgresql.conf usei assim... listen_addresses = '*' wal_level = hot_standby max_wal_senders = 1 wal_keep_segments = 20 no pg_hba.conf eu usei: host replication usuario 10.1.1.2/32 md5 No slave eu usei assim.. hot_standby = on e criei recovery.conf assim... standby_mode = 'on' primary_conninfo = 'host=10.1.1.1 port=5432 user=usuario password=*******' trigger_file = '/bd/secundario/failover.trg' E não consigo fazer funcionar... Gostaria de uma direção, se alguém puder me ajudar, por favor, serei muito grato... Obrigado!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 4, 2015 Denunciar Share Postado Março 4, 2015 A idéia é essa aí mesmo, mas você fez a cópia dos arquivos (da pasta data) do servidor master para o slave? Você tem que copiar todos os arquivos, exceto a pasta pg_xlog e o arquivo postgresql.conf. Se o master puder ser parado, você deve fazê-lo antes de começar a cópia (o slave também deve ser parado). Caso ele não possa ser parado, você executar "select pg_start_backup('clone',true);" antes de iniciar, então fazer a cópia e depois executar "select pg_stop_backup();", pelo psql ou pelo pgAdmin III. Eu fiz uns arquivos de lote (.bat) que já fazem tudo isso, mas estão lá no serviço. Se tiver interesse me fala que eu compartilho e te passo o link. Depois da cópia, inicie o slave primeiro e depois o master. Faça alguma alteração no master (nas tabelas ou registros) e depois confira no slave se está igual. Eu também fiz um programa em .NET que confere, a cada 1 minuto, se os bancos estão sincronizados, pra ficar mais fácil de monitorar. Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 carlosleandro2 Postado Março 4, 2015 Autor Denunciar Share Postado Março 4, 2015 Obrigado Graymalkin... Eu conecto normal né em add conection to a server? E seu meu master cair como eu faço para o slave se tornar master, você poderia me dar uma força sobre este assunto? E mais uma vez, Obrigado!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 4, 2015 Denunciar Share Postado Março 4, 2015 Sim, conecta normal, só colocando o endereço do slave. Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 carlosleandro2 Postado Março 4, 2015 Autor Denunciar Share Postado Março 4, 2015 Obrigado mais uma vez Graymalkin!!! Então, eu configurei tudo certinho, e meu recovery ficou assim: standby_mode = 'on' primary_conninfo = 'host = IPMASTER port = MASTER user=TESTE password=TESTE1' restore_command = 'cp / PGDATA / archive /% f "% p"' trigger_file = '/tmp/psql.trigger' Mas quando eu derrubo o Master a conexão do slave também cai... eu preciso digitar algum comando? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 5, 2015 Denunciar Share Postado Março 5, 2015 Você está acessando ambos pelo PgAdmin III? Criou separadamente uma conexão para cada com seus respectivos IPs? Ao derrubar o master, você deveria continuar acessando o slave sem problemas, porém não conseguiria escrever nele. Para conseguir escrever, você vai precisar criar o arquivo psql.trigger na pasta tmp dentro da pasta data (como especificado na sua configuração). E esse comando de restore aí não adianta, porque você está no Windows e isso seria para o Linux. Outra coisa também são os usuários, você criou um específico para a replicação no Master? Tente seguir passo a passo este tutorial aqui: http://eulerto.blogspot.com.br/2010/11/hot-standby-e-streaming-replication.html Somente na parte da cópia, onde é utilizado o rsync, você deverá usar (estando dentro da pasta bin): pg_basebackup -h IP_SERVIDOR -D ..\data -U USUARIO_REPLICADOR -v -P Qualquer dúvida, estamos aí. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 carlosleandro2 Postado Março 6, 2015 Autor Denunciar Share Postado Março 6, 2015 Valeu pela força... esse usuario_replicador seria o nome de usuario? e esse .. existe mesmo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 carlosleandro2 Postado Março 6, 2015 Autor Denunciar Share Postado Março 6, 2015 Bom dia, tudo bem? e desculpa o incomodo... No tutorial que você me passou tem esse caminho /bd/primario/ e /bd/secundario, o que seria isso? e o comando ficaria assim? pg_basebackup -av --exclude postmaster.pid \--exclude postgresql.conf --exclude pg_hba.conf \--exclude backup_label --exclude pg_xlog/* --exclude pg_log/* \/bd/primario/ postgres@ipslave:/bd/secundario Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 6, 2015 Denunciar Share Postado Março 6, 2015 <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Valeu pela força... esse usuario_replicador seria o nome de usuario? e esse .. existe mesmo? É o nome do usuário que faz a replicação, que você cria em um momento do tutorial. Sim, o "..\data" refere-se pasta "data" que está no diretório anterior, pois para executar isso você vai estar na pasta "bin" (se você está em "C:\Program Files\PostgreSQL\9.4\bin" e quer acessar "C:\Program Files\PostgreSQL\9.4\data" basta usar "..\data", pois o ".." seria o mesmo que "C:\Program Files\PostgreSQL\9.4"). Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Março 6, 2015 Denunciar Share Postado Março 6, 2015 <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Bom dia, tudo bem? e desculpa o incomodo... No tutorial que você me passou tem esse caminho /bd/primario/ e /bd/secundario, o que seria isso? e o comando ficaria assim? pg_basebackup -av --exclude postmaster.pid \--exclude postgresql.conf --exclude pg_hba.conf \--exclude backup_label --exclude pg_xlog/* --exclude pg_log/* \/bd/primario/ postgres@ipslave:/bd/secundario Lá no caso do tutorial ele está usando Linux e os bancos dele estão nestes caminhos, mas esse não é o seu caso. E não, a sintaxe do comando do pg_basebackup é a que passei anteriormente. O que você copiou aí é o que seria utilizado no rsync (no caso do Linux). Hoje não terei tempo, mas amanhã vou tentar fazer um exemplo passo a passo pra você. Só preciso de algumas informações para adequar o exemplo: 1) Qual o IP do servidor master? 2) Qual o IP do servidor slave? 3) A pasta "data" (onde realmente fica o banco) está no caminho padrão ("c:\Program Files\PostgreSQL\9.4\data") em ambos? Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulo_ti Postado Abril 17, 2015 Denunciar Share Postado Abril 17, 2015 Graymalkin Graymalkin boa tarde Gostaria de lhe pedir uma ajuda por favor, meu emprego está dependendo de uma replicação no postgres. Estou com dois servidores de teste, quando funcionar eu coloco no servidor de produção vou descrever o cernário e o que eu já fiz. Servidor master ip: 192.168.99.176 banco: seta pasta dos arquivos E:/setadb/data Servidor slave ip: 192.168.99.175 banco seta pasta dos arquivos E:/setadb/data Eu segui o tutorial do Euler Taveira, muito bom por sinal, apesar de estar em linux, eu consegui fazer com que o servidor master iniciasse depois das alterações, mas o servidor slave não inicia, quando eu coloco o arquivo recovey.conf e tento iniciar o serviço ele não inicia. Eu posso trabalhar com os servidores parados então uma das minhas duvidas é: Realmente é necessario copiar todo o servidor master para o slave, sendo eles identicos? e porque não consigo iniciar com o arquivo recovery.conf presente? vou colocar o conteudo do recovery.conf para você ver standby_mode = 'on' primary_conninfo = 'host=192.168.99.176 port=5432 user=seta password=xxxxxxxx' trigger_file = 'E:\setadb\data\failover.trg' Você pode me ajudar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 18, 2015 Denunciar Share Postado Abril 18, 2015 Boa noite, Paulo Respondendo a sua primeira pergunta, não eles não são totalmente idênticos. Talvez o seu problema esteja justamente aí na cópia. Os arquivos postgresql.conf e pg_hba.conf e as pastas pg_xlog e pg_log *não* devem ser copiadas do master para o slave. Até porque, em relação ao postgresql.conf e ao pg_hba.conf você fará modificações diferentes neles em ambos (master e slave). Faça o teste novamente e me diga se deu certo. Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulo_ti Postado Abril 20, 2015 Denunciar Share Postado Abril 20, 2015 (editado) Bom dia meu amigo Olha so, era isso mesmo, eu não copiava, e em todos os tutoriais diziam pra copiar, mas como eu pensava que o banco era do zero não precisava, ok, essa parte eu aprendi, agora eu estou olhando pro log do servidor slave, aparece a mensagem:(vou coloca-la na integra) 2015-04-17 17:51:55 BRT FATAL: não pôde conectar ao servidor principal: FATAL: nenhuma entrada no pg_hba.conf para conexão de replicação da máquina "192.168.99.175", usuário "seta", SSL desabilitado. Até agora foi o mais perto que eu consegui chegar da replicação propriamente dita, acredito que já avancei muito, pois agora o servidor até tenta se comunicar com o master mas não consegue, eu revisei todos os arquivos e não sei o que pode estar acontecendo. Lembrando: master: 192.168.99.176 - slave: 192.168.99.175 Editado Abril 20, 2015 por paulo_ti Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 20, 2015 Denunciar Share Postado Abril 20, 2015 Beleza, agora está quase. O que falta agora é só configurar o pg_hba.conf para aceitar conexões dentro da sua rede local. Para isso, abra o arquivo pg_hba.conf no Bloco de Notas e adicione a seguinte linha no final dele: host replication seta 192.168.99.1/24 md5 Faça isso em ambos (master e slave) e depois reinicie (você poderia só parar o serviço e iniciá-lo novamente, mas já tive um caso onde só funcionou depois de reiniciar as máquinas). Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulo_ti Postado Abril 20, 2015 Denunciar Share Postado Abril 20, 2015 (editado) Meu deus, agora ele falou o seguinte, replicacao em fluxo conectou-se com sucesso ao servidor principal. Posso testar agora? Tipo, fazer uma alteração no servidor principal e verificar se replicou no slave? Ou tem outro modo de verificar isso? Editado Abril 20, 2015 por paulo_ti Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulo_ti Postado Abril 20, 2015 Denunciar Share Postado Abril 20, 2015 Issooo, replicou meu amigo, replicou sem problemas. Assim, eu vejo que replicou pois eu atualizei um registro pelo meu sistema (ERP) que está conectado ao servidor principal, e depois eu fui no servidor slave e dei um comando select neste registro, eureca, esta alterado, mas eu não consigo conectar pelo meu ERP no servidor slave, ele diz mais ou menos que operações de escrita não são permitidas, acho ele esta somente leitura, correto? pois quando eu tento logar o sistema tenta gravar na tabela de log informando a hora e a data que um determinado usuario acessou o sistema, como ele so esta fazendo leituras eu não consigo acessar pelo ERP, esta correto essa teoria? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 20, 2015 Denunciar Share Postado Abril 20, 2015 Exatamente, o slave é somente leitura. Para promover o slave para master (e quebrar a replicação) você só precisa criar o arquivo especificado em trigger_file do seu recovery.conf. Esse é o "gatilho" para ser usado caso o seu master venha a dar algum problema e você precise continuar o bom andamento do serviço. E, neste caso, o slave passando a ser o master, a escrita é permitida e a replicação pára, devendo ser refeita essa sincronia manualmente depois (com a cópia dos arquivos do jeito que você fez para a replicação funcionar). Certo? Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulo_ti Postado Abril 20, 2015 Denunciar Share Postado Abril 20, 2015 Estou verificando no site da Enterprise Db, existe uma ferramenta para replicação disponível para download, você conhece? xDB Replication Server Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 21, 2015 Denunciar Share Postado Abril 21, 2015 Sim, cheguei a instalá-lo uma vez para testar, mas não fui muito a fundo já que trata-se de um produto pago. A replicação nativa do PG atende minha necessidade, que é ter um backup quase instantâneo, e é de graça. Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulo_ti Postado Abril 22, 2015 Denunciar Share Postado Abril 22, 2015 Bom dia meu amigo... Entendi, agora olha só, eu fiz alguns testes nestes servidores: O primeiro teste eu restaurei um backup completo no master com, sucesso, tudo foi replicado corretamente O segundo teste eu parei o servidor slave e tentei alterar alguma coisa no master, cara ele não funcionou sem o slave estar ativo, tem alguma configuração que eu consiga continuar o master mesmo com o slave parado? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 22, 2015 Denunciar Share Postado Abril 22, 2015 Era pra funcionar normalmente, sem o slave estar ativo, e sem ter que fazer alguma configuração especial para isso. O máximo que aconteceria seria quebrar a replicação ao ativar novamente o slave. Você tem certeza que parou somente o slave? E qual é a mensagem de erro exibida ao tentar fazer alguma operação no master? Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulo_ti Postado Maio 4, 2015 Denunciar Share Postado Maio 4, 2015 Bom dia meu amigo, como vai? Então, estive off por algum tempo cuidando de outros assuntos, mas essa semana ficarei, acredito eu, por conta deste servidor. Olha só, ele não exibe mensagem alguma de erro, simplesmente quando o servidor slave cai, o master não aceita mais requisições, mesmo pelo pgadminIII eu não acesso, muito estranho, fica rodando, rodando rodando, como se estivesse travado entende?. Vou rever os scripts e posto o resultado, mas a replicação acontece normalmente quando ambos estão funcionando. Mais uma vez obrigado pela ajuda. PAULO Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 5, 2015 Denunciar Share Postado Maio 5, 2015 Tente dar uma olhada no log do master (em data/pg_log), para ver se aparece alguma pista do que pode estar acontecendo. Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulo_ti Postado Maio 6, 2015 Denunciar Share Postado Maio 6, 2015 Boa tarde meu amigo. Realmente, quando eu simulo uma queda na rede do servidor slave o servidor master simplesmente para de receber requisições. A mensagem no log é a seguinte: 2015-05-06 16:28:19 BRT LOG: TERMINADO PROCESSO WALSENDER POR CAUSA DO TEMPO DE ESPERA DA REPLICACAO E quando eu volto o servidor slave , tudo acontece normalmente, aparece a mensagem: servidor em espera "walreceiver" agora é um servidor em espera síncrono com prioridade 1. Não deveria ser assincrono? Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulo_ti Postado Maio 6, 2015 Denunciar Share Postado Maio 6, 2015 Encontrei o erro EURECA.... Um parametro utilizado no servidor master estava fazendo com que ambos trabalhassem de forma sincrona, com isso ambos deveriam estar sempre ligados e disponiveis, eliminando esse parametro eles passam a trabalhar de forma assincrona, sendo assim, quando o slave para o master continua. Agradeço imensamente a ajuda e se precisar de mim estou a disposição. att Ops, o parametro é: synchronous_standby_names = *, ele deve ficar desativado PAULO Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 7, 2015 Denunciar Share Postado Maio 7, 2015 Legal, bom saber. Nunca tinha mexido com essa configuração, mas já tinha lido a respeito desse trabalho sincronizado. Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
carlosleandro2
Boa tarde pessoal!!
Estou precisando de uma ajuda sobre replicação postgresql 9.4 no Windows, porque não possuo muita experiência...
No master eu mudei as seguintes configurações:
postgresql.conf usei assim...
listen_addresses = '*'
wal_level = hot_standby
max_wal_senders = 1
wal_keep_segments = 20
no pg_hba.conf eu usei:
host replication usuario 10.1.1.2/32 md5
No slave eu usei assim..
hot_standby = on
e criei recovery.conf
assim...
standby_mode = 'on'
primary_conninfo = 'host=10.1.1.1 port=5432 user=usuario password=*******'
trigger_file = '/bd/secundario/failover.trg'
E não consigo fazer funcionar...
Gostaria de uma direção, se alguém puder me ajudar, por favor, serei muito grato...
Obrigado!!!
Link para o comentário
Compartilhar em outros sites
27 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.