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?
O seguinte deve fazê-lo:
Isso geralmente é definido por meio de um parâmetro de linha de comando (
-D
) para seu serviço ou por meio daPGDATA
variável de ambiente.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 chamandopg_dump
cada banco de dados no cluster. ...Por exemplo:
TL/DR
Você precisa:
pg_dumpall
) banco de dadosResumo dos comandos
Estou deixando meus prompts de shell (hostname ...) para esclarecer em que shell estou enquanto prossigo.
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
[postgres docs] pg_dumpall
[Documentos do Arch Linux] Despejo e recarregamento manual
As respostas @a_horse_with_no_name funcionam muito bem, mas eu precisava modificá-lo um pouco para que o systemctl funcionasse com ele.
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;