PostgreSQL: alterar diretório de dados

Confira qual é o sistema operacional, pois o procedimento pode variar de acordo.

[ricardo@localhost ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)
[ricardo@localhost ~]$

Confira qual é o diretório de dados atual.

[ricardo@localhost ~]$ sudo -u postgres psql
psql (9.6.4)
Type "help" for help.

postgres=# SHOW data_directory;
     data_directory
-------------------------
 /var/lib/pgsql/9.6/data
(1 row)

postgres-# \q

Pare o PostgreSQL.

[ricardo@localhost ~]$ sudo systemctl stop postgresql-9.6

Copie os dados para o novo diretório.

[ricardo@localhost ~]$ sudo rsync -av /var/lib/pgsql/9.6/data/ /data/

A linha abaixo deve ser descomentada e alterada de acordo no arquivo de configuração do PostgreSQL.

[ricardo@localhost ~]$ sudo grep data_directory /var/lib/pgsql/9.6/data/postgresql.conf
data_directory = '/data/'               # use data in another directory
[ricardo@localhost ~]$

Inicie o PostgreSQL.

[ricardo@localhost ~]$ sudo systemctl start postgresql-9.6

Confira o novo diretório de dados.

[ricardo@localhost ~]$ sudo -u postgres psql
psql (9.6.4)
Type "help" for help.

postgres=# SHOW data_directory;
 data_directory
----------------
 /data
(1 row)

postgres=#

3 comments

  1. Boa tarde
    Estou tendo problemas para subir o serviço após a alteração da pasta conforme instruções acima, o erro é :
    May 26 16:07:48 systemd[1]: Starting PostgreSQL database server…
    May 26 16:07:48 pg_ctl[45627]: FATAL: could not read permissions of directory “/home/postgresql/data”: Permission denied
    May 26 16:07:49 pg_ctl[45627]: pg_ctl: could not start server
    May 26 16:07:49 systemd[1]: postgresql.service: control process exited, code=exited status=1
    May 26 16:07:49 systemd[1]: Failed to start PostgreSQL database server.
    May 26 16:07:49 systemd[1]: Unit postgresql.service entered failed state.
    May 26 16:07:49 systemd[1]: postgresql.service failed.

    Já tentei alterar as permissoes da pasta para todas as possiveis (0700, 755, 777, 700), sem sucesso.
    poderias me dar uma luz?
    Obrigado desde já

    1. Se é RHEL / CentOS / OEL, veja se o SELinux está ativado.
      Acho que é uma destas Distribuições Linux que citei, pois o RHEL / CentOS / OEL na versão 7 cria um diretório /home gigantesco na instalação padrão.
      E eu não recomendo ficar testando permissões assim, especialmente se for de forma recursiva, e mais especialmente se for 777. Tenha certeza de saber qual era o estado original de permissões para poder voltar.

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.