[LINUX] Lancer plusieurs instances dans Postgresql 11.x

Installation de PostgreSQL

Installez PostgreSQL11.6 et lancez plusieurs instances. Créez également un script de démarrage pour chaque instance afin qu'il puisse être démarré / arrêté individuellement.

Ajouter le référentiel Yum

Cette fois, nous ajouterons un référentiel pour installer la version 11.

$ yum --disablerepo=\* --enablerepo=centos-media list
$ yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Exécuter Yum

$ yum -y install postgresql11-server postgresql11-contrib
$ rpm -qa |grep postgres
$ ls -l /usr/pgsql-11/

Définition des variables d'environnement

Ajoutez PATH à l'utilisateur postgres.

$ su - postgres
$ vi ./bashrc
export PATH=$PATH:/usr/pgsql-11/bin
export PGDATA=/data/pgsql-5432
export PATH
export PGDATA

$ source bashrc

Instance ① (pgsql-5432)

Créez la première instance pgsql-5432.

Création d'instance

Créez une instance dans le répertoire "/ data / pgsql-5432" avec la commande initdb.

$ initdb --pgdata=/data/pgsql-5432
$ cat /data/pgsql-5432/PG_VERSION
11

Confirmation de démarrage de l'instance

Exécutez la commande pg_ctl pour confirmer le démarrage de l'instance.

$ su postgres
$ /usr/pgsql-11/bin/pg_ctl -D /data/pgsql-5432 start
$ /usr/pgsql-11/bin/pg_ctl -D /data/pgsql-5432 stop
$ exit

Créer un script de démarrage

Dupliquez le script de démarrage créé lors de l'installation et éditez-le par exemple ①.

$ cd /usr/lib/systemd/system/
$ cp -p postgresql.service postgresql-5432.service
$ vi /usr/lib/systemd/system/postgresql-5432.service
Environment=PGDATA=/data/pgsql-5432/

Vérifiez le script de démarrage

Définissez l'arrêt / démarrage du service de l'instance ① et, si nécessaire, le démarrage automatique.

$ systemctl daemon-reload
$ systemctl status postgresql-5432.service
$ systemctl start postgresql-5432.service
$ systemctl stop postgresql-5432.service
$ systemctl status postgresql-5432.service

$ systemctl enable postgresql-5432.service
$ systemctl list-unit-files |grep postgres

Instance ② (pgsql-5433)

Créez la première instance pgsql-5433. Changez simplement le chemin du répertoire de la procédure exécutée dans "Instance ①".

Création d'instance

Créez une instance dans le répertoire "/ data / pgsql-5433" avec la commande initdb.

$ initdb --pgdata=/data/pgsql-5433
$ cat /data/pgsql-5433/PG_VERSION
11

Confirmation de démarrage de l'instance

Exécutez la commande pg_ctl pour confirmer le démarrage de l'instance.

$ su postgres
$ /usr/pgsql-11/bin/pg_ctl -D /data/pgsql-5432 start
$ /usr/pgsql-11/bin/pg_ctl -D /data/pgsql-5432 stop
$ exit

Créer un script de démarrage

Dupliquez le script de démarrage créé lors de l'installation et éditez-le par exemple ②.

$ cd /usr/lib/systemd/system/
$ cp -p postgresql.service postgresql-5433.service
$ vi /usr/lib/systemd/system/postgresql-5433.service
Environment=PGDATA=/data/pgsql-5432/

Vérifiez le script de démarrage

Définissez l'arrêt / démarrage du service de l'instance ② et, si nécessaire, le démarrage automatique.

$ systemctl daemon-reload
$ systemctl status postgresql-5433.service
$ systemctl start postgresql-5433.service
$ systemctl stop postgresql-5433.service
$ systemctl status postgresql-5433.service

$ systemctl enable postgresql-5433.service
$ systemctl list-unit-files |grep postgres

Paramètres du port

Modifiez le port utilisé par chaque instance. Cette fois, seule l'instance ② est modifiée.

$ vi /data/pgsql-5433/postgresql.conf
#port = 5432
port = 5433

Lancement de l'instance

Lancez les instances individuellement.

$ systemctl start postgresql-5432.service
$ systemctl status postgresql-5432.service

$ systemctl start postgresql-5433.service
$ systemctl status postgresql-5433.service

Confirmation du processus

Vérifiez le processus de chaque instance.

$ ps -ef |grep pgsql
postgres 28435     1  0 Feb09 ?        00:00:02 /usr/pgsql-11/bin/postmaster -D /data/pgsql-5432/
postgres 28456     1  0 Feb09 ?        00:00:01 /usr/pgsql-11/bin/postmaster -D /data/pgsql-5433/

Confirmation du port

Assurez-vous que chaque instance s'exécute sur le port spécifié.

$ ss -anp |grep 5432
~~~
tcp    LISTEN     0      128       *:5432                  *:*                   users:(("postmaster",pid=28435,fd=3))
~~~

$ ss -anp |grep 5433
~~~
tcp    LISTEN     0      128       *:5433                  *:*                   users:(("postmaster",pid=28456,fd=3))
~~~

Après cela, réglez-le simplement pour chaque instance!

$ ll /data/pgsql-5432
$ ll /data/pgsql-5433

c'est tout.

Recommended Posts

Lancer plusieurs instances dans Postgresql 11.x
[PostgreSQL] Créer plusieurs instances
Sélection multiple avec Jupyter
compilateur x86 réalisé avec python
Analyse de régression multiple avec Keras
Connectez-vous à Postgresql avec GO
Animer plusieurs graphiques avec matplotlib
Contrôlez plusieurs robots avec jupyter-lab