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 / 15055
Accepted
wingedrhino
wingedrhino
Asked: 2012-03-16 04:28:55 +0800 CST2012-03-16 04:28:55 +0800 CST 2012-03-16 04:28:55 +0800 CST

PostgreSQL: não é possível executar o banco de dados clonado repmgr

  • 772

Estou executando testes com PostgreSQL hot standby com 1 mestre e exatamente 1 escravo.

Estou usando as instruções deste guia: http://www.howtoforge.com/how-to-set-up-a-postgresql-9.0-hot-standby-streaming-replication-server-with-repmgr-on-opensuse -11,4

Estou usando PostgreSQL versão 9.1, repmgr 1.1.0 e Ubuntu 10.04 LTS.

Eu segui os passos até o passo 6 no guia onde corri

repmgr -D /var/lib/postgresql/9.1/main -d pgbench -p 5432 -R postgres --verbose standby clone pgmaster

em pgslave.

Então eu fiz um

/etc/init.d/postgresql start

nele e o script (aparentemente) foi concluído com sucesso.
No entanto, a execução do psql gera um erro:

psql: FATAL: o sistema de banco de dados está iniciando

Qualquer ajuda para prosseguir é bem-vinda.

postgresql replication
  • 1 1 respostas
  • 6253 Views

1 respostas

  • Voted
  1. Best Answer
    wingedrhino
    2012-03-27T03:10:22+08:002012-03-27T03:10:22+08:00

    Pesquisei e percebi que o problema era por não habilitar o hot_standby no servidor standby. Escrevi uma versão corrigida, atualizada e simplificada do artigo acima como uma odt para futura referência pessoal. Aqui está o texto na íntegra (convertido para html de odt usando openoffice.org) para aqueles que estão interessados ​​em configurar um único clone somente leitura de um banco de dados usando repmgr:


    Single Slave Streaming Replication with PostgreSQL

    Introduction

    Este guia visa ajudá-lo a configurar rapidamente um servidor PostgreSQL 9.1 com um banco de dados e replicá-lo para um escravo que pode ser usado para consultas somente leitura. Não há conceito de failover envolvido aqui, e o escravo terá apenas uma cópia somente leitura dos dados do mestre.


    1. Ferramentas necessárias
    1. Uma distribuição GNU/Linux estável (SO recomendado: CentOS 6.2 x86-64 )

    2. PostgreSQL 9.1 – você pode instalar a partir daqui: http://yum.postgresql.org/ (certifique-se também de que os seguintes pacotes ou seus equivalentes estejam instalados)

    3. postgresql

    4. postgresql-client

    5. postgresql-contrib

    6. postgresql-server

    7. postgresql-server-dev

    8. 2 estações de trabalho - um mestre que executa o banco de dados primário e um escravo que executa o banco de dados somente leitura replicado (para o propósito deste documento, seus respectivos endereços IP foram substituídos por pgmaster e pgslave , então faça essas alterações em /etc/hosts de ambas as máquinas se você quiser seguir as seguintes instruções palavra por palavra)


    2. Verificação de instalação e criação de senha
    1. Execute /etc/init.d/postgresql start em ambos os sistemas para verificar se o PostgreSQL está funcionando ou não.

    2. Execute /etc/init.d/postgresql stop em ambos os sistemas para parar o PostgreSQL. Não usaremos o PostgreSQL até terminarmos algumas tarefas relacionadas à configuração.

    3. Defina uma senha para o usuário postgres em ambos os sistemas. Este usuário por padrão não tem senha, mas precisamos de uma senha para ajudar a criar um túnel SSH entre pgmaster e pgslave.

    4. Execute sudo passwd postgres em ambos os sistemas e digite uma nova senha Unix para ambos.


    3. Criação do Túnel SSH
    1. No pgmaster faça o seguinte:

    2. su postgres

    3. ssh-keygen -t rsa (pressione enter a cada prompt)

    4. ssh-copy-id -i ~/ssh/id_rsa.pub pgslave (você precisa inserir a senha postgres do pgslave)

    5. ssh pgslave e veja se consegue logar sem senha

    6. Repita as etapas acima no pgslave

    7. su postgres

    8. sh-keygen -t rsa

    9. ssh-copy-id -i ~/ssh/id_rsa.pubaster

    10. ssh pgmaster e veja se consegue logar sem senha

    11. Certifique-se de sair da máquina remota depois de terminar de verificar a conectividade


    4. Editando postgresql.conf no pgmaster

    Você precisa fazer as seguintes alterações no arquivo postgresql.conf que reside no diretório de configuração dentro de /etc/postgresql/ em sua máquina pgmaster :

    • listen_addresses = '*'

    • wal_level = hot_standby

    • checkpoint_segments=30

    • archive_mode=on

    • archive_command='cd .'

    • max_wal_senders=2

    • wal_keep_segments=5000


    5. Editando postgresql.conf no pgslave

    Você precisa fazer a seguinte alteração no arquivo postgresql.conf que reside no diretório de configuração dentro de /etc/postgresql/ na máquina pgslave :

    • hot_standby=ligado


    6. Editando pg_hba.conf no pgmastger

    Você precisa fazer as seguintes alterações no arquivo pg_hba.conf que reside no diretório de configuração dentro de /etc/postgresql/ na máquina pgmaster :

    • hospedar todos os 192.168.5.0/24 confiáveis

    • replicação de host toda a confiança 192.168.5.0/24


    7. Adicionando a pasta bin do PostgreSQL ao PATH

    Há um monte de utilitários postgresql bacanas que usaremos aqui, então vamos definir a variável PATH para que ela saiba onde encontrá-los

    1. Execute localizar pgbench

    2. A saída será algo como /usr/lib/postgresql/9.1/bin/pgbench

    3. Excluindo a palavra final pgbench, copie o caminho acima e adicione-o à sua variável de caminho.

    4. Execute nano ~/.bashrc

    5. add line export PATH+=:/usr/lib/postgresql/9.1/bin/ (ou qualquer local que o comando de localização revelou)

    6. Feche o arquivo e salve as alterações

    7. Pode ser necessário fazer logoff e login (ou abrir um novo shell) para que as alterações entrem em vigor.


    8. Carregando o servidor PostgreSQL do pgmaster com dados fictícios
    1. No pgmaster, inicie primeiro o servidor PostgreSQL: /etc/init.d/postgresql start

    2. Criamos um banco de dados de teste e o carregamos com alguns dados fictícios com os seguintes comandos:

      1. su postgres

      2. criadob pgbench

      3. pgbench -i -s 10 pgbench

    3. Como alternativa, abra você mesmo o banco de dados pgbench , crie uma tabela de amostra e insira dados de amostra nela.


    9. Apagando os dados do pgslave e verificando a conectividade do pgmaster
    1. Vamos apagar o diretório de dados do pgslave, então execute o seguinte nessa máquina:

    2. Primeiro pare o servidor PostgreSQL /etc/init.d/postgresql stop

    3. Vá para a pasta do diretório de dados padrão do PostgreSQL: cd /var/lib/pgsql/data (ou para o diretório de dados padrão para sua instalação)

    4. Esvazie o diretório completamente com rm -rf *

    5. Agora execute psql -h pgmaster -d pgbench e veja se consegue acessar o banco de dados no pgmaster através do pgslave .


    10. Instalando repmgr

    Embora a replicação de um único escravo seja bastante direta, estamos usando uma ferramenta chamada repmgr para ajudar a tornar o processo ainda mais simples. Aqui está como você o instala:

    1. Pegue o código-fonte repmgr de http://projects.2ndquadrant.it/sites/default/files/repmgr-1.1.0.tar.gz e copie-o para /tmp para instalação.

    2. Tenha os seguintes pacotes instalados para garantir que a compilação repmgr seja possível:

    3. faço

    4. gcc

    5. postgresql-devel

    6. libxslt-devel

    7. pam-devel

    8. libopenssl-devel

    9. krb5-devel

  2. Extraia o arquivo baixado e entre na pasta do código-fonte.

  3. Compilar com make USE_PGXS=1

  4. Instalar com make USE_PGXS=1 install

  5. Execute abaixo dois comandos para verificar se o repmgr está instalado corretamente:

  6. repmgr --versão

  7. repmgrd --versão


    11. Clonando pgmaster em pgslave usando repmgr
    1. Execute su postgres e faça o login como o usuário postgres no pgslave

    2. Execute isso para clonar o banco de dados: repmgr -D /var/lib/pgsql/data -d pgbench -p 5432 -R postgres --verbose standby clone pgmaster

    3. Observe que o parâmetro -D /var/lib/pgsql/data deve ser substituído pelo local apropriado da pasta de dados no pgslave

    4. Observe também que 5432 é a porta padrão em que o PostgreSQL é executado.

    5. Quando a execução do comando terminar (vai demorar alguns segundos para terminar se você tiver usado o pgbench para inserir dados aleatórios), você pode iniciar o PostgreSQL no pgslave com /etc/init.d/postgresql start


    12. Testando a replicação de streaming

    Parabéns! Você configurou com sucesso o pgslave para copiar o banco de dados do pgmaster via replicação de streaming. Observe que, por estar em modo de recuperação contínua, o pgslave só pode ser usado para executar consultas somente leitura e nenhuma inserção ou modificação é possível .

    1. Insira alguns valores em sample_table em pgmaster .

    2. execute select * from sample_table; no prompt psql do pgslave após conectar ao banco de dados pgbench.

    3. Se tudo funcionou corretamente, você poderá visualizar tupples recém-adicionados na saída do pgslave .


    Conclusão

    Acabamos de aprender como configurar rapidamente um banco de dados PostgreSQL para atuar como um espelho somente leitura para outro banco de dados. Observe que, caso o escravo fique offline, ele recuperará automaticamente os dados do mestre e logo estará atualizado. A replicação de streaming está no nível do banco de dados, portanto, você precisa executar o comando na parte 11 para cada novo banco de dados que precisa ser replicado por meio da replicação de streaming.

  • 12

relate perguntas

  • 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

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 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

    Como selecionar a primeira linha de cada grupo?

    • 6 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
    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
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +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