Ինչպե՞ս կկազմեք PostgreSQL-ի պահուստների ստեղծումը միայն ներքին մեխանիզմներով, առանց արտաքին գործիքների, ինչպիսիք են vim-ը։
sobes.tech AI
Պատասխան AI-ից
Անհատապես, ես պատրաստ եմ պատասխանել այս հարցին:
PostgreSQL-ի միայն ներքին մեխանիզմների օգտագործմամբ պահուստային պատճեններ ստեղծելու համար, ես կկիրառեի հետևյալ մոտեցումները:
-
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 -
Անընդհատ արխիվացում և Point-in-Time Recovery (PITR):
- Արժեքներ
wal_level,archive_modeևarchive_command-ըpostgresql.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 - Արժեքներ
-
Ֆիզիկական պատճեններ (File-level backup):
- PostgreSQL տվյալների ֆայլերի ուղղակի պատճենը (
PGDATA-ի ֆայլերը): - Պահանջում է PostgreSQL- ի կանգնեցում կամ ֆայլային համակարգի պահպանումը:
- Չի համապատասխանում աշխատող տվյալների բազայի պատճենների ստեղծմանը առանց լրացուցիչ գործիքների:
- Առավելություններ՝ պարզություն փոքր տվյալների բազաների համար:
- Թերություններ՝ անհրաժեշտ է սերվերի կանգնեցում, բարձր ռիսկ տվյալների վնասման:
- PostgreSQL տվյալների ֆայլերի ուղղակի պատճենը (
Հավաստի և արդյունավետ պահուստային ռազմավարության համար, հատկապես բոևի համակարգերի համար, ես խորհուրդ կտայի pg_basebackup-ի և անընդհատ WAL arhiv- ի համակցումը, որպեսզի ապահովվի PITR: Դա թույլ կտա վերականգնել տվյալները նվազագույն տվյալների կորուստով և ճկուն ընտրել վերականգնման կետը: Լոգիկ պատճենները (pg_dump, pg_dumpall) կարող են օգտագործվել առանձին տվյալների բազաների պահուստային պատճեններ ստեղծելու կամ տվյալների փոխանցման համար, բայց դրանք քիչ արդյունավետ են լայնածավալ աղետային վերականգնման (DR) համար:
Ավտոմատացման համար, օրինակ, cron- ի միջոցով, pg_dump և pg_basebackup գործընթացները կարող են ավտոմատացվել, բայց ինքնըստինքյան, պահուստային պատճենը կկատարվի PostgreSQL-ի ներքին հրամանների միջոցով։