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..