ports:db:postgresql

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
ports:db:postgresql [2022/08/12 20:35] – maj davidports:db:postgresql [2024/02/04 09:18] (Version actuelle) – [Préparation] zorro
Ligne 4: Ligne 4:
 C'est un serveur de base de données dont vous aurez certainement besoin pour alimenter vos sites web et applications. C'est un serveur de base de données dont vous aurez certainement besoin pour alimenter vos sites web et applications.
 </jumbotron> </jumbotron>
-Préparez [[https://www.freshports.org/databases/postgresql11-server/|databases/postgresql11-server]] dans vos [[ports:poudriere|poudrières]].+Préparez [[https://www.freshports.org/databases/postgresql15-server/|databases/postgresql15-server]] dans vos [[ports:poudriere|poudrières]].
 Dans l'exemple qui suit <label type="primary">popeye</label> est l'hôte et <label type="success">pg</label> est la //jail//. Dans l'exemple qui suit <label type="primary">popeye</label> est l'hôte et <label type="success">pg</label> est la //jail//.
  
Ligne 13: Ligne 13:
 Adaptez la configuration de la //jail// <label type="success">pg</label> : Adaptez la configuration de la //jail// <label type="success">pg</label> :
  
-<file ini pg/etc/rc.conf.local>+<file bash pg/etc/rc.conf.local>
 hostname="pg" hostname="pg"
 </file> </file>
- 
  
 <file javascript /etc/jail.conf> <file javascript /etc/jail.conf>
- 
 pg { pg {
         host.hostname = pg;                    host.hostname = pg;           
Ligne 30: Ligne 28:
         exec.stop = "/bin/sh /etc/rc.shutdown";         exec.stop = "/bin/sh /etc/rc.shutdown";
 } }
- 
 </file> </file>
  
Ligne 36: Ligne 33:
  
   * ''mount.devfs'', en fait l'installation de //postgresql// n'a besoin que de ''/dev/null''. C'est le moyen le plus rapide de l'avoir.   * ''mount.devfs'', en fait l'installation de //postgresql// n'a besoin que de ''/dev/null''. C'est le moyen le plus rapide de l'avoir.
-  * ''sysvshm=inherit'' ou ''allow.sysvipc=1'', //postgresql// doit pouvoir allouer une [[https://www.freebsd.org/cgi/man.cgi?query=shmget&apropos=0&sektion=2&manpath=FreeBSD+12.1-RELEASE&arch=default&format=html|shared memory SYSV]] pour fonctionner, ''sysvipc'' va ouvrir d'autres //IPC// que //shm//.+  * ''sysvshm=inherit'' ou ''allow.sysvipc=1'', //postgresql// doit pouvoir allouer une [[https://www.freebsd.org/cgi/man.cgi?query=shmget&apropos=0&sektion=2&manpath=FreeBSD+13.1-RELEASE&arch=default&format=html|shared memory SYSV]] pour fonctionner, ''sysvipc'' va ouvrir d'autres //IPC// que //shm//.
  
 <code bash> <code bash>
-root@popeye:ifconfig lo1 create +:ifconfig lo1 create 
-root@popeye:jail -c pg +:jail -c pg 
-root@popeye:#  +:pkg -j pg install databases/postgresql15-server
-root@popeye:# pkg -j pg install databases/postgresql11-server+
 </code> </code>
  
 Pour que l'interface réseau soit créée au démarrage: Pour que l'interface réseau soit créée au démarrage:
 <code bash> <code bash>
-root@popeye:sysrc cloned_interfaces+="lo1"+:sysrc cloned_interfaces+="lo1"
 </code> </code>
  
 Ainsi que la jail: Ainsi que la jail:
 <code bash> <code bash>
-root@popeye:sysrc jail_enable="YES" +:sysrc jail_enable="YES" 
-root@popeye:sysrc jail_list+="pg"+:sysrc jail_list+="pg"
 </code> </code>
 ===== Préparation ===== ===== Préparation =====
Ligne 60: Ligne 56:
  
 <code bash> <code bash>
-root@popeye:jexec pg +:jexec pg 
-root@pg:/usr/local/etc/rc.d/postgresql oneinitdb+:/usr/local/etc/rc.d/postgresql oneinitdb
 </code> </code>
  
 Vous allez probablement permettre à l'hôte voire d'autre jail de communiquer avec votre serveur, autorisez le à écouter tout le monde: Vous allez probablement permettre à l'hôte voire d'autre jail de communiquer avec votre serveur, autorisez le à écouter tout le monde:
  
-<code bash /var/db/postgres/data11/postgresql.conf>+<file bash /var/db/postgres/data15/postgresql.conf>
 listen_addresses = '*' listen_addresses = '*'
-</code>+</file>
  
 Affinez le contrôle en autorisant tout va transiter par l’hôte: Affinez le contrôle en autorisant tout va transiter par l’hôte:
-<code bash /var/db/postgres/data11//pg_hba.conf>+<file whitespace /var/db/postgres/data15/pg_hba.conf>
 host    all             all             192.168.0.1/24         trust host    all             all             192.168.0.1/24         trust
-</code>+</file>
  
 <code bash> <code bash>
-root@pg:service postgresql onestart+:service postgresql onestart
 2020-04-11 13:54:50.404 UTC [19008] LOG:  listening on IPv4 address "0.0.0.0", port 5432 2020-04-11 13:54:50.404 UTC [19008] LOG:  listening on IPv4 address "0.0.0.0", port 5432
 2020-04-11 13:54:50.421 UTC [19008] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432" 2020-04-11 13:54:50.421 UTC [19008] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
Ligne 85: Ligne 81:
 changez le mot de passe administrateur du serveur de base de données: changez le mot de passe administrateur du serveur de base de données:
  
-<code bash+<code postgresql
-root@popeye:#jexec pg  +:jexec pg  
-root@pg:su - postgres +:su - postgres 
 $ psql $ psql
-psql (11.7)+psql (13.8, server 15.0) 
 +WARNING: psql major version 13, server major version 15. 
 +         Some psql features might not work.
 Type "help" for help. Type "help" for help.
- 
 postgres=# \l postgres=# \l
                              List of databases                              List of databases
Ligne 113: Ligne 110:
  
 <code bash> <code bash>
-root@popeye:#sysrc -j pg postgresql_enable="YES"+:sysrc -j pg postgresql_enable="YES"
 </code> </code>
  
 Vous pouvez maintenant démarrer le serveur de base de données: Vous pouvez maintenant démarrer le serveur de base de données:
 <code bash> <code bash>
-root@popeye:#service -j pg  postgresql start+:service -j pg  postgresql start
 </code> </code>
  
 +==== Extensions ====
  
 +Selon vos besoins, installez le port [[https://www.freshports.org/databases/postgresql15-contrib/|postgresql-contrib]].
 +Pour, par exemple, charger l'extension [[https://www.postgresql.org/docs/15/pgstatstatements.html|pg_stat_statements]]:
  
 +<code>
 +shared_preload_libraries = 'pg_stat_statements'
 +#pg_stat_statements.track = all
 +#pg_stat_statements.max = 10000
 +</code>
 ===== Tests ===== ===== Tests =====
  
Ligne 145: Ligne 150:
 </code> </code>
  
-A l'aide du client [[https://www.freshports.org/databases/postgresql11-client/|databases/postgresql11-client]]+A l'aide du client [[https://www.freshports.org/databases/postgresql15-client/|databases/postgresql15-client]]
 <code bash> <code bash>
 root@popeye# pg_isready --host=192.168.0.10 root@popeye# pg_isready --host=192.168.0.10
Ligne 154: Ligne 159:
 root@popeye# psql -U postgres --host=192.168.0.10 -W root@popeye# psql -U postgres --host=192.168.0.10 -W
 Password:  Password: 
-psql (11.7)+psql (13.8, server 15.0) 
 +WARNING: psql major version 13, server major version 15. 
 +         Some psql features might not work.
 Type "help" for help. Type "help" for help.
- 
 postgres-# \l postgres-# \l
                              List of databases                              List of databases
Ligne 186: Ligne 192:
 root@popeye:# psql -U postgres --host=/jails/pg/tmp/ -W root@popeye:# psql -U postgres --host=/jails/pg/tmp/ -W
 Password:  Password: 
-psql (11.7)+psql (13.8, server 15.0) 
 +WARNING: psql major version 13, server major version 15. 
 +         Some psql features might not work. 
 +Type "help" for help.
  
 postgres=# \l postgres=# \l
Ligne 206: Ligne 215:
 Dans ce cas, vous pouvez attribuer la valeur ''disable'' à ''ip4'' et ''ip6'' de votre jail et l'isoler ainsi complètement du réseau. Dans ce cas, vous pouvez attribuer la valeur ''disable'' à ''ip4'' et ''ip6'' de votre jail et l'isoler ainsi complètement du réseau.
 </callout> </callout>
 +
 +===== ZFS ======
 +
 +Si vous utilisez une [[jails:zfs|jail sous ZFS]] vous pouvez améliorer les performances en paramétrant le //dataset// au mieux.
 +
 +<code bash>
 +zfs get atime,compression,primarycache,recordsize,dedup,reservation zroot/JAILS/master/pg15
 +NAME                     PROPERTY      VALUE           SOURCE
 +zroot/JAILS/master/pg15  atime         off             inherited from zroot
 +zroot/JAILS/master/pg15  compression   lz4             inherited from zroot
 +zroot/JAILS/master/pg15  primarycache  metadata        local
 +zroot/JAILS/master/pg15  recordsize    128K            default
 +zroot/JAILS/master/pg15  dedup         off             inherited from zroot/JAILS/master
 +zroot/JAILS/master/pg15  reservation   1G              local
 +</code>
  
 ===== Mettre à jour ===== ===== Mettre à jour =====
  
-Créer un répertoire ''pg_oldbin'' et y sauvegarder tout ce qui conserver postgresql dans ''/usr/local/bin'' +Stoppez le service: 
-Connectez vous à la base:+<code bash> 
 +service postgresql stop 
 +</code> 
 + 
 +Sauvegarder les répertoires  ''/usr/local/bin'' dans ''/usr/local/pgold''. 
 +Connectez vous en tant qu'utilisateur ''postgre'':
  
 <code bash> <code bash>
-su - postgres +su - postgres
-# pg_dumpall +
 </code> </code>
  
-Mettre à jour, puis+Installez la nouvelle version puis préparer la nouvelle base de données comme indiqué dans l'article. 
 +Demandez la migration:
 <code bash> <code bash>
-su - postgres +su - postgres 
-# mv <pg_data> <pgdata_old> +pg_update -b /usr/local/pgold -B /usr/local/bin/ -d ./data11 -D ./data15
-# mkdir <data-folder> +
-# initdb pgdata +
-pg_update -b pg_oldbin -d pgdata_old -D pgdata+
 </code> </code>
  
 +Une fois la migration terminée, démarrer le service et demandez un ''VACUUM ANALYZE;'' sur chaque base.
 +===== En savoir plus =====
  
 +<alert type="info">
 +  * [[https://pgconfigurator.cybertec.at/|Configurator]]
 +</alert>
  
  
  • ports/db/postgresql.1660336520.txt.gz
  • Dernière modification : 2022/08/12 20:35
  • de david