Je veux changer le répertoire de données de postgres en /home/postgres/data
éditer le postgresql.service au lieu de changer le fichier /etc/postgresql/10/main/postgresql.conf
.
J'ai donc édité le service avec
Sudo systemctl edit postgresql.service
Et ajouté ces lignes:
[Service]
Environment=PGDATA=/home/postgres/data
Et redémarrez le service avec Sudo servicetl restart postgresql.service
.
Mais le répertoire de données ne change pas.
Éditez également [email protected]
et redémarrez mon ordinateur portable, mais le répertoire de données n'a pas changé.
Comment modifier le répertoire de données pour postgres à l'aide de services ou d'unités systemctl?
Le répertoire de données doit être défini dans les fichiers _postgresql.conf
_.
Pourquoi?
Comme PostgreSQL est empaqueté sur Ubuntu, le _postgresql.service
_ est un service qui peut gérer plusieurs instances de PostgreSQL exécutées simultanément (vous pouvez par exemple avoir _10/main
_ et _10/main2
_ ou _9.6/main
_) et ils ne peuvent pas partager le même $ PGDATA, donc le définir globalement au niveau du service parapluie ne peut pas fonctionner.
En outre, la définir localement via des unités de service telles que _[email protected]
_ poserait un problème aux commandes qui gèrent des instances de PG telles que pg_lsclusters
ou pg_ctlcluster
, comme on ne sait pas comment ils trouveraient quel est le répertoire de données de ces instances. Actuellement, ces commandes analysent les fichiers de configuration. Ils le font pour le répertoire de données mais également pour d'autres bits de données tels que le numéro de port ou les répertoires de socket de domaine Unix. Cette partie est fournie par le paquet postgresql-common
, qui est assez indépendant de systemd (et est antérieur à son adoption).