{{tag>sysadmin dbadmin postgres postgresql}}
====== 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 =====
* https://www.digitalocean.com/community/tutorials/how-to-move-a-postgresql-data-directory-to-a-new-location-on-ubuntu-16-04