Vim kimi xarici alətlərdən istifadə etmədən yalnız daxili mexanizmlərdən istifadə edərək PostgreSQL üçün ehtiyat nüsxələrinin yaradılmasını necə qurardınız?
sobes.tech Süni İntellekt
AI-dan cavab
Əlbəttə, mən bu suala cavab verməyə hazıram.
PostgreSQL-in daxili mexanizmlərindən istifadə etməklə ehtiyat nüsxələr yaratmaq üçün aşağıdakı yanaşmaları tətbiq edərdim:
-
pg_dumpvəpg_dumpall:pg_dumptək bir verilənlər bazasının məntiqi ehtiyat nüsxəsini yaradır.pg_dumpallbütün verilənlər bazalarının, o cümlədən sistem obyektlərinin (rol və cədvəl sahələri) məntiqi ehtiyat nüsxəsini yaradır.- Onlar bərpa üçün SQL təlimatları və ya ikili arxivləşdirilmiş fayl yaradır.
- Üstünlüklər: İstifadə asanlığı, çıxış formatını seçməkdə çeviklik.
- Dezavantajlar: Böyük verilənlər bazaları üçün məntiqi nüsxədən bərpa çox vaxt ala bilər. Davamlı ehtiyat nüsxələr (PITR) üçün uyğun deyil.
pg_dumpistifadə nümunəsi:# 'mydatabase' verilənlər bazasının mətn formatında məntiqi ehtiyat nüsxəsini yaradın: pg_dump mydatabase > mydatabase_backup.sql # 'mydatabase' verilənlər bazasının xüsusi formatda ehtiyat nüsxəsini yaradın: pg_dump -Fc mydatabase > mydatabase_backup.dump # Bütün verilənlər bazalarının ehtiyat nüsxəsini yaradın: pg_dumpall > all_databases_backup.sql -
Davamlı arxivləşdirmə və Point-in-Time Recovery (PITR):
wal_level,archive_modevəarchive_commandparametrlərinipostgresql.conffaylında aktivləşdirir.- Davamlı WAL fayllarının axını üçün imkan yaradır.
- PITR üçün əsas nüsxə (məsələn,
pg_basebackupilə yaradılmış) və ardıcıl WAL faylları tələb olunur. - Üstünlüklər: Hər hansı bir zaman nöqtəsinə bərpa etmək imkanı, arxivləşdirmə zamanı performansa minimal təsir.
- Dezavantajlar: Daha çox konfiqurasiya və WAL fayllarının saxlanması üçün idarəetmə tələb edir.
postgresql.conf-də konfiqurasiya nümunəsi:# WAL arxivləşdirmə üçün konfiqurasiya wal_level = replica # və ya daha yüksək, arxivləşdirmə üçün tələb olunur archive_mode = on # WAL arxivləşmə rejimini aktivləşdirir archive_command = 'cp %p /path/to/wal_archive/%f' # WAL fayllarını kopyalama əmri. '/path/to/wal_archive/' yerinə yol daxil edin.pg_basebackupistifadə nümunəsi:# `/path/to/base_backup` kataloqunda əsas nüsxə yaradın pg_basebackup -D /path/to/base_backup -F t -x -v -
Fiziki nüsxələr (File-level backup):
- PostgreSQL-in məlumat fayllarını (PGDATA qovluğu) birbaşa kopyalama.
- PostgreSQL-in dayandırılmasını və ya fayl sisteminin anlıq görüntülərindən istifadəni tələb edir.
- İşləyən verilənlər bazası üçün ehtiyat nüsxə yaratmaq üçün uyğun deyil, əlavə alətlər tələb oluna bilər (məsələn, LVM snapshotları).
- Üstünlüklər: Dayandırma zamanı kiçik verilənlər bazaları üçün sadə tətbiq.
- Dezavantajlar: Serverin dayandırılması, işləyən serverdə məlumatların zədələnməsi riskinin yüksək olması.
Etibarlı və effektiv ehtiyat nüsxə strategiyası üçün, xüsusən də "savaş vəziyyətində" sistemlər üçün, pg_basebackup və davamlı WAL arxivləşdirmənin birləşməsini tövsiyə edərdim. Bu, minimal məlumat itkisi ilə bərpa etməyə və bərpa nöqtəsini seçməyə imkan verir. Məntiqi nüsxələr (pg_dump, pg_dumpall) isə fərdi verilənlər bazalarının ehtiyat nüsxəsini çıxarmaq və məlumat köçürmələri üçün istifadə oluna bilər, lakin genişmiqyaslı Fəlakət Bərpası (DR) üçün daha az effektivdir.
Ehtiyat nüsxə yaratma proseslərinin avtomatlaşdırılması üçün planlaşdırıcı, məsələn, cron, tələb oluna bilər, lakin nüsxə yaratma prosesi PostgreSQL-in daxili komandaları ilə həyata keçiriləcək.