Sobes.tech
Middle

Ինչպե՞ս կկազմեք PostgreSQL-ի պահուստների ստեղծումը միայն ներքին մեխանիզմներով, առանց արտաքին գործիքների, ինչպիսիք են vim-ը։

sobes.tech AI

Պատասխան AI-ից

Անհատապես, ես պատրաստ եմ պատասխանել այս հարցին:

PostgreSQL-ի միայն ներքին մեխանիզմների օգտագործմամբ պահուստային պատճեններ ստեղծելու համար, ես կկիրառեի հետևյալ մոտեցումները:

  1. pg_dump և pg_dumpall:

    • pg_dump ստեղծում է մեկ տվյալների բազայի տրամաբանական պատճեն:
    • pg_dumpall ստեղծում է բոլոր տվյալների բազաների տրամաբանական պատճեն, ներառյալ համակարգային օբյեկտները (ռոլեր, աղյուսակային տարածքներ):
    • Նրանք ստեղծում են SQL հրահանգներով տեքստային ֆայլ կամ բինարային արխիվ:
    • Առավելություններ՝ հեշտ օգտագործում, ճկունություն ելքային ձևաչափի ընտրության մեջ:
    • Թերություններ՝ մեծ տվյալների բազաների վերականգնումը կարող է տևել շատ ժամանակ, չեն համապատասխանում շարունակական պահուստային պատճենների (PITR) համար:

    Օրինակ pg_dump-ի օգտագործման:

    # 'mydatabase' տվյալների բազայի տրամաբանական պատճենը plain text ձևաչափով.
    pg_dump mydatabase > mydatabase_backup.sql
    
    # 'mydatabase' տվյալների բազայի տրամաբանական պատճենը custom ձևաչափով:
    pg_dump -Fc mydatabase > mydatabase_backup.dump
    
    # Բոլոր տվյալների բազաների պատճենը:
    pg_dumpall > all_databases_backup.sql
    
  2. Անընդհատ արխիվացում և Point-in-Time Recovery (PITR):

    • Արժեքներ wal_level, archive_mode և archive_commandpostgresql.conf ֆայլում:
    • Հնարավորություն է ստեղծել անընդհատ հոսք արխիվացված WAL ֆայլերի:
    • PITR- ի համար անհրաժեշտ է հիմնական պատճեն (օրինակ, pg_basebackup-ով ստեղծված) և WAL ֆայլերի հաջորդականություն:
    • Առավելություններ՝ ցանկացած ժամանակ վերականգնում, նվազագույն ազդեցություն արտադրողականության վրա:
    • Թերություններ՝ ավելի մեծ կարգավորում և կառավարման պահանջներ WAL ֆայլերի համար:

    Կարգավորումը postgresql.conf-ում:

    # WAL-արխիվացման կարգավորում
    wal_level = replica      # կամ բարձր, անհրաժեշտ է արխիվացման համար
    archive_mode = on        # Արխիվացման ռեժիմի միացում
    archive_command = 'cp %p /path/to/wal_archive/%f'  # Կոմանդա WAL ֆայլերի պատճենահանման համար:
    

    Օրինակ pg_basebackup-ով հիմնական պատճեն ստեղծելու:

    # Ստեղծել հիմնական պատճեն `/path/to/base_backup`-ում
    pg_basebackup -D /path/to/base_backup -F t -x -v
    
  3. Ֆիզիկական պատճեններ (File-level backup):

    • PostgreSQL տվյալների ֆայլերի ուղղակի պատճենը (PGDATA-ի ֆայլերը):
    • Պահանջում է PostgreSQL- ի կանգնեցում կամ ֆայլային համակարգի պահպանումը:
    • Չի համապատասխանում աշխատող տվյալների բազայի պատճենների ստեղծմանը առանց լրացուցիչ գործիքների:
    • Առավելություններ՝ պարզություն փոքր տվյալների բազաների համար:
    • Թերություններ՝ անհրաժեշտ է սերվերի կանգնեցում, բարձր ռիսկ տվյալների վնասման:

Հավաստի և արդյունավետ պահուստային ռազմավարության համար, հատկապես բոևի համակարգերի համար, ես խորհուրդ կտայի pg_basebackup-ի և անընդհատ WAL arhiv- ի համակցումը, որպեսզի ապահովվի PITR: Դա թույլ կտա վերականգնել տվյալները նվազագույն տվյալների կորուստով և ճկուն ընտրել վերականգնման կետը: Լոգիկ պատճենները (pg_dump, pg_dumpall) կարող են օգտագործվել առանձին տվյալների բազաների պահուստային պատճեններ ստեղծելու կամ տվյալների փոխանցման համար, բայց դրանք քիչ արդյունավետ են լայնածավալ աղետային վերականգնման (DR) համար:

Ավտոմատացման համար, օրինակ, cron- ի միջոցով, pg_dump և pg_basebackup գործընթացները կարող են ավտոմատացվել, բայց ինքնըստինքյան, պահուստային պատճենը կկատարվի PostgreSQL-ի ներքին հրամանների միջոցով։