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 / 19593
Accepted
Josh
Josh
Asked: 2012-06-21 13:01:10 +0800 CST2012-06-21 13:01:10 +0800 CST 2012-06-21 13:01:10 +0800 CST

Como faço para copiar bancos de dados do Postgres 8.4 para o Postgres 9.1?

  • 772

Meu servidor trac recentemente começou a ter problemas. Ele estava executando uma versão muito desatualizada do Ubuntu e não consegui usá-lo corretamente apt-getpara corrigir os problemas que estava tendo. Então, em vez disso, fiz backup da máquina e fiz uma instalação limpa do Ubuntu 12.04.

Agora tenho um novo servidor com o Postgres 9.1 devidamente instalado e funcionando. Desejo obter meu antigo banco de dados Postgres 8.4 do backup copiado e configurado na nova instalação. Como faço para fazer isso?


O que fiz até agora foi copiar os dados antigos do Postgres 8.4 e os diretórios bin do backup ( /var/lib/postgresql/8.4/maine /usr/lib/postgresql/8.4/bin) para /tmp/postgres.olde /tmp/postgres-bin.oldna nova instalação. Parei de usar o Postgres 9.1 service postgres stope executei o comando:

sudo -u postgres /usr/lib/postgresql/9.1/bin/pg_upgrade \
  --old-datadir=/tmp/postgres.old/main/ \
  --new-datadir=/var/lib/postgresql/9.1/main/ \
  --old-bindir=/tmp/postgres-bin.old/postgresql/8.4/bin \
  --new-bindir=/usr/lib/postgresql/9.1/bin

Conforme descrito na documentação do Postgres . Parecia que funcionaria muito bem, exceto que recebi o erro:

Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories                 ok
Checking cluster versions                                   ok

connection to database failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?


unable to connect to old postmaster started with the command: "/tmp/postgres-bin.old/postgresql/8.4/bin/pg_ctl" -w -l "/dev/null" -D "/tmp/postgres.old/main" -o "-p 5432 -c autovacuum=off -c autovacuum_freeze_max_age=2000000000" start >> "/dev/null" 2>&1
Failure, exiting

O problema parece ser que ele está tentando iniciar o servidor antigo e isso não funciona porque é muito antigo e não está instalado corretamente. Tentar iniciá-lo manualmente revela o problema:

root@mission:/tmp# sudo -u postgres /tmp/postgres-bin.old/postgresql/8.4/bin/postgres 
/tmp/postgres-bin.old/postgresql/8.4/bin/postgres: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory

Então, como posso restaurar bancos de dados antigos do Postgres 8.4 em uma nova instalação do Postgres 9.1 e atualizá-los?

postgresql recovery
  • 2 2 respostas
  • 14464 Views

2 respostas

  • Voted
  1. Best Answer
    swasheck
    2012-06-21T14:05:41+08:002012-06-21T14:05:41+08:00

    Está falhando ao tentar executar os arquivos bin antigos porque está faltando uma dependência. Você precisará instalar suas dependências, instalar o 8.4 no novo servidor para esta tarefa ou criar uma VM com o 8.4 instalado, copiar os arquivos para a VM, fazer o que for necessário para iniciar a instância 8.4 na VM ( o que significa que o postgres precisará saber onde está o diretório de dados padrão). A partir daí, eu faria um pg_dumpno(s) banco(s) de dados em questão e os restauraria no novo servidor. Isso provavelmente lhe daria o ambiente mais limpo.

    Então, aqui estão o que eu vejo como suas opções:

    Usando pg_upgrade

    No novo servidor ( pg_upgrade)

    1. Instale as dependências do PostgreSQL 8.4 e espere que seus binários copiados funcionem. Caso contrário, talvez seja necessário apenas remover esses binários copiados e instalar o 8.4 do apt.
    2. Tentar iniciar o serviço/tmp/postgres-bin.old/postgresql/8.4/bin/pg_ctl start -D /tmp/postgres.old/main/
    3. Se isso funcionar, pare o serviço/tmp/postgres-bin.old/postgresql/8.4/bin/pg_ctl stop -D /tmp/postgres.old/main/
    4. Agora tente seu script pg_upgrade

    Sem usar pg_upgrade

    1. Crie uma VM ou use um servidor antigo e descompactado e instale o postgresql 8.4
    2. Inicialize seu servidor usando initdb(ou pg_createcluster)
    3. Copie seus dados de backup sobre os que acabaram de ser criados
    4. Iniciar postgresql
    5. Faça backup dos dados usandopg_dump
    6. Copie o arquivo dump para o "novo servidor"
    7. Restaurar para um novo banco de dados no novo servidor
    • 6
  2. Tobias
    2014-02-13T12:37:45+08:002014-02-13T12:37:45+08:00

    Teve um problema semelhante hoje. Tive que migrar dois bancos de dados de uma versão 8.2.14 para 9.3.2, além de trocar os sistemas operacionais de Suse para Ubuntu. Tentei de várias formas, no final a 'mais fácil' venceu. Criei um dump com pg_dumpmas usando inserções em vez de cópias e criei o banco de dados a partir do arquivo dump:

    pg_dump 'database' -f 'filename' -C -D -U 'user' -W
    

    Antes de importar o arquivo para o novo sistema, verifiquei os caminhos que eram usados ​​em algumas funções e corrigi as informações do caminho. Tanto quanto eu posso ver, parece funcionar bem após a importação agora.

    • 2

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

    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