Installieren Sie PostgreSQL 13 unter CentOS 7.5

Umgebung

PostgreSQL 13.0 wurde am 24.09.2020 veröffentlicht, daher werde ich es installieren.

Die Umgebung ist wie folgt.

--CentOS 7.5 (Firewall deaktiviert)

Der Installationsvorgang ist fast der gleiche wie für PostgreSQL 12 unten.

Installation von LLVM-bezogenen Bibliotheken

Ab 12.3 sind LLVM-bezogene Bibliotheken erforderlich, um postgresXX-devel zu installieren. postgresXX-devel wird beim Kompilieren von Erweiterungen verwendet. Wenn Sie nur PostgreSQL ausführen möchten, müssen Sie es nicht installieren.

# yum -y install epel-release centos-release-scl

Installieren Sie das PostgreSQL-Repository

Installieren Sie das PostgreSQL-Repository-Paket für CentOS. Eine Liste der URLs für Repository-Pakete für jedes Betriebssystem finden Sie auf den folgenden Websites.

https://yum.postgresql.org/repopackages.php

# yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
~ Ausgelassen ~
Running transaction
  Installing : pgdg-redhat-repo-42.0-13.noarch                                                                                                     1/1 
  Verifying  : pgdg-redhat-repo-42.0-13.noarch                                                                                                     1/1 

Installed:
  pgdg-redhat-repo.noarch 0:42.0-13                                                                                                                    

Complete!

Installieren Sie PostgreSQL

Installieren Sie PostgreSQL.

# yum -y install postgresql13-contrib postgresql13-devel

~ Ausgelassen ~
Installed:
  postgresql13-contrib.x86_64 0:13.0-1PGDG.rhel7                              postgresql13-devel.x86_64 0:13.0-1PGDG.rhel7                             

Dependency Installed:
  audit-libs-python.x86_64 0:2.8.5-4.el7           checkpolicy.x86_64 0:2.5-8.el7                devtoolset-7-binutils.x86_64 0:2.28-11.el7           
  devtoolset-7-gcc.x86_64 0:7.3.1-5.16.el7         devtoolset-7-gcc-c++.x86_64 0:7.3.1-5.16.el7  devtoolset-7-libstdc++-devel.x86_64 0:7.3.1-5.16.el7 
  devtoolset-7-runtime.x86_64 0:7.1-4.el7          libcgroup.x86_64 0:0.41-21.el7                libedit-devel.x86_64 0:3.0-12.20121213cvs.el7        
  libicu.x86_64 0:50.2-4.el7_7                     libicu-devel.x86_64 0:50.2-4.el7_7            libsemanage-python.x86_64 0:2.5-14.el7               
  libxslt.x86_64 0:1.1.28-5.el7                    llvm-toolset-7-clang.x86_64 0:5.0.1-4.el7     llvm-toolset-7-clang-libs.x86_64 0:5.0.1-4.el7       
  llvm-toolset-7-compiler-rt.x86_64 0:5.0.1-2.el7  llvm-toolset-7-libomp.x86_64 0:5.0.1-2.el7    llvm-toolset-7-llvm-libs.x86_64 0:5.0.1-8.el7        
  llvm-toolset-7-runtime.x86_64 0:5.0.1-4.el7      llvm5.0.x86_64 0:5.0.1-7.el7                  llvm5.0-devel.x86_64 0:5.0.1-7.el7                   
  llvm5.0-libs.x86_64 0:5.0.1-7.el7                ncurses-devel.x86_64 0:5.9-14.20130511.el7_4  policycoreutils-python.x86_64 0:2.5-34.el7           
  postgresql13.x86_64 0:13.0-1PGDG.rhel7           postgresql13-libs.x86_64 0:13.0-1PGDG.rhel7   postgresql13-server.x86_64 0:13.0-1PGDG.rhel7        
  python-IPy.noarch 0:0.75-6.el7                   scl-utils.x86_64 0:20130529-19.el7            setools-libs.x86_64 0:3.3.8-4.el7                    

Dependency Updated:
  audit.x86_64 0:2.8.5-4.el7              audit-libs.x86_64 0:2.8.5-4.el7    libselinux.x86_64 0:2.5-15.el7    libselinux-python.x86_64 0:2.5-15.el7   
  libselinux-utils.x86_64 0:2.5-15.el7    libsemanage.x86_64 0:2.5-14.el7    libsepol.x86_64 0:2.5-10.el7      policycoreutils.x86_64 0:2.5-34.el7     

Complete!

PostgreSQL wird unter "/ usr / pgsql-13 /" installiert.

# ls -l /usr/pgsql-13/
total 20
drwxr-xr-x. 2 root root 4096 Sep 25 23:11 bin
drwxr-xr-x. 3 root root   23 Sep 25 23:11 doc
drwxr-xr-x. 6 root root 4096 Sep 25 23:11 include
drwxr-xr-x. 5 root root 4096 Sep 25 23:11 lib
drwxr-xr-x. 8 root root 4096 Sep 25 23:11 share

Automatischer Start von PostgreSQL

Führen Sie den folgenden Befehl aus, um PostgreSQL automatisch zu starten.

# systemctl enable postgresql-13.service

Erstellen eines Datenbankclusters

Erstellen Sie einen Datenbankcluster. Ich laufe als Root-Benutzer. Die Datenbankdatei wird standardmäßig in "/ var / lib / pgsql / 13 / data /" erstellt, diesmal jedoch in "/ data /" und darunter geändert. Sie kann durch die Umgebungsvariable "PGDATA" in der Datei postgresql-13.service angegeben werden.

# vi /usr/lib/systemd/system/postgresql-13.service

Vorher ändern)
Environment=PGDATA=/var/lib/pgsql/13/data/
Nach der veränderung)
Environment=PGDATA=/data/

# systemctl daemon-reload

Führen Sie dann den folgenden Befehl aus, um den Datenbankcluster zu erstellen.

# PGSETUP_INITDB_OPTIONS="-E UTF8 --no-locale" /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database ... OK

Bestätigen Sie, dass es unter "/ data /" generiert wird.

# cat /data/PG_VERSION 
13

Starten Sie PostgreSQL

Fügen Sie vor dem Booten das PostgreSQL-Bin-Verzeichnis zum Pfad hinzu.

# su - postgres

/var/lib/pgsql/.pgsql_Fügen Sie den Pfad zu Ihrem Profil hinzu.

# vi /var/lib/pgsql/.pgsql_profile
PATH=/usr/pgsql-13/bin:$PATH
export PATH

Ändern Sie PGDATA.

# vi /var/lib/pgsql/.bash_profile
#PGDATA=/var/lib/pgsql/12/data
PGDATA=/data

# source ~/.bash_profile

Starten Sie PostgreSQL mit "pg_ctl start".

$ pg_ctl start
2020-09-25 23:16:08.611 CEST [12910] HINT:  Future log output will appear in directory "log".
 done
server started

Datenbankprüfung

Lassen Sie uns den erstellten Datenbankcluster überprüfen. Lassen Sie uns eine Liste der Versionen und Datenbanken anzeigen.

$ psql -V
psql (PostgreSQL) 13.0
$ psql -l
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges   
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | UTF8     | C       | C     | 
 template0 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
(3 rows)

Benutzer und Datenbanken erstellen

Erstellen Sie einen Benutzer ("testuser") und eine Datenbank ("testdb").

$ createuser --login --pwprompt testuser
Enter password for new role: 
Enter it again:

$ createdb --owner=testuser testdb

Externe Verbindungen zulassen

PostgreSQL erlaubt standardmäßig keine Remoteverbindung. Ändern Sie daher die Einstellungen.

# vi /data/postgresql.conf
* Standardmäßig, "/var/lib/pgsql/13/data/postgresql.conf」

Vorher ändern)
#listen_addresses = 'localhost'
Nach der veränderung)
listen_addresses = '*'

Ändern Sie dann pg_hba.conf.

# vi /data/pg_hba.conf
* Standardmäßig, "/var/lib/pgsql/13/data/pg_hba.conf」

# "local" is for Unix domain socket connections only
local   testdb          testuser                                md5
→ Eine Zeile hinzugefügt, damit der Testbenutzer eine Verbindung zu testdb von local zu md5 herstellen kann.
local   all             all                                     peer
# IPv4 local connections:
host    all             all             192.168.10.0/24         md5
→192.168.10.0/Es wurde eine Zeile hinzugefügt, damit Sie von 24 (dieser Serverumgebung) aus eine Verbindung herstellen können.
host    all             all             127.0.0.1/32            ident

Laden Sie die Konfigurationsänderungen neu.

$ pg_ctl reload
* Oder systemctl postgresql neu laden-13 sollte in Ordnung sein.

Ändern Sie das Passwort des Postgres-Benutzers (obwohl Sie es nicht müssen).

$ psql
alter role postgres with password 'postgres';

Überprüfen Sie die Verbindung aus der Ferne (A5: Ich habe die Verbindung über SQL überprüft, aber die Erklärung wird weggelassen.)

Führen Sie die folgenden Schritte aus, um die lokale Verbindung zu überprüfen.

$ psql testdb testuser

Password for user testuser: 
psql (13.0)
Type "help" for help.

testdb=> 

Tabelle erstellen

Erstellen Sie eine Tabelle und füllen Sie sie mit Daten.

testdb=> create table test (id int, value text);
CREATE TABLE
testdb=> insert into test (id, value) values (1, 'test text');
INSERT 0 1
testdb=> select * from test;
 id |   value   
----+-----------
  1 | test text
(1 row)

"\ D" zeigt eine Liste von Tabellen an und "\ du" zeigt eine Liste von Rollen an.

testdb=> \d
        List of relations
 Schema | Name | Type  |  Owner   
--------+------+-------+----------
 public | test | table | testuser
(1 row)

testdb=> \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 testuser  |                                                            | {}

Andere Einstellungsänderungen

Es scheint, dass PostgreSQL verschiedene Parameter auf kleine Werte als Ganzes eingestellt hat. Ich habe nur den gemeinsam genutzten Puffer von 128 MB auf 512 MB geändert (20% bis 40% des gesamten Speichers scheinen gut zu sein). Es gibt viele andere Parameter, die geändert werden sollten, aber da sie systemabhängig sind, einschließlich des gemeinsam genutzten Puffers, werden wir sie diesmal nicht ändern.

Hier erfahren Sie, wie Sie den gemeinsam genutzten Puffer ändern.

# vi /data/postgresql.conf
* Standardmäßig, "/var/lib/pgsql/13/data/postgresql.conf」

Vorher ändern)
shared_buffers = 128MB
Nach der veränderung)
shared_buffers = 512MB

Sie müssen lediglich PostgreSQL neu starten.

Protokolleinstellungen

Ich habe die Protokolleinstellungen wie folgt geändert.

$ vi /data/postgresql.conf

Vor der Änderung ist es wie folgt.

log_filename = 'postgresql-%a.log'
log_rotation_size = 0
#log_min_duration_statement = -1
#log_checkpoints = off
#log_connections = off
#log_disconnections = off
#log_lock_waits = off

Nach der Änderung ist es wie folgt.

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_size = 1GB
log_min_duration_statement = 500ms
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0

Führen Sie den Benchmark mit pgbench aus

In PostgreSQL ist das Benchmark-Tool pgbench standardmäßig enthalten. Erstellen Sie zunächst mit pgbench eine Benchmark-Tabelle und Daten.

$ pgbench -i -s 10 testdb
dropping old tables...
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
creating tables...
generating data (client-side)...
1000000 of 1000000 tuples (100%) done (elapsed 9.02 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done in 12.99 s (drop tables 0.00 s, create tables 0.01 s, client-side generate 9.12 s, vacuum 0.87 s, primary keys 3.00 s).

Sobald die Daten fertig sind, ist es Zeit, den Benchmark auszuführen.

$ pgbench -c 10 -j 10 -t 2000 -N testdb
starting vacuum...end.
transaction type: <builtin: simple update>
scaling factor: 10
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 2000
number of transactions actually processed: 20000/20000
latency average = 4.910 ms
tps = 2036.732154 (including connections establishing)
tps = 2039.124174 (excluding connections establishing)

"-c 10" steht für die Anzahl der Clients "10" und "-t 1000" für die Anzahl der Transaktionen pro Client.

Die Cache-Trefferquote nach dem Ausführen des Benchmarks kann wie folgt angezeigt werden.

select relname,
   round(heap_blks_hit * 100 / (heap_blks_hit+heap_blks_read), 2)
   as cache_hit_ratio from pg_statio_user_tables
     where heap_blks_read > 0 order by cache_hit_ratio;

     relname      | cache_hit_ratio 
------------------+-----------------
 test             |           50.00
 pgbench_accounts |           63.00
 pgbench_branches |           82.00
 pgbench_tellers  |           95.00
 pgbench_history  |           99.00
(5 rows)

Die Cache-Trefferquote des Index ist wie folgt.

select relname, indexrelname,
   round(idx_blks_hit * 100 / (idx_blks_hit + idx_blks_read), 2)
   as cache_hit_ratio from pg_statio_user_indexes
     where idx_blks_read > 0 order by cache_hit_ratio;

     relname      |     indexrelname      | cache_hit_ratio 
------------------+-----------------------+-----------------
 pgbench_tellers  | pgbench_tellers_pkey  |           33.00
 pgbench_branches | pgbench_branches_pkey |           50.00
 pgbench_accounts | pgbench_accounts_pkey |           98.00
(3 rows)

Referenz

Recommended Posts

Installieren Sie PostgreSQL 12 auf Centos8
Installieren Sie PostgreSQL 13 unter CentOS 7.5
Installieren Sie Golang unter CentOS 8
Installieren Sie Vertica 10.0 unter CentOS 6.10
Installieren Sie Python 3 unter CentOS 7
Installieren Sie kuromoji unter CentOS7
Installieren Sie PostGIS 2.5.5 unter CentOS7
Installieren Sie jpndistrict unter CentOS 7
Installieren Sie Redmine 4.1.1 unter CentOS 7
Smokeping Installation unter CentOS7
Installieren Sie OpenFOAM v2006 unter CentOS
Installieren Sie Apache unter CentOS auf VirtualBox
Installieren Sie Ruby 2.7 unter CentOS 7 (SCL)
Hinweis: Installieren Sie PostgreSQL 9.5 unter Ubuntu 18.04
Java Open JDK 8 unter CentOS 7 installieren
So installieren Sie MariaDB 10.4 unter CentOS 8
Installieren Sie Apache 2.4.46 von der Quelle unter CentOS 7
Schritte zum Installieren von devtoolset-6 unter CentOS 7
Installieren Sie Java 9 unter Windows 10 und CentOS 7
[CentOS] Installieren Sie Apache-Loggen
Installieren Sie samba4 aus dem Quellcode unter CentOS8
Installieren Sie den Webmail-Client Rainloop unter CentOS 8
So installieren Sie Beta PHP8.0 unter CentOS8
Installieren Sie NextCloud unter CentOS 7 mit Alibaba Cloud ECS
Installieren Sie Corretto 8 unter Windows
Maven auf CentOS 7 Tutorial
Installieren Sie OpenJDK unter macOS
Installieren Sie Java auf dem Mac
Docker-Installation unter CentOS 6
Verwenden Sie perltidy unter CentOS 8
Installieren Sie pyqt5 auf Ubuntu
Probieren Sie OpenLiteSpeed unter CentOS8 aus
Tomcat v8 unter CentOS7
Führen Sie PostgreSQL unter Java aus
Installieren Sie Docker auf Manjaro
Installation von Zabbix 5 unter CentOS 8
Installieren Sie Ruby unter Ubuntu 20.04
Verwenden Sie mod_auth_cas unter CentOS 8
Installieren Sie lombok auf SpringToolSuite4
OpenJDK-Installation unter CentOS7
Installieren Sie openjdk11 auf einem Mac
Installieren Sie OpenJDK 8 auf einem Mac
Installieren Sie das BookStack-Dokumentations-Wiki im Elastic Compute Service unter CentOS 7
Installieren Sie den neuesten Hardwaretreiber von EL Repo unter CentOS
Installieren Sie MySQL 5.6 unter CentOS6 [So geben Sie die Version an]
Installiere ag (den silbernen Sucher) [unter CentOS / Ubuntu / Mac]
Probieren Sie Rabbit MQ + PHP unter CentOS aus
Installieren Sie Docker auf Raspberry Pi
Installieren Sie Docker unter Windows 10 PRO
Netzwerkinstallation CentOS 8 mit Kickstart.
Installieren Sie OpenJDK7 (JAVA) unter Ubuntu 14.04