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 / 28926
Accepted
codecool
codecool
Asked: 2012-11-20 07:31:51 +0800 CST2012-11-20 07:31:51 +0800 CST 2012-11-20 07:31:51 +0800 CST

Movendo dados postgresql para unidade diferente

  • 772

Estou usando a AWS como meu ambiente de nuvem. Instalei o PostgreSQL na mesma unidade que meu volume de instância raiz. Anexei e montei a segunda unidade à minha instância. Agora quero mover todos os meus dados do PostgreSQL para a unidade diferente. Ainda estou no modo de desenvolvimento para poder excluir os dados antigos se facilitar a transferência neste momento. Qual é a melhor maneira de fazer isso?

O tablespace do PostgreSQL é algo que eu deveria olhar?

postgresql tablespaces
  • 4 4 respostas
  • 31562 Views

4 respostas

  • Voted
  1. Best Answer
    a_horse_with_no_name
    2012-11-20T07:39:03+08:002012-11-20T07:39:03+08:00

    O seguinte deve fazê-lo:

    1. Desligar o PostgreSQL
    2. Certifique-se de que o PostgreSQL não seja mais executado
    3. Verifique se o PostgreSQL está realmente parado
    4. Copie o diretório de dados antigo para a nova unidade
      Isso geralmente é definido por meio de um parâmetro de linha de comando ( -D) para seu serviço ou por meio da PGDATAvariável de ambiente.
    5. Atualize sua configuração do PostgreSQL (serviço, ambiente var) para apontar para o novo diretório de dados.
    6. Se você copiou os dados, renomeie o diretório de dados antigo para garantir que o PostgreSQL não o encontre mais. Dessa forma, você receberá uma mensagem de erro se não tiver feito a configuração correta.
    7. Iniciar o serviço
    8. Se tudo estiver funcionando bem, você pode excluir o diretório antigo.
    • 28
  2. adi
    2016-05-07T10:33:49+08:002016-05-07T10:33:49+08:00
    1. Parar o serviço postgresql
    2. cp -a source_data_directory destination_data_directory
    3. chown -R postgres_user /destination_data_directory
    4. export PGDATA=destination_data_directory
    5. Alterando o diretório de dados para destination_data_directory dentro do postgresql.conf
    6. pg_ctl iniciar
    • 5
  3. Victoria Stuart
    2019-05-04T14:03:30+08:002019-05-04T14:03:30+08:00

    Aqui está uma descrição de como mover um banco de dados PostgreSQL existente para um novo local (pasta, partição), no Arch Linux (este procedimento deve ser semelhante para outras distribuições Linux).

    pg_dumpallé um utilitário para escrever (dumping) todos os bancos de dados PostgreSQL de um cluster em um arquivo de script. ... Ele faz isso chamando pg_dumpcada banco de dados no cluster. ...

    Por exemplo:

    ## To dump all databases:
    $ pg_dumpall > /tmp/db.out               ## backup all postgres databases to file
    $ pg_dumpall -Fc dbname > /tmp/outfile   ## backup a database
    
    ## To reload database(s) from that file:
    $ psql -f /tmp/db.out postgres
    

    TL/DR

    Você precisa:

    • exportar ( pg_dumpall) banco de dados
    • criar novo diretório VAZIO
    • editar arquivo postgresql.conf
    • reinicie o serviço do servidor postgres
    • carregar dados antigos do arquivo de despejo no novo banco de dados

    Resumo dos comandos

    Estou deixando meus prompts de shell (hostname ...) para esclarecer em que shell estou enquanto prossigo.

    [victoria@victoria ~]$ postgres --version     ## postgres (PostgreSQL) 11.2
    [victoria@victoria claws]$ sudo -u postgres -i
    [postgres@victoria ~]$ pg_dumpall > /tmp/db.out
    [postgres@victoria ~]$ psql
    [postgres]# SHOW data_directory;              ## /var/lib/postgres/data
    [postgres]# exit
    [victoria@victoria postgres]$ mkdir /mnt/Vancouver/programming/rdb/postgres/postgresdb
    ## IMPORTANT: dir must be empty:
    [victoria@victoria postgres]$ l postgresdb/   ## total 0
    [victoria@victoria postgres]$ sudo chown postgres:root /mnt/Vancouver/programming/rdb/postgres/postgresdb/
    [victoria@victoria postgres]$ sudo systemctl status postgresql
      ...
      May 02 19:55:21 victoria systemd[1]: Started PostgreSQL database server.
    [postgres@victoria ~]$ initdb --locale en_US.UTF-8 -E UTF8 -D '/mnt/Vancouver/programming/rdb/postgres/postgresdb/data'
    [postgres@victoria ~]$ exit
    [victoria@victoria postgres]$ sudo vim /var/lib/postgres/data/postgresql.conf
      ## added line:
      data_directory = '/mnt/Vancouver/programming/rdb/postgres/postgresdb/data'
    [victoria@victoria postgres]$ sudo -u postgres -i
    [postgres@victoria ~]$ psql
    [postgres]# SHOW data_directory;
      ## /var/lib/postgres/data   ## << Old dir; need to restart postgresql service
    [postgres]# \q
    [victoria@victoria postgres]$ sudo systemctl restart postgresql
    [victoria@victoria postgres]$ sudo -u postgres -i
    [postgres@victoria ~]$ psql
    [postgres]# SHOW data_directory;
      ## /mnt/Vancouver/programming/rdb/postgres/postgresdb/data
    [postgres]# \q
    [postgres@victoria ~]$ psql -f /tmp/db.out postgres
      SET
      SET
      SET
      CREATE ROLE
      ALTER ROLE
      [ ... SNIP! ... ]
    [postgres@victoria ~]$ exit
    ## Done!  :-D
    

    Exemplo

    Veja minha postagem no blog, How to Move an Existing PostgreSQL Database on Arch Linux , para obter o código e a saída comentados.---


    Referências

    • [boas dicas] Como mover um diretório de dados PostgreSQL para um novo local no Ubuntu 16.04
    • [postgres docs] pg_dumpall

    • [Documentos do Arch Linux] Despejo e recarregamento manual

    • [StackOverflow] Copiando o banco de dados PostgreSQL para outro servidor
    • [StackOverflow] Permissão de despejo do PostgreSQL negada
    • 2
  4. Lav Patel
    2022-09-03T11:08:51+08:002022-09-03T11:08:51+08:00

    As respostas @a_horse_with_no_name funcionam muito bem, mas eu precisava modificá-lo um pouco para que o systemctl funcionasse com ele.

    sudo systemctl edit postgresql-13
    
    # Note: This overrides base systemctl file
    [Service]
    Environment=
    Environment=PGDATA=new_path
    

    Nota: Eu tive que limpar explicitamente Environment antes de configurá-lo novamente, pois é uma configuração aditiva, semelhante a outras listas como ExecStart (como um todo, não por variável) e EnvironmentFile;

    • 0

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