Ce veți învăța
- Instalați și configurați PostgreSQL 16 pe Ubuntu 22.04 sau Debian 12 pornind de la depozitul oficial PGDG
- Configurați roluri, autentificare scram-sha-256 și reguli pg_hba.conf pentru acces securizat
- Alegeți și creați indexuri B-tree, GIN sau GiST în funcție de tipul de interogare
- Citiți un plan EXPLAIN ANALYZE și identificați operațiile costisitoare dintr-o interogare
- Ajustați shared_buffers, work_mem și autovacuum pentru un cluster cu trafic real
- Configurați replicare streaming și replicare logică între mai multe noduri PostgreSQL
- Realizați backup cu pg_dump și pg_basebackup și restaurați o bază la un moment exact folosind WAL
- Construiți un cluster de înaltă disponibilitate cu Patroni și pgBouncer, cu failover automat testat
Despre curs
Cursul „Curs PostgreSQL: administrare, replicare și performanță” tratează administrarea PostgreSQL 16 la nivelul cerut într-un mediu de producție, de la instalarea din depozitul oficial PGDG până la tuning de memorie, indexare avansată, replicare și backup cu recuperare la un moment exact (PITR). Nu reluăm sintaxa SQL de bază sau conceptele relaționale, acestea se predau în cursul introductiv de baze de date de pe onseo.ro.
Primele capitole acoperă rolurile, autentificarea prin scram-sha-256 și restricțiile din fișierul pg_hba.conf, împreună cu politicile Row Level Security pentru izolarea datelor pe tenant. Continuați cu organizarea bazei de date pe scheme, tipurile native JSONB, ARRAY și UUID și partiționarea tabelelor mari cu PARTITION BY RANGE, o tehnică folosită pentru tabele cu zeci de milioane de rânduri.
Parcurgeți configurarea parametrilor shared_buffers, work_mem și effective_cache_size, citirea planurilor generate de EXPLAIN ANALYZE și alegerea corectă între indexuri B-tree, GIN și GiST în funcție de tipul de interogare. Un capitol separat acoperă autovacuum, pragurile autovacuum_vacuum_scale_factor și prevenirea blocajului de tip transaction ID wraparound, o problemă care poate opri complet un cluster PostgreSQL în producție.
Două capitole tratează replicarea. Configurați replicare streaming între un nod primar și mai multe noduri standby, cu monitorizarea decalajului prin pg_stat_replication, apoi replicare logică cu CREATE PUBLICATION și CREATE SUBSCRIPTION, folosită frecvent pentru migrări între versiuni majore fără oprirea aplicației.
Pentru backup, cursul acoperă pg_dump și pg_basebackup, precum și un scenariu complet de recuperare la un moment exact pe baza fișierelor WAL arhivate. Un capitol întreg este dedicat înaltei disponibilități, cu Patroni și un depozit de configurare de tip etcd pentru failover automat, testat cu comanda patronictl switchover, și cu pgBouncer pentru limitarea numărului de conexiuni deschise prin modurile de pooling session, transaction și statement. Monitorizarea folosește pg_stat_statements pentru interogările lente și postgres_exporter pentru un dashboard Grafana cu latență și decalaj de replicare.
Laboratorul final cere construirea unui cluster cu un nod primar și două noduri standby în Docker Compose, cu Patroni și pgBouncer deasupra, urmată de simularea unei căderi și verificarea failover-ului automat. Cursul se adresează administratorilor de sistem și inginerilor backend care operează deja PostgreSQL în producție și au nevoie de replicare, tuning de performanță sau o strategie de backup testată periodic.
Pentru cine este cursul
Administratori de sistem, ingineri backend și DevOps care administrează deja baze de date PostgreSQL în producție și au nevoie de replicare, tuning de performanță și o strategie de backup testată.
Pentru cine nu este
Persoane care nu au scris niciodată o interogare SQL sau nu au folosit un client de bază de date. Bazele SQL se predau separat, în cursul introductiv de pe onseo.ro.
Ce trebuie să știți înainte
Cunoștințe SQL de bază (SELECT, JOIN, INSERT, UPDATE), confort cu linia de comandă Linux și acces la o mașină virtuală sau un container pentru laboratoare.
Ce veți putea face după curs
- Veți administra independent un server PostgreSQL 16 în producție
- Veți configura un cluster replicat cu failover automat prin Patroni
- Veți diagnostica interogări lente cu EXPLAIN ANALYZE și pg_stat_statements
- Veți construi o strategie de backup cu recuperare la un moment exact (PITR)
- Veți reduce numărul de conexiuni deschise cu un strat de pooling pgBouncer
- Veți preveni incidentele frecvente cauzate de autovacuum dezactivat sau de un pg_hba.conf greșit
Cuprins
1. Instalare și configurare PostgreSQL 16
- Instalarea PostgreSQL 16 din depozitul oficial PGDG pe Ubuntu 22.04 și Debian 12 gratuit
- Structura directorului de date și fișierele postgresql.conf, pg_hba.conf și pg_ident.conf3 min
- Configurarea listen_addresses și a porturilor pentru acces de rețea3 min
- Inițializarea unui cluster nou cu initdb și alegerea encoding-ului3 min
- Pornirea, oprirea și repornirea serviciului cu systemctl și pg_ctl3 min
- Actualizarea majoră de la PostgreSQL 15 la PostgreSQL 16 cu pg_upgrade3 min
- Verificarea versiunii, a extensiilor active și a parametrilor cu pg_settings3 min
2. Roluri, autentificare și securitate
- Crearea rolurilor cu CREATE ROLE și atributele LOGIN, SUPERUSER și REPLICATION3 min
- Moștenirea privilegiilor între roluri cu GRANT și apartenență la grup3 min
- Configurarea metodelor de autentificare scram-sha-256, md5 și cert în pg_hba.conf3 min
- Restricționarea accesului pe adresă IP și pe bază de date3 min
- Criptarea conexiunilor cu SSL/TLS și certificate proprii3 min
- Politici Row Level Security pentru izolarea datelor pe tenant3 min
- Auditul conexiunilor și interogărilor cu extensia pgaudit3 min
3. Scheme, tipuri de date și structuri avansate
- Organizarea bazei de date pe scheme multiple și parametrul search_path3 min
- Tipuri de date native JSONB, ARRAY, UUID, ENUM și interval3 min
- Constrângeri CHECK, EXCLUDE și chei străine cu ON DELETE CASCADE3 min
- Partiționarea tabelelor cu PARTITION BY RANGE și LIST3 min
- Moștenirea de tabele și diferența față de partiționarea declarativă3 min
- Vizualizări materializate și reîmprospătarea lor cu REFRESH MATERIALIZED VIEW CONCURRENTLY3 min
- Extensii utile pg_trgm, uuid-ossp și pgcrypto3 min
4. Indexare avansată cu B-tree, GIN și GiST
- Indexuri B-tree implicite și situațiile în care le alege planificatorul3 min
- Indexuri GIN pentru coloane JSONB și căutare full text3 min
- Indexuri GiST pentru date geometrice și tipuri de interval3 min
- Indexuri parțiale și indexuri pe expresii3 min
- Crearea de indexuri fără blocarea tabelei cu CREATE INDEX CONCURRENTLY3 min
- Măsurarea dimensiunii și a folosirii indexurilor cu pg_stat_user_indexes3 min
- Identificarea indexurilor redundante sau nefolosite3 min
5. Planuri de execuție și comanda EXPLAIN
- Citirea unui plan cu EXPLAIN și EXPLAIN ANALYZE3 min
- Diferența dintre costul estimat și timpul real de execuție3 min
- Interpretarea operațiilor Seq Scan, Index Scan și Bitmap Heap Scan3 min
- Statisticile planificatorului și rularea comenzii ANALYZE3 min
- Ajustarea default_statistics_target pentru coloane specifice3 min
- Depistarea join-urilor ineficiente cu Nested Loop și Hash Join3 min
- Vizualizarea planurilor cu explain.depesz.com sau pgAdmin3 min
6. Tuning de memorie și configurare de bază
- Calculul shared_buffers în funcție de RAM-ul disponibil3 min
- Configurarea work_mem și maintenance_work_mem pentru interogări complexe3 min
- Parametrul effective_cache_size și influența asupra planificatorului3 min
- Controlul punctelor de control cu checkpoint_timeout și max_wal_size3 min
- Configurarea random_page_cost pentru discuri SSD3 min
- Limitarea conexiunilor concurente cu max_connections3 min
- Testarea impactului modificărilor cu unealta pgbench3 min
7. Autovacuum și întreținerea bazei de date
- Funcționarea autovacuum și pragurile autovacuum_vacuum_scale_factor3 min
- Depistarea tabelelor cu bloat cu extensia pgstattuple3 min
- VACUUM FULL comparat cu VACUUM obișnuit și impactul asupra blocajelor3 min
- Prevenirea transaction ID wraparound prin monitorizarea age(datfrozenxid)3 min
- REINDEX și reindexarea concurentă fără oprirea aplicației3 min
- Programarea automată a întreținerii cu extensia pg_cron3 min
8. Replicare streaming între noduri
- Configurarea unui server primar cu parametrul wal_level pe replica3 min
- Crearea unui slot de replicare cu pg_create_physical_replication_slot3 min
- Configurarea unui standby cu pg_basebackup și fișierul standby.signal3 min
- Monitorizarea decalajului de replicare cu pg_stat_replication3 min
- Promovarea unui standby la primar cu pg_ctl promote3 min
- Replicare sincronă cu synchronous_commit și synchronous_standby_names3 min
- Cascading replication cu standby-uri legate în lanț3 min
9. Replicare logică pentru migrări fără downtime
- Diferența dintre replicarea fizică și replicarea logică3 min
- Configurarea unei publicații cu CREATE PUBLICATION3 min
- Configurarea unui abonament cu CREATE SUBSCRIPTION3 min
- Replicare selectivă pe tabele și filtrare pe coloane3 min
- Migrarea între versiuni majore de PostgreSQL folosind replicare logică3 min
- Rezolvarea conflictelor de date la replicare bidirecțională3 min
10. Backup logic cu pg_dump și pg_basebackup
- Backup logic cu pg_dump în format custom și în format plain SQL3 min
- Backup complet al clusterului cu pg_dumpall pentru roluri și tablespace-uri3 min
- Backup fizic la nivel de cluster cu pg_basebackup3 min
- Compresie și paralelizare cu opțiunea --jobs la pg_dump3 min
- Restaurare selectivă cu pg_restore și opțiunea --table3 min
- Verificarea integrității unui backup înainte de a-l considera valid3 min
- Automatizarea backup-urilor cu cron și rotația arhivelor3 min
11. Point-in-time recovery cu WAL
- Arhivarea fișierelor WAL cu parametrul archive_command3 min
- Configurarea archive_mode și a directorului de arhivă3 min
- Restaurarea unui backup de bază și aplicarea WAL-urilor arhivate3 min
- Recuperarea la un moment exact cu recovery_target_time3 min
- Recuperarea până la un anumit LSN sau la un nume de recovery point3 min
- Testarea unui scenariu complet de dezastru pe un server separat3 min
12. Înaltă disponibilitate cu Patroni
- Arhitectura Patroni și rolul depozitului de configurare etcd sau Consul3 min
- Instalarea Patroni și configurarea fișierului patroni.yml3 min
- Failover automat la căderea nodului primar3 min
- Verificarea stării clusterului cu comanda patronictl3 min
- Configurarea unui load balancer HAProxy în fața clusterului Patroni2 min
- Testarea unui failover controlat cu patronictl switchover3 min
13. Connection pooling cu pgBouncer
- Instalarea pgBouncer și configurarea fișierului pgbouncer.ini3 min
- Modurile de pooling session, transaction și statement3 min
- Configurarea autentificării prin userlist.txt sau auth_query3 min
- Limitarea conexiunilor cu max_client_conn și default_pool_size3 min
- Monitorizarea pool-urilor cu comanda SHOW POOLS3 min
- Integrarea pgBouncer cu un cluster Patroni3 min
14. Monitorizare cu pg_stat și unelte externe
- Interogarea vederilor pg_stat_activity și pg_stat_database3 min
- Identificarea interogărilor lente cu extensia pg_stat_statements3 min
- Depistarea blocajelor cu pg_locks și funcția pg_blocking_pids3 min
- Exportul metricilor către Prometheus cu postgres_exporter3 min
- Construirea unui dashboard Grafana pentru latență și throughput3 min
- Configurarea alertelor pentru spațiu pe disc și decalaj de replicare3 min
15. Depanare și greșeli frecvente
- Diagnosticarea erorii too many connections și soluțiile pentru ea3 min
- Corectarea unui cluster blocat de transaction ID wraparound3 min
- Rezolvarea unui standby rămas în urmă din cauza unui hot_standby_feedback configurat greșit3 min
- Riscul de a rula VACUUM FULL pe o tabelă mare în orele de vârf3 min
- Recuperarea după un fișier pg_hba.conf configurat greșit care blochează accesul3 min
- Citirea jurnalului PostgreSQL pentru identificarea rapidă a cauzei unei căderi3 min
16. Laborator final cu un cluster PostgreSQL replicat
- Construirea unui cluster cu un nod primar și două noduri standby în Docker Compose3 min
- Configurarea Patroni și pgBouncer deasupra clusterului3 min
- Simularea căderii nodului primar și verificarea failover-ului automat3 min
- Realizarea unui backup PITR complet și restaurarea lui pe un cluster nou3 min
- Testarea unei migrări fără downtime cu replicare logică3 min
- Predarea proiectului cu un raport despre arhitectură, testele de failover și concluzii3 min
Dorel Tănase, fondatorul agenției GOAI din Alba Iulia. În mediul online din 1997, în optimizare SEO din 2007. Cursul pornește de la situații întâlnite în lucrul cu clienți din România și este actualizat pe măsură ce uneltele se schimbă. Experiența autorului.
24 august 2026
Întrebări frecvente despre curs
Am nevoie de un server dedicat pentru laboratoare?
Nu. Laboratoarele folosesc mașini virtuale sau containere Docker Compose pe care le puteți rula local sau pe orice VPS cu Ubuntu 22.04 ori Debian 12. Configurarea completă a fiecărui laborator este inclusă în lecții.
Cursul ține loc de o certificare oficială PostgreSQL?
Nu. La finalul cursului susțineți un test grilă cu prag de promovare de 70% și primiți un certificat cu cod public de verificare, dar acesta nu este o diplomă a Ministerului Educației și nu înlocuiește o certificare ANC sau o certificare oficială PostgreSQL.
Cum plătesc și cât costă accesul?
Plata este unică, în euro, prin card cu Stripe sau prin transfer bancar. După achiziție aveți acces permanent în cont, cu progresul salvat automat la fiecare lecție parcursă.
Pot testa cursul înainte să plătesc?
Da. Prima lecție este gratuită și accesibilă direct din pagina cursului, fără cont sau card înregistrat.
Cursuri din aceeași categorie