Tuto | Installation d’un serveur PostgreSQL multi-instances

Article publiée le 27 Décembre 2016

Je continue dans ma lancée des tutoriels concernant l’installation et la configuration de base de données multi instance (cf: tuto sur l’installation d’une base Mysql multi instance: http://journaldunadminlinux.fr/tuto-installation-dune-mysql-multi-instance/).

Si vous ne connaissez rien du tout sur postgresql je vous suggère d’aller faire un tour sur le tuto d’installation de postgres: http://journaldunadminlinux.fr/tuto-installation-dune-mysql-multi-instance/

Ci-dessous la procédure pour configurer un serveur postgresql en multi instance

 

  • Procédez à l’installation de PostgreSQL via la commande apt-get install postgresql postgresql-common postgresql-contrib
  • Faites, une sauvegarde du fichier de configuration /etc/postgresql/9.4/main/postgresql.conf
  • Copier la configuration ci-dessous dans votre fichier postgresql.conf:
data_directory = '/var/lib/postgresql/9.4/main'
hba_file = '/etc/postgresql/9.4/main/pg_hba.conf'
ident_file = '/etc/postgresql/9.4/main/pg_ident.conf'
external_pid_file = '/var/run/postgresql/9.4-main.pid'
listen_addresses = 'localhost'
port = 5432
max_connections = 100
unix_socket_directories = '/var/run/postgresql'
ssl = true
shared_buffers = 1024MB
work_mem = 16MB
maintenance_work_mem = 1024MB
checkpoint_segments = 64
checkpoint_completion_target = 0.9
effective_cache_size = 1024MB
log_min_duration_statement = 500
log_line_prefix = '%m %d '
datestyle = 'iso, mdy'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
  • Créez les dossiers de stockage  avec les bons droits:
mkdir /srv//pg && chown postgres:postgres /srv//pg && chmod 700 /srv/pg
  • Créez les répertoires pour les fichiers de configurations

mkdir /etc/postgresql/9.4/<instance>
  • Créez la nouvelle instance
su - postgres
/usr/lib/postgresql/9.4/bin/initdb -D /srv//pg
cp /etc/postgresql/9.4/main/*conf /etc/postgresql/9.4/<instance name>
  • Éditez et modifier le fichier /etc/postgresql/9.4/<instance name>/postgresql.conf avec les bonnes informations
data_directory
hba_file
ident_file
external_pid_file
port
  • Redémarrez PostgreSQL

Quelques commandes pour aider (version « 9.4 »  adapter bien évidemment):

Lister les Clusters :   pg_lsclusters

Arrêter une instance: pg_ctlcluster 9.4 <instance name> stop

Démarrer une instance: pg_ctlcluster 9.4 instance1 start