[LINUX] Starten Sie mehrere Instanzen in Postgresql 11.x.

PostgreSQL-Installation

Installieren Sie PostgreSQL11.6 und starten Sie mehrere Instanzen. Erstellen Sie außerdem für jede Instanz ein Startskript, damit es einzeln gestartet / gestoppt werden kann.

Yum-Repository hinzufügen

Dieses Mal werden wir ein Repository hinzufügen, um Version 11 zu installieren.

$ 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

Führen Sie Yum

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

Umgebungsvariablen einstellen

Fügen Sie dem Postgres-Benutzer PATH hinzu.

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

$ source bashrc

Instanz ① (pgsql-5432)

Erstellen Sie die erste Instanz pgsql-5432.

Instanzerstellung

Erstellen Sie mit dem Befehl initdb eine Instanz im Verzeichnis "/ data / pgsql-5432".

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

Bestätigung des Instanzstarts

Führen Sie den Befehl pg_ctl aus, um den Start der Instanz zu bestätigen.

$ 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

Startskript erstellen

Duplizieren Sie das während der Installation erstellte Startskript und bearbeiten Sie es beispielsweise ①.

$ 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/

Überprüfen Sie das Startskript

Stellen Sie den Service Stop / Start der Instanz ① und ggf. den automatischen Start ein.

$ 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

Instanz ② (pgsql-5433)

Erstellen Sie die erste Instanz pgsql-5433. Ändern Sie einfach den Verzeichnispfad der in "Instanz ①" ausgeführten Prozedur.

Instanzerstellung

Erstellen Sie mit dem Befehl initdb eine Instanz im Verzeichnis "/ data / pgsql-5433".

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

Bestätigung des Instanzstarts

Führen Sie den Befehl pg_ctl aus, um den Start der Instanz zu bestätigen.

$ 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

Startskript erstellen

Duplizieren Sie das während der Installation erstellte Startskript und bearbeiten Sie es beispielsweise ②.

$ 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/

Überprüfen Sie das Startskript

Stellen Sie den Service Stop / Start der Instanz ② und ggf. den automatischen Start ein.

$ 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

Porteinstellungen

Ändern Sie den von jeder Instanz verwendeten Port. Dieses Mal wird nur die Instanz ② geändert.

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

Instanzstart

Starten Sie die Instanzen einzeln.

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

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

Prozessbestätigung

Überprüfen Sie den Prozess jeder Instanz.

$ 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/

Portbestätigung

Stellen Sie sicher, dass jede Instanz auf dem angegebenen Port ausgeführt wird.

$ 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))
~~~

Danach legen Sie es einfach für jede Instanz fest!

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

das ist alles.

Recommended Posts

Starten Sie mehrere Instanzen in Postgresql 11.x.
[PostgreSQL] Erstellen Sie mehrere Instanzen
Mehrfachauswahl mit Jupyter
x86-Compiler selbst erstellt mit Python
Multiple Regressionsanalyse mit Keras
Stellen Sie mit GO eine Verbindung zu Postgresql her
Animieren Sie mehrere Diagramme mit matplotlib
Steuern Sie mehrere Roboter mit jupyter-lab