Configurações no servidor mestre:
max_wal_senders = 1 wal_level = 'arquivo' archive_mode = ativado archive_command = 'cd .' wal_keep_segments = 10000
Configurações no servidor escravo: no arquivo recovery.conf:
Standby_mode = 'ligado' primary_conninfo = 'host=ipaddress of master user=repuser' trigger_file = '/tmp/postgresql.trigger.5432'
log_connections=on
está configurado no servidor master e slave
a entrada é feita para o usuário de replicação no arquivo pg_hba.conf no servidor mestre
replicação de host endereço ipad do usuário/32 confiança
ao tentar replicar, recebo o seguinte erro
2014-07-14 19:28:22 IST LOG: sistema de banco de dados foi desligado em recuperação em 2014-07-14 19:28:21 IST 2014-07-14 19:28:22 IST LOG: entrando no modo de espera 2014-07-14 19:28:22 IST AVISO: WAL foi gerado com wal_level=minimal, dados podem estar faltando 2014-07-14 19:28:22 DICA IST: Isso acontece se você definir temporariamente wal_level=min imal sem fazer um novo backup básico. 2014-07-14 19:28:22 IST LOG: estado de recuperação consistente alcançado em 0/19FFE28 2014-07-14 19:28:22 IST LOG: registro com comprimento zero em 0/19FFE28 2014-07-14 19:28:22 IST FATAL: o identificador do sistema de banco de dados difere entre o primário e o de espera 2014-07-14 19:28:22 IST DETAIL: O identificador principal é 6022019027749040119 , o identificador do standby é 6033562405193904122. 2014-07-14 19:28:23 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:23 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:24 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:24 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:25 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:25 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:26 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:26 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:27 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:27 IST FATAL: o sistema de banco de dados está inicializando "postgresql-2014-07-14_192822.log" 6630L, 756429C 2014-07-14 19:28:22 IST LOG: sistema de banco de dados foi desligado em recuperação em 2014-07-14 19:28:21 IST 2014-07-14 19:28:22 IST LOG: entrando no modo de espera 2014-07-14 19:28:22 IST AVISO: WAL foi gerado com wal_level=minimal, dados podem estar faltando 2014-07-14 19:28:22 DICA IST: Isso acontece se você definir temporariamente wal_level=minimal sem fazer um novo backup básico. 2014-07-14 19:28:22 IST LOG: estado de recuperação consistente alcançado em 0/19FFE28 2014-07-14 19:28:22 IST LOG: registro com comprimento zero em 0/19FFE28 2014-07-14 19:28:22 IST FATAL: o identificador do sistema de banco de dados difere entre o principal e o de espera 2014-07-14 19:28:22 IST DETAIL: O identificador do primário é 6022019027749040119, o identificador do standby é 6033562405193904122. 2014-07-14 19:28:23 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:23 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:24 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:24 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:25 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:25 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:26 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:26 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:27 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:27 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:28 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:28 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:29 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:29 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:30 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:30 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:31 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:31 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:32 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:32 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:33 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:33 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:34 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:34 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:35 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:35 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:36 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:36 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:37 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:37 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:37 IST FATAL: o identificador do sistema de banco de dados difere entre o principal e o de espera 2014-07-14 19:28:37 IST DETAIL: O identificador do primário é 6022019027749040119, o identificador do standby é 6033562405193904122. 2014-07-14 19:28:38 IST LOG: conexão recebida: host=[local] 2014-07-14 19:28:38 IST FATAL: o sistema de banco de dados está inicializando 2014-07-14 19:28:39 IST LOG: conexão recebida: host=[local] IST FATAL: o identificador do sistema de banco de dados difere entre o principal e o de espera 2014-07-14 19:28:37 IST DETAIL: O identificador do primário é 6022019027749040119, o identificador do standby é 6033562405193904122.
O que essas linhas significam?
quando eu executo este comando
service postgresql-9.3 start
Recebo o seguinte erro no arquivo startup.log
2014-07-15 11:25:59 IST FATAL: o arquivo de bloqueio "postmaster.pid" já existe 2014-07-15 11:25:59 DICA IST: Há outro postmaster (PID 25961) em execução no diretório de dados "/opt/postgres/PostgreSQL/9.3/data"?
Estenda a pergunta
Somos novos no código aberto do Postgresql. Não conseguimos entender a resposta a esta pergunta. Por favor, se possível, explique brevemente. Seguimos as instruções do livro 'Postgresql 9 Administration Cookbook'. Seguimos estes passos deste livro.
Execute os seguintes passos:
Identifique seus nós Master e Standby e certifique-se de que eles foram configurados de acordo com a receita de melhores práticas.
Configure a segurança de replicação. Crie ou confirme a existência do usuário de replicação no nó mestre
CREATE USER repuser SUPERUSER LOGIN CONNECTION LIMIT 1 ENCRYPTED PASSWORD 'changeme';
Permita que o usuário de replicação autentique. O exemplo a seguir permite acesso de qualquer endereço IP usando autenticação de senha criptografada; você pode querer considerar opções mais restritivas. Adicione a seguinte linha:
host replication repuser 127.0.0.1/0 md5
Defina as opções de log em postgresql.conf tanto no Master quanto no Standby, para que você obtenha mais informações sobre tentativas de conexão de replicação e falhas associadas.
log_connections = on
Defina max_wal_senders no Master em
postgresql.conf
, ou incremente se o valor já for diferente de zero.max_wal_senders = 1 wal_mode = 'archive' archive_mode = on archive_command = 'cd .'
Ajuste wal_keep_segments no Master em postgresql.conf. Defina um valor não superior à quantidade de espaço livre na unidade na qual o diretório pg_xlog está montado, dividido por 16 MB. Se o pg_xlog não estiver montado em uma unidade separada, não presuma que todo o espaço livre atual esteja disponível para arquivos de log de transações.
wal_keep_segments = 10000 # e.g. 160 GB
Ajuste os parâmetros de espera quente, se necessário (veja a receita posterior)
Faça um backup básico, muito semelhante ao processo para fazer um backup físico conforme descrito no capítulo de backup.
uma. Iniciar o backup
psql -c "select pg_start_backup('base backup for streaming rep')"
b. Copie os arquivos de dados (excluindo o diretório pg_xlog)
rsync -cva --inplace --exclude=*pg_xlog* \ ${PGDATA}/ $STANDBYNODE:$PGDATA
c. Pare o backup
psql -c "select pg_stop_backup(), current_timestamp"
Defina os
recovery.conf
parâmetros no Standby. Observe que o primary_ conninfo não deve especificar um nome de banco de dados, embora possa conter qualquer outra opção de conexão do PostgreSQL. Observe também que todas as opções em recovery.conf estão entre aspas, enquanto os parâmetros postgresql.conf não precisam estar.Standby_mode = 'on' primary_conninfo = 'host=192.168.0.1 user=repuser' trigger_file = '/tmp/postgresql.trigger.5432'
Iniciar servidor em espera
Monitore cuidadosamente o atraso da replicação até que o período de atualização termine. Durante o período de recuperação inicial, o atraso de replicação será muito maior do que normalmente esperaríamos. É recomendável definir hot_Standby = off apenas para o período inicial.