AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 71515
Accepted
user3837299
user3837299
Asked: 2014-07-15 22:02:31 +0800 CST2014-07-15 22:02:31 +0800 CST 2014-07-15 22:02:31 +0800 CST

Replicação de streaming Postgresql 9.3 usando dois servidores diferentes

  • 772

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=onestá 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:

  1. Identifique seus nós Master e Standby e certifique-se de que eles foram configurados de acordo com a receita de melhores práticas.

  2. 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'; 
    
  3. 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 
    
  4. 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
    
  5. 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 .' 
    
  6. 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 
    
  7. Ajuste os parâmetros de espera quente, se necessário (veja a receita posterior)

  8. 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" 
    
  9. Defina os recovery.confparâ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' 
    
  10. Iniciar servidor em espera

  11. 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.

postgresql postgresql-9.3
  • 1 1 respostas
  • 19716 Views

1 respostas

  • Voted
  1. Best Answer
    Craig Ringer
    2014-07-15T22:39:57+08:002014-07-15T22:39:57+08:00

    Parece que você está tentando replicar de um servidor para outro que não foi configurado usando uma cópia do servidor original. É por isso:

    O identificador do sistema de banco de dados difere entre o principal e o de espera. O identificador do primário é 6022019027749040119, o identificador do standby é 6033562405193904122.

    Porque cada novo initdb'd PostgreSQL obtém um novo identificador de sistema aleatório. Quando você copia uma instalação existente do PostgreSQL, ela mantém o mesmo identificador de sistema. É assim que o PostgreSQL pode acompanhar se um servidor pode reproduzir o WAL de outro.

    Você só pode usar a replicação física se a réplica for uma cópia (backup no nível do sistema de arquivos, por exemplo pg_basebackup) do mestre. Consulte a cobertura detalhada do manual sobre replicação para obter mais informações.


    Atualização :

    As instruções mostradas acima devem ser boas, mas não são tão claras quanto poderiam ser.

    O diretório de dados do servidor em espera deve ser substituído pelo backup básico que você criou na etapa 8, se existir em primeiro lugar.

    Você não pode tornar uma instância existente do PostgreSQL em espera por outra sem substituir seu diretório de dados. Você precisa de uma cópia do diretório de dados do mestre para executar um modo de espera. Uma maneira comum de configurar isso é pegar um standby existente, excluir seu diretório de dados, substituí-lo por uma cópia do diretório de dados do mestre e, em seguida, configurá-lo como um escravo de replicação. Isso é o que eu acho que a etapa 8 deveria estar fazendo.

    Em vez de fazer isso, acho que você provavelmente usou um diretório de dados existente para o escravo e tentou iniciá-lo como uma réplica do mestre. Isso não funcionará e resultará nos erros que você mostrou.

    A documentação principal do PostgreSQL sobre replicação é o recurso principal e recomendado para obter informações. Eu sugiro ir lá primeiro.

    Você também pode querer verificar repmgr , que ajuda a automatizar tarefas de replicação e failover.

    • 17

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve