Sobes.tech
Junior

PostgreSQL ilə işləmə təcrübəniz nədir?

sobes.tech Süni İntellekt

AI-dan cavab

PostgreSQL ilə bağlı təcrübəm aşağıdakılardan ibarətdir:

  • Məlumatların idarə olunması: Şemaların, cədvəllərin, indekslərin, görünüşlərin yaradılması və dəyişdirilməsi. Məlumatların ixracı və idxalı. JSONB daxil olmaqla müxtəlif məlumat tipləri ilə işləmək.
  • Performansın optimallaşdırılması: Sorğuların icra planlarının analizi (EXPLAIN ANALYZE). Yavaş sorğuların optimallaşdırılması, PostgreSQL server parametrlərinin tənzimlənməsi (postgresql.conf), autovacuum ilə işləmək (autovacuum).
  • Yüksək əlçatanlıq və nasazlığa davamlılıq: Replikasiya (Stream Replikasiya, Logik Replikasiya) qurulması, Patroni istifadə edərək avtomatik keçid (failover). Yedəkləmə və məlumatların bərpası (məsələn, pg_dump, pgbackrest ilə).
  • Monitorinq: Prometheus Exporter ilə PostgreSQL instansiyalarının vəziyyətinin monitorinqi, metriklərin analizi (CPU/yaddaş yüklənməsi, əlaqələrin sayı, kilidlər, replikasiya vəziyyəti).
  • Avtomatlaşdırma: Bash və ya Python skriptləri yazmaq, Ansible və ya Terraform istifadə edərək yerləşdirməni avtomatlaşdırmaq.
  • Kubernetes klasterində işləmək: Operatorlar vasitəsilə PostgreSQL yerləşdirmə (məsələn, Crunchy Data, Zalando), StatefulSets və PersistentVolumes idarə etmək.

pg_dump istifadə edərək ehtiyat nüsxə üçün nümunə skript:

#!/bin/bash

# Qoşulma parametrləri
DB_NAME="your_database"
DB_USER="your_user"
DB_HOST="localhost"
DB_PORT="5432"

# Ehtiyat nüsxə qovluğu
BACKUP_DIR="/mnt/backups/postgresql"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql.gz"

# Ehtiyat nüsxə qovluğunu yaradın, əgər mövcud deyilsə
mkdir -p "$BACKUP_DIR"

# Sıxılmış ehtiyat nüsxə alın
pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" | gzip > "$BACKUP_FILE"

if [ $? -eq 0 ]; then
  echo "Verilənlər bazasının '$DB_NAME' ehtiyat nüsxəsi uğurla yaradıldı: $BACKUP_FILE"
else
  echo "Verilənlər bazasının ehtiyat nüsxəsinin yaradılmasında xəta baş verdi"
  exit 1
fi

# Köhnə ehtiyat nüsxələri silinsin (məsələn, 7 gündən köhnə olanlar)
find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +7 -delete
echo "Köhnə ehtiyat nüsxələr uğurla silindi."

Kubernetes-də PostgreSQL Pod-ları haqqında məlumat əldə etmək üçün kubectl istifadə:

# Müəyyən bir namespace-də podların siyahısı
kubectl get pods -n your-namespace | grep postgres

# Müəyyən bir PostgreSQL pod-u haqqında ətraflı məlumat
kubectl describe pod your-postgres-pod-name -n your-namespace

# PostgreSQL pod-unun loglarını göstər
kubectl logs your-postgres-pod-name -n your-namespace

Verilənlər bazasının stabil işləməsinin vacibliyini başa düşürəm və bu məqsədə çatmaq üçün ən yaxşı təcrübələri tətbiq etməyə çalışıram.