Antes de tudo, saiba que o comando SHOW data_directory; mostra o diretório data sendo usado atualmente.
Mas, como posso alterar o diretório do banco de dados para outro diretório? As etapas abaixo são uma abordagem padrão. As etapas variam de acordo com requisitos específicos e podem exigir uma abordagem mais personalizada.
Passo a Passo para Alterar o Local da Pasta data do PostgreSQL
#1 Identifique o caminho do diretório de dados atual com o comando abaixo:
SHOW data_directory;
#2 pare os serviços do Postgresql com systemctl stop <nme_servico>. Onde nome_servico é o nome do postgesql instalado em seu servidor. Em meu caso é:
systemctl stop postgresql-12.service
#3 crie um diretório no caminho onde ficará a pasta data do postgresql
mkdir /minhapasta/data
altere a propriedade da pasta para o usuário postgres
chown postgres:postgres /minhapasta/data
#4 Use initdb para criar cria um novo cluster de banco de dados PostgreSQL
Acesse a pasta onde estão os programas do posgresql. Em meu caso é: /usr/pgsql-12/bin
cd /usr/pgsql-12/bin
Inicie um novo cluster na pasta. A opção -D especifica o diretório onde o cluster de banco de dados deve ser armazenado
./initdb -D /minhapasta/data
O initdb cria um novo cluster de banco de dados. O comando initdb possui várias outras opções para personalizar a configuração. Verifique a documentação para detalhes extras.
Outros Passos que Talvez Tenha que Fazer
Algumas etapas extras que podem ser necessárias para outros configuráveis que você pode ter configurado. As etapas típicas incluem:
#1 Serviço de inicialização configurável.
/usr/lib/systemd/system/postgres.service
Normalmente, a variável “Localização do diretório do banco de dados” é ajustada para apontar para o novo diretório do banco de dados de dados
#2 Pode haver uma edição de senha necessária, antes que a autenticação de confiança seja modificada
ALTER USER maria WITH PASSWORD 'minha_senha_aqui'
#3 ativar a autenticação de confiança no arquivo pg_hba.conf para conexão local. Para habilitar a autenticação de confiança, você precisará alterar o MÉTODO de “confiança” para “md5”
Iniciando o PostgreSQL
Você terá que logar com usuário que não seja o root. Veja a mensagem que aparece ao executarmos o initdb:
pg_ctl: não pode ser executado como root
Faça o login (usando, por exemplo, “su“) como o usuário (sem privilégios) que irá
possuir o processo do servidor.
Agora você pode iniciar o banco de dados postgresql com comando abaixo:
./pg_ctl -D /minhapasta/data -l logfile start
Lembre-se que o programa pg_ctl está dentro de, no meu caso, /usr/pgsql-12/bin. Use cd para acessar essa pasta antes de executar pg_ctl ou então execute com mando abaixo:
/usr/pgsql-12/bin/pg_ctl -D /minhapasta/data/ -l logfile start