🗄️

قواعد البيانات (Databases)

إدارة قواعد البيانات في الإنتاج — النسخ المتماثل، النسخ الاحتياطي، التحسين، والتوسع.

متوسط PostgreSQL Redis

📖 أنواع قواعد البيانات

📊

Relational (SQL)

جداول مترابطة بعلاقات. PostgreSQL, MySQL. مثالية للبيانات المهيكلة والمعاملات.

📄

NoSQL (Document)

مستندات مرنة. MongoDB. مناسبة للبيانات غير المهيكلة والتوسع الأفقي.

In-Memory (Cache)

بيانات في الذاكرة. Redis, Memcached. سرعة فائقة للجلسات والبيانات المؤقتة.

🐘 PostgreSQL — الأساسيات

Terminal — PostgreSQL Commands
# تثبيت apt install postgresql postgresql-contrib -y # الدخول لـ psql sudo -u postgres psql # إنشاء قاعدة بيانات ومستخدم CREATE DATABASE myapp; CREATE USER devops WITH PASSWORD 'secret'; GRANT ALL PRIVILEGES ON DATABASE myapp TO devops; # عرض القواعد \l # الاتصال بقاعدة \c myapp # عرض الجداول \dt

🔄 النسخ المتماثل (Replication)

Primary → Replica

النسخ المتماثل يسمح بنسخ البيانات من سيرفر رئيسي لآخر احتياطي. يضمن التوفر العالي ويوزع الحمل.

postgresql.conf — Primary
wal_level = replica max_wal_senders = 3 wal_keep_size = 128 hot_standby = on # pg_hba.conf — السماح للـ replica host replication replica 10.0.0.2/32 md5

💾 النسخ الاحتياطي والاستعادة

Terminal — Backup & Restore
# نسخ كامل pg_dump -U postgres mydb > backup.sql # نسخ مضغوط pg_dump -U postgres mydb | gzip > backup.sql.gz # نسخ مخصص (أسرع للاستعادة الجزئية) pg_dump -U postgres -Fc mydb > backup.dump # استعادة psql -U postgres mydb < backup.sql # استعادة من ملف مخصص pg_restore -U postgres -d mydb backup.dump # نسخ احتياطي تلقائي مع pgBackRest pgbackrest --stanza=main backup

Redis — التخزين المؤقت

Terminal — Redis Commands
# تثبيت apt install redis-server -y # الدخول redis-cli # أوامر أساسية SET user:1 "Ahmed" GET user:1 EXPIRE user:1 3600 # ينتهي بعد ساعة HSET user:1 name "Ahmed" age 25 HGETALL user:1 # فحص الاتصال PING PONG # معلومات السيرفر INFO server
redis.conf — إعدادات أساسية
# حماية بكلمة مرور requirepass mySecretPassword123 # عدم الاستماع على كل الواجهات bind 127.0.0.1 # سياسة الحذف عند امتلاء الذاكرة maxmemory-policy allkeys-lru

🐳 قواعد البيانات في Docker

docker-compose.yml
services: postgres: image: postgres:16-alpine environment: - POSTGRES_DB=myapp - POSTGRES_USER=devops - POSTGRES_PASSWORD=secret volumes: - pgdata:/var/lib/postgresql/data ports: - "5432:5432" redis: image: redis:7-alpine command: redis-server --requirepass secret volumes: - redisdata:/data ports: - "6379:6379" volumes: pgdata: redisdata:

أفضل الممارسات

🎯 1. استخدم Volumes لحفظ بيانات قاعدة البيانات
2. فعّل النسخ الاحتياطي التلقائي يومياً
3. استخدم كلمات مرور قوية ولا تعرضها في الكود
4. راقب الأداء بـ pg_stat_activity
5. استخدم Connection Pooling (PgBouncer)
6. فعّل الـ Indexes على الأعمدة المستخدمة في البحث
السابق: CI/CD التالي: Kubernetes