Sobes.tech
Junior

Jaké máte zkušenosti s PostgreSQL?

sobes.tech AI

Odpověď od AI

Mám zkušenosti s PostgreSQL zahrnující:

  • Správa dat: Vytváření a úprava schémat, tabulek, indexů, pohledů. Export a import dat. Práce s různými typy dat, včetně JSONB.
  • Optimalizace výkonu: Analýza plánů vykonávání dotazů (EXPLAIN ANALYZE). Optimalizace pomalých dotazů, konfigurace parametrů serveru PostgreSQL (postgresql.conf), práce s autovacuumem (autovacuum).
  • Vysoká dostupnost a odolnost vůči chybám: Nastavení replikace (Stream Replikace, Logická Replikace), použití Patroni pro automatické přepínání (failover). Zavedení zálohování a obnovy dat (například pomocí pg_dump, pgbackrest).
  • Monitoring: Nastavení sledování stavu instancí PostgreSQL pomocí Prometheus Exporter, analýza metrik (zatížení CPU/paměti, počet připojení, blokování, stav replikace).
  • Automatizace: Psání skriptů v Bash nebo Pythonu pro správu, automatizaci nasazení pomocí Ansible nebo Terraform.
  • Práce v Kubernetes clusteru: Nasazení PostgreSQL s použitím operátorů (například Crunchy Data, Zalando), správa StatefulSets, PersistentVolumes.

Příklad skriptu pro zálohování pomocí pg_dump:

#!/bin/bash

# Připojovací nastavení
DB_NAME="your_database"
DB_USER="your_user"
DB_HOST="localhost"
DB_PORT="5432"

# Adresář pro zálohy
BACKUP_DIR="/mnt/backups/postgresql"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql.gz"

# Vytvoření adresáře pro zálohy, pokud neexistuje
mkdir -p "$BACKUP_DIR"

# Vytvoření zálohy s kompresí
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áze '$DB_NAME' byla úspěšně vytvořena: $BACKUP_FILE"
else
  echo "Chyba při vytváření zálohy databáze '$DB_NAME'"
  exit 1
fi

# Odstranění starých záloh (například starších než 7 dní)
find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +7 -delete
echo "Staré zálohy byly úspěšně odstraněny."

Použití kubectl pro získání informací o PostgreSQL podu v Kubernetes:

# Získat seznam podů v daném namespace
kubectl get pods -n your-namespace | grep postgres

# Získat podrobnosti o konkrétním PostgreSQL podu
kubectl describe pod your-postgres-pod-name -n your-namespace

# Zobrazit logy PostgreSQL podu
kubectl logs your-postgres-pod-name -n your-namespace

Chápu důležitost stabilní práce databáze pro aplikace a snažím se používat osvědčené postupy k dosažení tohoto cíle.