wiki:phase3

Version 22 (modified by 201166, 9 months ago) ( diff )

--

Редовно одржување на базите на податоци, бекап и реставрација


Бекап

  • Навигирајте во фолдерот ‘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 оперативниот систем, при што ке му предадеме скрипта која ќе ги извршува командите за бекап
  • На таскот може да му се специфицира на колку време да се извршува

Attachments (2)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.