Telepítse és konfigurálja a PostgreSQL fájlt a CentOS-on

Ebben a cikkben telepítjük a DBMS-t PostgreSQL 11 Linuxon CentOS A 7. ábrán a kiszolgáló és a DBMS alapkonfigurációját hajtjuk végre, figyelembe vesszük a konfigurációs fájl fő paramétereit, valamint a teljesítmény hangolásának módjait. A PostgreSQL népszerű ingyenes, objektum-relációs adatbázis-kezelő rendszer. Bár nem olyan széles körben elterjedt, mint a MySQL / MariDB, ez a legprofesszionálisabb.

A PostgreSQL erősségei:

  • Az SQL szabványok teljes betartása;
  • Nagy teljesítmény többváltozós párhuzamosság menedzsment (MVCC) révén;
  • Méretezhetőség (széles körben használják nagy terhelésű környezetben);
  • Sok programozási nyelv támogatása;
  • Megbízható tranzakciós és replikációs mechanizmusok;
  • JSON-adatok támogatása.

Tartalom:

  • Telepítse a PostgreSQL fájlt a CentOS / RHEL-re
  • Csatlakozás a PostgreSQL-hez, adatbázis létrehozása, felhasználó
  • Alapvető PostgreSQL konfigurációs fájl beállítások
  • Az adatbázis biztonsági mentése és visszaállítása a PostgreSQL-ben
  • PostgreSQL optimalizálás és hangolás

Telepítse a PostgreSQL fájlt a CentOS / RHEL-re

Noha a PostgreSQL telepíthető a CentOS alapraktárból, a lerakatot a fejlesztőktől telepítjük, mivel mindig a csomag legújabb verziója van.

Az első lépés a PosgreSQL lerakat telepítése (jelenleg az alábbiak szerint telepítve van):

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Ez a lerakat mind a PostgreSQL, mind a régebbi verziók legújabb verzióit tartalmazza. A lerakat információ a következő:

Telepítse a legújabb elérhető verziót (PostrgeSQL 11) a yum használatával.

yum install postgresql11-server -y

A telepítés során maga a PostgreSQL szerver és a szükséges könyvtárak vannak telepítve:

Telepítés: libicu-50.2-3.el7.x86_64 1/4 Telepítés: postgresql11-libs-11.5-1PGDG.rhel7.x86_64 2/4 Telepítés: postgresql11-11.5-1PGDG.rhel7.x86_64 3/4 Telepítés: postgresql11-server- 11,5-1PGDG.rhel7.x86_64 4/4

A csomagok telepítése után meg kell inicializálni az adatbázist:

/ usr / pgsql-11 / bin / postgresql-11-setup initdb

Ezenkívül azonnal vegye fel az adatbázis-kiszolgálót az indításhoz és indítsa el:

A systemctl lehetővé teszi a postgresql-11 használatát

systemctl start postgresql-11

Annak ellenőrzése érdekében, hogy a szerver elindult-e és nincs-e probléma, ellenőrizze annak állapotát:

[root @ szerver ~] # systemctl állapot postgresql-11

● postgresql-11.szolgáltatás - PostgreSQL 11 adatbázis-kiszolgáló betöltve: betöltve (/usr/lib/systemd/system/postgresql-11.szolgáltatás; engedélyezve; eladó preset: letiltva) Aktív: aktív (fut) 2019-09-18 13:01:56 +06; 26 évvel ezelőtt: Dokumentumok: https://www.postgresql.org/docs/11/static/ Folyamat: 6614 ExecStartPre = / usr / pgsql-11 / bin / postgresql-11-check-db-dir $ PGDATA (code = kilépett, status = 0 / SIKER) Fő PID: 6619 (postmaster) CGroup: /system.slice/postgresql-11.service ├─6619 / usr / pgsql-11 / bin / postmaster -D / var / lib / pgsql / 11 / data / ├─6621 postgres: logger ├─6623 postgres: ellenőrzőpont ├─6624 postgres: háttéríró ├─6625 postgres: walwriter ├─6626 postgres: autovacuum launcher ├─6627 postgres: statisztikagyűjtő └─6628 postgres: logikai replikációs indító 18. szeptember 13:01:56 server.1.com systemd [1]: A PostgreSQL 11 adatbázis szerver indítása ... 18. szeptember 13:01:56 server.1.com postmaster [6619]: 2019-09-18 13: 01: 56.399 +06 [6619] LOG: meghallgatás ":: 1" IPv6 címen, 5432-es port, szeptember 18, 13:01:56 server.1.com postmaster [6619]: 2019-09-18 13: 01: 56.399 +06 [6619 ] LOG: meghallgatás "127.0.0.1" IPv4 címen, 5432-es port, szeptember 18, 13:01:56 server.1.com postmaster [6619]: 2019-09-18 13: 01: 56.401 +06 [6619] LOG: hallgatás az Unix aljzaton "/var/run/postgresql/.s.PGSQL.5432" 18. szeptember 13:01:56 server.1.com postmaster [6619]: 2019-09-18 13: 01: 56.409 +06 [6619] LOG: hallgatás Unix aljzaton "/tmp/.s.PGSQL.5432" 18. szeptember 13:01:56 server.1.com postmaster [6619]: 2019-09-18 13: 01: 56.427 +06 [ 6619] LOG: a napló kimenetének átirányítása a naplózási gyűjtő folyamatához 18. szeptember 13:01:56 server.1.com postmaster [6619]: 2019-09-18 13: 01: 56.427 +06 [6619] TIPP: Megjelenik a jövőbeli napló kimenet a "log" könyvtárban. 18. szeptember 13:01:56 server.1.com systemd [1]: Elindította a PostgreSQL 11 adatbázis szervert. 

Ha kívülről kell hozzáférnie a PostgreSQL-hez, akkor nyissa meg a TCP / 5432 portot a Centos 7 szabványos tűzfalában:

# tűzfal-cmd - cél-aktív-zónák

nyilvános interfészek: eth0

# tűzfal-cmd --zone = public --add-port = 5432 / tcp - állandó
# tűzfal-cmd - újratöltés

Vagy az iptables segítségével:

# iptables-A BEMENET -m állapot - állam ÚJ -m tcp -p tcp --dport 5432 -j ELFOGADÁS

#service iptables újraindul

Ha a SELinux engedélyezve van, tegye a következőket:

setsebool -P httpd_can_network_connect_db 1

Csatlakozás a PostgreSQL-hez, adatbázis létrehozása, felhasználó

Alapértelmezés szerint a PostgreSQL telepítésekor egy felhasználói postgres létezik a rendszeren.

Nem javaslom, hogy adatbázisokkal dolgozzon, jobb, ha a felhasználókat az egyes adatbázisokhoz külön hozza létre.

A postgres szerverhez való csatlakozáshoz be kell írnia a következő parancsot:

[root @ szerver /] # sudo -u postgres psql

psql (11.5) Írja be a "help" segítséget.

postgres = #

Megnyílt a PostgreSQL konzol. Mutassunk meg néhány egyszerű PostgreSQL vezérlő példát a psql konzolról.

mert a rendszer bármely felhasználója bejelentkezhet a postrgesql fájlba, először meg kell változtatnia a postgres felhasználó jelszavát.

ALTER ROLE postgres JELSZÓKAL 'super_str0ng_pa $$ word';

Azonnal hozzon létre egy új adatbázist, a felhasználót, és teljes jogokat adjon neki az adatbázishoz:

postgres = # AZ ADATBÁZIS LÉTREHOZÁSA mydbtest;

postgres = # CREATE USER mydbuser '123456789' jelszóval;

postgres = # MINDEN PRIVILÉGIÁT MEGADJA AZ ADATBÁZISON mydbtest-et a mydbuser-re;

Csatlakozás az adatbázishoz:

postgres = # \ c adatbázisnév

Listatáblák:

postgres = # \ dt

Az adatbázis-lekérdezések felsorolása:

postgres = # válassza * a pg_stat_activity közül, ahol datname = "dbname"

Minden adatbázis-kapcsolat visszaállítása:

postgres = # válasszon pg_terminate_backend (pid) -t az pg_stat_activity közül, ahol datname = 'dbname'

Az aktuális foglalkozással kapcsolatos információk a következőképpen szerezhetők be:

postgres = # \ conninfo

A psql konzol befejezéséhez futtassa:

postgres = # \ q

Mint már észrevetted, a szintaxis nem különbözik ugyanazon a MariaDB-től vagy a MySQL-től, ezért nem fogunk késni az azonos típusú parancsokon.

Vegye figyelembe, hogy a PostgreSQL adatbázisok kényelmesebb kezeléséhez a webes felületről javasolt a pgAdmin4 használata (Python és Javascript / jQuery nyelven írva). Ez analóg a szokásos PhpMyAdmin webfejlesztőkkel.

Alapvető PostgreSQL konfigurációs fájl beállítások

A Postgresql konfigurációs fájlok a / var / lib / pgsql / 11 / data könyvtárban találhatók:

  • postgresql.conf - Maga a postgresql konfigurációs fájl
  • pg_hba.conf - fájl hozzáférési beállításokkal. Ebben a fájlban különféle korlátozásokat állíthat be a felhasználók számára, beállíthatja az adatbázishoz való kapcsolódási irányelvet;
  • pg_ident.conf - ezt a fájlt használják az ügyfelek azonosításakor ident protokoll használatával.

Annak megakadályozása érdekében, hogy a helyi felhasználók jogosulatlanul bejelentkezzenek a postgres-be, adja meg a pg_hba.conf fájlban:

helyi összes összes md5 gazdagép mindegyik 127.0.0.1/32 md5

Vegye figyelembe a postgresql.conf konfigurációs fájl legfontosabb paramétereit:

  • listen_addresses - jelzi, hogy mely IP-címeket fogadja el a szerver az ügyfélkapcsolatokhoz. Alapértelmezés szerint a localhost van megadva, ami azt jelenti, hogy csak helyi kapcsolat lehetséges. Ehhez az összes IPv4 interfésznél adja meg a 0.0.0.0 értéket
  • max_connections - hasonlóan más DBMS-ekhez, ez az egyidejűleg csatlakoztatott adatok maximális száma az adatbázis-kiszolgálóval;
  • temp_buffers - az ideiglenes pufferek maximális mérete;
  • shared_buffers - Az adatbázis-kiszolgáló által használt megosztott memória mennyisége. Általában a kiszolgálóra telepített memória 25% -ára van állítva;
  • effective_cache_size - Egy paraméter, amely segít a postgres ütemezőn a lemez gyorsítótárazásához rendelkezésre álló memória mennyiségének meghatározásában. A paramétert általában a szerver teljes RAM-jának 50-75% -ára állítják be;
  • work_mem - a memória mennyisége, amelyet a belső DBMS rendezési műveletek használnak - ORDER BY, DISTINCT és merge;
  • maintenance_work_mem - a belső műveletekhez felhasznált memóriamennyiség - VAKUUM, CREATE INDEX és ALTER TABLE ADD FOREIGN KULCS;
  • fsync - Ha ez az opció engedélyezve van, a DBMS várja a fizikai adatok írását a merevlemezre. Ha az fsync engedélyezve van, akkor könnyebb az adatbázis visszaállítása rendszer- vagy hardverhiba után. Természetesen e paraméter beillesztése jelentősen csökkenti a DBMS teljesítményét, de növeli a tárolás megbízhatóságát. Amikor ezt a paramétert letiltja, érdemes letiltani a full_page_writes;
  • max_stack_depth - maximális veremméret (alapértelmezés szerint 2 MB);
  • max_fsm_pages - ezzel a paraméterrel kezelheti a kiszolgáló szabad lemezterületét. Például, az adatok törlése után a táblából a korábban elfoglalt hely nem kerül felszabadításra a lemezen, hanem a szabad helytérképen „free” címkével van megjelölve, majd a táblázat új bejegyzéseihez használják fel. Ha a szerver aktívan rögzíti / törli az adatokat táblázatokban, ennek a paraméternek a növelése pozitívan befolyásolja a teljesítményt;
  • wal_buffers - a megosztott memória (megosztott_ pufferek) mennyisége, amelyet a WAL-adatok tárolására használnak;
  • wal_writer_delay - a WAL lemezre írása közötti időtartam;
  • commit_delay - a tranzakciónak a WAL pufferbe írása és a lemezre öblítése közötti késés;
  • synchronous_commit - a paraméter meghatározza, hogy a tranzakció sikeres befejezésének eredménye elküldésre kerül, amikor a WAL-adatokat fizikailag lemezen írják.

Az adatbázis biztonsági mentése és visszaállítása a PostgreSQL-ben

A PostgreSQL adatbázis biztonsági másolatának készítésének számos módja van. Fontolja meg a legegyszerűbb lehetőséget..

Először ellenőrizze, hogy mely adatbázisok futnak a szerveren:

postgres = # \ lista

Jelenleg 4 adatbázisunk van, amelyek közül 3 rendszer (postgres és sablon).

Korábban létrehoztunk egy adatbázist, amelynek neve „mydbtest”, a példájával és a biztonsági másolat készítésével.

A biztonsági mentés egyik módja annak végrehajtása a pg_dump segédprogrammal:

sudo -u postgres pg_dump mydbtest> /root/dupm.sql - végrehajtjuk a postgres felhasználó kérését, megadjuk a kívánt adatbázist és annak a fájlnak az elérési útját, ahová az adatbázis dumpot menteni szeretnénk. A biztonsági mentési rendszer felvehet egy adatbázis-elmentést, vagy ha webkiszolgálót használ, elküldheti azt a felhőalapú tárolóhoz.

A megadott fájlt a kívánt adatbázisba visszaállíthatja a psql segédprogrammal:

sudo -u postgres psql mydbtest < /root/dupm.sql

Biztonsági másolatot is létrehozhat speciális dump formátumban, és a gzip használatával tömörítve:

sudo -u postgres pg_dump -Fc mydbtest> /root/dumptest.sql

Egy ilyen dump visszaállítható a pg_restore segédprogrammal:

sudo -u postgres pg_restore -d mydbtest /root/dumptest.sql

A fejlettebb beállítások a következő segédprogramok súgójában találhatók:

ember psql
ember pg_dump
ember pg_restore

PostgreSQL optimalizálás és hangolás

A MariaDB-ről szóló előző cikkben megmutattuk, hogyan lehet a my.cnf konfigurációs fájl paramétereit ideálisra csökkenteni tuner használatával. A PostgreSQL esetében van, bár helyesebb volt azt mondani, hogy létezik egy olyan segédprogram, mint a PgTun, de sajnos hosszú ideje nem frissítették. Ugyanakkor számos online szolgáltatás is lehetővé teszi a PostgreSQL optimális konfigurációjának konfigurálását. Tetszik a szolgáltatás pgtune.leopard.in.ua.

A felület nagyon egyszerű. Meg kell adnia a szerver paramétereit (profil, processzorok, memória, lemezek típusa), és kattintson a „Generate” gombra. Ennek eredményeként a postgresql.conf konfigurációs fájl egy változatát fogja felajánlani a fő DBMS paraméterek ajánlott értékeivel.

Például egy 2 GB RAM-mal és 2 CPU-val rendelkező VPS SSD szerver esetén a postgresql.conf következő beállításai ajánlottak több webhely indításához:

# DB verzió: 11 # OS típus: linux # DB típus: web # Teljes memória (RAM): 2 GB # CPU-szám: 2 # Csatlakozások száma: 20 # Adattárolás: ssd max_connections = 20 shared_buffers = 512 MB hatékony_cache_size = 1536MB maintenance_work_mem = 128 MB ellenőrzőpont = teljes_cél = 0,7 wal_bufferek = 16 MB alapértelmezett_statisztika_cél = 100 véletlen_oldal_költség = 1,1 effektív_io_konverzió = 200 munka_mem = 26214 kB min_wal_size = 1 GB max_wal_size = 2 GB max_worker_processes = 2 max_parallel_workers_2

És ez valójában nem az egyetlen forrás, az írás idején hasonló szolgáltatások álltak rendelkezésre:

  • Cybertec PostgreSQL konfigurátor
  • PostgreSQL konfigurációs eszköz

Ezeknek a szolgáltatásoknak a segítségével gyorsan konfigurálhatja a kezdeti DBMS-paramétereket a berendezésekhez és a feladatokhoz. A jövőben nem csak a szerver erőforrásokra kell támaszkodnia, hanem az egész adatbázist, annak méretét, a kapcsolatok számát is elemeznie kell, és ennek alapján végeznie kell a PostgreSQL paraméterek további finomítását..