Junior
Aké máte skúsenosti s PostgreSQL?
sobes.tech AI
Odpoveď od AI
Mám skúsenosti s PostgreSQL zahŕňajúce:
- Správa dát: Vytváranie a úprava schém, tabuliek, indexov, pohľadov. Export a import dát. Práca s rôznymi typmi dát, vrátane JSONB.
- Optimalizácia výkonu: Analýza plánov vykonávania dopytov (
EXPLAIN ANALYZE). Optimalizácia pomalých dopytov, nastavenie parametrov servera PostgreSQL (postgresql.conf), práca s autovacuumom (autovacuum). - Vysoká dostupnosť a odolnosť voči chybám: Nastavenie replikácie (Stream Replikácia, Logická Replikácia), použitie Patroni na automatické prepínanie (
failover). Zavedenie zálohovania a obnovy dát (napríklad pomocoupg_dump,pgbackrest). - Monitoring: Nastavenie sledovania stavu inštancií PostgreSQL pomocou Prometheus Exporter, analýza metrík (zaťaženie CPU/pamäti, počet pripojení, blokovania, stav replikácie).
- Automatizácia: Písanie skriptov v Bash alebo Python pre správu, automatizáciu nasadenia pomocou Ansible alebo Terraform.
- Práca v Kubernetes klastre: Nasadenie PostgreSQL s použitím operátorov (napríklad Crunchy Data, Zalando), správa StatefulSets, PersistentVolumes.
Príklad skriptu pre zálohovanie pomocou pg_dump:
#!/bin/bash
# Nastavenia pre pripojenie
DB_NAME="your_database"
DB_USER="your_user"
DB_HOST="localhost"
DB_PORT="5432"
# Adresár pre zálohy
BACKUP_DIR="/mnt/backups/postgresql"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql.gz"
# Vytvorenie adresára pre zálohy, ak neexistuje
mkdir -p "$BACKUP_DIR"
# Vykonanie zálohy s kompresiou
pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" | gzip > "$BACKUP_FILE"
if [ $? -eq 0 ]; then
echo "Záloha databázy '$DB_NAME' bola úspešne vytvorená: $BACKUP_FILE"
else
echo "Chyba pri vytváraní zálohy databázy '$DB_NAME'"
exit 1
fi
# Odstránenie starých záloh (napríklad starších ako 7 dní)
find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +7 -delete
echo "Staré zálohy boli úspešne odstránené."
Použitie kubectl na získanie informácií o PostgreSQL pod v Kubernetes:
# Získať zoznam podov v danom namespace
kubectl get pods -n your-namespace | grep postgres
# Získať podrobnosti o konkrétnom PostgreSQL pod
kubectl describe pod your-postgres-pod-name -n your-namespace
# Zobraziť logy PostgreSQL podu
kubectl logs your-postgres-pod-name -n your-namespace
Chápem dôležitosť stabilnej práce databázy pre aplikácie a snažím sa používať osvedčené postupy na dosiahnutie tohto cieľa.