= Бекап и реставрација ---- == Бекап * Навигирајте во фолдерот ‘bin’ каде што ви е инсталирана PostgreSQL преку CMD (Run as Administrator)\\ * Извршете ја следната команда: **pg_dump -U username -d dbname > dbname.sql**\\ * На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres\\ * На местото на “dbname” напишете го името на базата за која сакате да креирате бекап\\ * Опционално: може да специфицирате каде точно да се зачува dbname.sql датотеката, во случајот ќе се зачува во ‘bin’ фолдерот\\ * Во ‘bin’ фолдерот, ќе се креира SQL датотека во која што се наоѓаат сите команди кои треба да се извршат за да се рекреира вашата база до моментот кога е направен бекап-от\\ * За да креирате бекап и на корисниците, извршете ја следнава команда: **pg_dumpall -U username –database=dbname –roles-only –no-owner -f roles_backup.sql**\\ * На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres\\ * На местото на “dbname” напишете го името на базата за која сакате да креирате бекап на корисниците\\ * Командата **pg_dumpall**, може да служи и за да се креира целосен бекап на сите бази\\ * Командата има исто така и опции, преку кои може да специфицирате на што точно сакате да направите бекап\\ * На официјалната документација има повеќе информации за секоја опција која што може да ја искористите со оваа командa\\ (https://www.postgresql.org/docs/current/app-pg-dumpall.html) == Реставрација * За да направите реставрација на базата за која што креиравте бекап потребно е да ја избришете базата, па да ја рекреирате\\ * Логирајте се на SQL Shell (psql за PostgreSQL)\\ * Извршете ги следниве команди:\\ * **drop database dbname;**\\ * **create database dbname;**\\ * На местото на “dbname” напишете го името на базата за која креиравте бекап\\ * Навигирајте во фолдерот ‘bin’ каде што ви е инсталирана PostgreSQL преку CMD (Run as Administrator)\\ * Извршете ја следнава команда: **psql -U username -d dbname < dbname.sql**\\ * На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres\\ * На местото на “dbname” напишете го името на базата за која креиравте бекап\\ * Доколку SQL датотеката не се наоѓа во ‘bin’ фолдерот, тогаш ќе треба да ја напишете целосната патека каде што се наоѓа датотеката\\ * Откако ќе ја извршите претходната команда, ќе се направи реставрација на базата и ќе се додадат сите табели и записи кои постоеле до моментот кога е направен бекап-от. Сите додавања, промени и бришења кои се направени после бекап-от нема да бидат вратени\\ * За да извршите реставрација и на корисниците, извршете ја следнава команда: **psql -U username -d dbname -f roles_backup.sql**\\ * На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres\\ * На местото на “dbname” напишете го името на базата за која креиравте бекап на корисници\\ == PITR (Point-in-time-recovery) * Навигирајте во фолдерот на PostgreSQL (C:\Program Files\PostgreSQL\14)\\ * Креирајте фолдер ‘pgbasebackup’ и ‘wal_archive’\\ * Внатре во фолдерот ‘pgbasebackup’, креирајте два подфолдери ‘bck1’ и ‘data.before_recovery’\\ * Додадете пермисии за сите акции врз сите фолдери во PostgreSQL\\ * Во postgresql.conf датотеката, направете ги следните промени:\\ * **wal_level = replica**\\ * **full_page_writes = on**\\ * **archive_mode = on**\\ * **archive_command = ‘copy “%p” “C:\Program Files\PostgreSQL\14\wal_archive\%f”’**\\ * **archive_timeout = 300**\\ * Рестартирајте го PostgreSQL сервисот преку Services\\ * Навигирајте во ‘bin’ фолдерот преку командна линија во PostgreSQL фолдерот\\ * Извршете ја следната команда\\ * **pg_basebackup --host=localhost --port=5432 --username=postgres --pgdata="C:\Program Files\PostgreSQL\14\pgbasebackup\bck1"**\\ * Извршете некоја промена во одредена табела од базата\\ * Стопирајте го PostgreSQL сервисот преку Services\\ * Навигирајте во ‘bin’ фолдерот преку командна линија во PostgreSQL фолдерот\\ * Извршете ги следниве команди (првата команда креира бекап на моменталната база, а со втората команда ја бришеме целосно базата)\\ * **xcopy /O/X/E/H/K "C: !\\Program Files!\\PostgreSQL!\\14!\\data" "C: !\\Program Files!\\PostgreSQL!\\14!\\pgbasebackup!\\data.before_recovery"**\\ * **rmdir /S/Q "C: !\\Program Files!\\PostgreSQL!\\14!\\data"**\\ * Креирајте нов фолдер со име ‘data’ во PostgreSQL фолдерот (C:\Program Files\PostgreSQL\14)\\ * Извршете ги следниве команди (првата команда ги копира бекап фајловите назад во ‘data’ фолдерот, втората команда ги брише логовите)\\ * **xcopy /O/X/E/H/K "C: !\\Program Files!\\PostgreSQL!\\14!\\pgbasebackup!\\bck1" "C: !\\Program Files!\\PostgreSQL!\\14!\\data"**\\ * **del /S/F/Q "C:\Program Files\PostgreSQL!\\14!\\data!\\log"**\\ * Во postgresql.conf датотеката додадете ги следниве параметри\\ * **restore_command = 'copy "C: !\\Program Files!\\PostgreSQL!\\14!\\wal_archive!\\%f" "%p"'**\\ * **recovery_target_time = 'YYYY-MM-DD HH:MM:SS'**\\ * Во recovery_target_time наведете го времето до кое сакате да ја вратите базата\\ * Вклучете го PostgreSQL сервисот преку Services и бекапот ќе се направи автоматски до наведеното време\\ == Автоматизација * Доколку сакаме процесот да биде автоматизиран, може да креираме таскови во Windows оперативниот систем, при што ке му предадеме скрипта која ќе ги извршува командите за бекап * На таскот може да му се специфицира на колку време да се извршува