Редовно одржување на базите на податоци, бекап и реставрација
Редовно одржување на базите на податоци (тестирање на сценарио бр.1 од претходна фаза со 10 000 конкурентни барања)
- Parameter Tuning
- Max connections – to handle more concurrent connections
- Shared buffers – allocate more memory for caching data
- Work mem – allow more memory for each session (helpful for sorting and other memoryintensive operations)
- Maintenance work mem – allocate more memory for tasks like index creation or vacuuming
- Checkpoint segments and checkpoint timeout – this can help improve write operations
- Commit delay – to allow multiple transactions to be batched together which can reduce the I/O load
- Max wal size – to allow more WAL space for heavy write workloads
- Max parallel workers – set the number of parallel workers
- Мax parallel workers per gather – set the number of parallel workers per query
- Effective cache size – helps the query planner estimate the amount of system memory available for caching data, it provides a hint to the query planner about the amount of cache that can be used for storing frequently accessed data
- Потребно е да се направи промена на вредностите на претходно наведените параметри за да се овозможи базата на податоци да ги обработи сите 10 000 барања паралелно
- При промена на вредностите треба да се внимава да не се надминат ресурсите кои ги нуди серверот каде се наоѓа базата на податоци
- Пр. Доколку имаме 8GB РАМ меморија, треба да се внимава сите параметри кои што се поврзани со меморијата да не надминуваат повеќе од 8GB
Бекап
- Навигирајте во фолдерот ‘bin’ каде што ви е инсталирана PostgreSQL преку CMD (Run as Administrator)
- Извршете ја следната команда: pg_dump -U username -d dbname > dbname.sql
- На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres
- На местото на “dbname” напишете го името на базата за која сакате да креирате бекап
- Опционално: може да специфицирате каде точно да се зачува dbname.sql датотеката, во случајот ќе се зачува во ‘bin’ фолдерот
- На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres
- Во ‘bin’ фолдерот, ќе се креира SQL датотека во која што се наоѓаат сите команди кои треба да се извршат за да се рекреира вашата база до моментот кога е направен бекап-от
- За да креирате бекап и на корисниците, извршете ја следнава команда: pg_dumpall -U username –database=dbname –roles-only –no-owner -f roles_backup.sql
- На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres
- На местото на “dbname” напишете го името на базата за која сакате да креирате бекап на корисниците
- На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres
- Командата pg_dumpall, може да служи и за да се креира целосен бекап на сите бази
- Командата има исто така и опции, преку кои може да специфицирате на што точно сакате да направите бекап
- На официјалната документација има повеќе информации за секоја опција која што може да ја искористите со оваа командa
(https://www.postgresql.org/docs/current/app-pg-dumpall.html)
- Командата има исто така и опции, преку кои може да специфицирате на што точно сакате да направите бекап
Реставрација
- За да направите реставрација на базата за која што креиравте бекап потребно е да ја избришете базата, па да ја рекреирате
- Логирајте се на SQL Shell (psql за PostgreSQL)
- Извршете ги следниве команди:
- drop database dbname;
- create database dbname;
- На местото на “dbname” напишете го името на базата за која креиравте бекап
- drop database dbname;
- Навигирајте во фолдерот ‘bin’ каде што ви е инсталирана PostgreSQL преку CMD (Run as Administrator)
- Извршете ја следнава команда: psql -U username -d dbname < dbname.sql
- На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres
- На местото на “dbname” напишете го името на базата за која креиравте бекап
- Доколку SQL датотеката не се наоѓа во ‘bin’ фолдерот, тогаш ќе треба да ја напишете целосната патека каде што се наоѓа датотеката
- На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres
- Откако ќе ја извршите претходната команда, ќе се направи реставрација на базата и ќе се додадат сите табели и записи кои постоеле до моментот кога е направен бекап-от. Сите додавања, промени и бришења кои се направени после бекап-от нема да бидат вратени
- За да извршите реставрација и на корисниците, извршете ја следнава команда: psql -U username -d dbname -f roles_backup.sql
- На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres
- На местото на “dbname” напишете го името на базата за која креиравте бекап на корисници
- На местото на “username” напишете го корисничкото име кое ги има сите привилегии, во случајот би било postgres
PITR (Point-in-time-recovery)
- Навигирајте во фолдерот на PostgreSQL (C:\Program Files\PostgreSQL\14)
- Креирајте фолдер ‘pgbasebackup’ и ‘wal_archive’
- Внатре во фолдерот ‘pgbasebackup’, креирајте два подфолдери ‘bck1’ и ‘data.before_recovery’
- Внатре во фолдерот ‘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
- wal_level = replica
- Рестартирајте го PostgreSQL сервисот преку Services
- Навигирајте во ‘bin’ фолдерот преку командна линија во PostgreSQL фолдерот
- Извршете ја следната команда
- pg_basebackup --host=localhost --port=5432 --username=postgres --pgdata="C:\Program Files\PostgreSQL\14\pgbasebackup\bck1"
- 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"
- xcopy /O/X/E/H/K "C: \\Program Files\\PostgreSQL\\14\\data" "C: \\Program Files\\PostgreSQL\\14\\pgbasebackup\\data.before_recovery"
- Креирајте нов фолдер со име ‘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"
- xcopy /O/X/E/H/K "C: \\Program Files\\PostgreSQL\\14\\pgbasebackup\\bck1" "C: \\Program Files\\PostgreSQL\\14\\data"
- Во 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 наведете го времето до кое сакате да ја вратите базата
- restore_command = 'copy "C: \\Program Files\\PostgreSQL\\14\\wal_archive\\%f" "%p"'
- Вклучете го PostgreSQL сервисот преку Services и бекапот ќе се направи автоматски до наведеното време
Автоматизација
- Доколку сакаме процесот да биде автоматизиран, може да креираме таскови во Windows оперативниот систем, при што ке му предадеме скрипта која ќе ги извршува командите за бекап
- На таскот може да му се специфицира на колку време да се извршува
Last modified
8 months ago
Last modified on 03/15/24 21:13:10
Attachments (2)
- Image1.JPG (47.9 KB ) - added by 8 months ago.
- Image2.JPG (59.3 KB ) - added by 8 months ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.