, , ,

PostgreSQL: Déplacer le répertoire contenant les bases

Le répertoire racine contenant les données de postgres est définit par la valeur de la variable data_directory présente dans le fichier de configuration /etc/postgresql/9.6/main/postgresql.conf

data_directory = '/var/lib/postgresql/9.6/main'

Pour s'assurer que le serveur en cours d’exécution utilise ce répertoire, on peut utiliser le client postgres pour consulter la configuration effective:

su postgres
# Lancer le client postgres en mode interactif
psql
 
SHOW data_directory;
\q

Une fois le répertoire identifié, on peut arrêter le serveur

systemctl stop postgresql
systemctl status postgresql

Déplacer les dossier via rsync afin de conserver les droits

rsync -av /var/lib/postgresql /new/path/

Ici le dossier /var/lib/postgresql et son contenu seront recréés à l'identique dans le répertoire /new/path/

Renommer l'ancien répertoire temporairement afin de conserver une copie en cas de problème

mv /var/lib/postgresql/9.6/main /var/lib/postgresql/9.6/main.backup

Modifier le fichier de configuration:

data_directory = '/new/path/postgresql/9.6/main'

Relancer le serveur

systemctl start postgresql
systemctl status postgresql

Si tout fonctionne normalement, le serveur est en cours d’exécution. On peut comme en début de procédure consulter la nouvelle valeur effective de data_directory à l'aide du client psql.

Le dossier d'origine peut être supprimé:

rm -fr /var/lib/postgresql/9.6/main.backup

Références