# Záloha databázy

Zálohovanie databázy systému PORTOS je možné vykonať viacerými spôsomi:

* [Nastaviť pravidelné zálohovanie](#pravidelna-zaloha-databazy)
* [Vykonať zálohu manuálne](#manualna-zaloha-databazy)
* [Zálohovanie externou utilitou](#zalohovanie-externou-utilitou)

## Pravidelná záloha databázy

Pre nastavenie tvorby pravidelnej zálohy databázy postupujte nasledovne:

* Otvorte aplikáciu [Portos BackOffice](https://docs.portos.sk/backoffice) a prihláste sa.
* V menu (na ľavej strane obrazovky) zvoľte v skupine "**Systém**" položku "**Rozšírenia**".
* V zozname rozšírení nájdite položku "**Zálohovanie databázy**" a stlačte "**Spravovať**".
* Otvorí sa obrazovka s nastaveniami zálohovania (na snímke nižšie).
* Upravte nastavenia podľa preferencií a stlačte tlačidlo **Uložiť**.

<figure><img src="https://2205714691-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LTX4pJkSJoZaDqMmcPy%2Fuploads%2FFFG7Stid11DSGAp64VaY%2Fbo-v4-extensions-db-backup.png?alt=media&#x26;token=0f215d70-59db-4718-98ab-559eb0c356c5" alt=""><figcaption><p>Nastavenie zálohovania databázy v aplikácii PORTOS BackOffice</p></figcaption></figure>

### Možnosti nastavenia

* **Aktívne**: určuje, či bude pravidelné zálohovanie vykonávané.
* **Posledná záloha**: dátum a čas poslednej úspešnej zálohy databázy.
* **Časový rozvrh**: v tejto sekcii je možné upraviť prostredníctvom viacerých vstupov rozvrh, podľa ktorého sa bude spúštať záloha databázy.
  * **Hodina**:  Určuje, v ktorých hodinách dňa bude akcia vykonaná. Prázdna hodnota znamená každú hodinu.
  * **Minúta**: Určuje, v ktorých minútach hodiny bude akcia vykonaná. Prázdna hodnota znamená každú minútu.
  * **Deň v mesiaci**: Určuje, v ktorých dňoch mesiaca môže byť akcia vykonaná. Prázdna hodnota povoľuje všetky dni.
  * **Mesiac**: Určuje, v ktorých mesiacoch môže byť akcia vykonaná. Prázdna hodnota povoľuje všetky mesiace.
  * **Deň v týždni**: Určuje, v ktorých dňoch týždna bude akcia vykonaná. Prázdna hodnota znamená všetky dni v týždni.
* **Uchovávanie záloh**: v tejto sekcii je možné upresniť, koľko záloh má byť v cieľovom umiestnení uchovávaných.
  * **Počet uchovávaných záloh:** Určuje, aký maximálny počet záloh bude uchovávaný. Staršie zálohy prevyšujúce zadný počet budú automaticky odstránené. Príklad: pri čísle 10 bude vždy po vytvorení novej zálohy ponechaných 10 najnovších záloh, ostatné budú vymazané.
  * **Maximálna doba**: Všetky zálohy staršie, ako uvedený počet dní, budú automaticky odstránené. Pre neobmedzenú dobu ponechajte prázdnu hodnotu. Toto nastavenie je nadradené nastaveniu *počet uchovávaných záloh*. Príklad: pri hodnote 90 budú ponechané iba zálohy nie staršie, ako 90 dní. Ostatné zálohy, bez ohľadu na výsledný počet zostávajúcich záloh, budú vymazané.&#x20;
* **Umiestnenie zálohy**
  * **Cieľový adresár:** Cesta k adresáru, v ktorom budú uchovávané zálohy. Napríklad na USB kľúči alebo inom disku, aby pri poškodení pevného disku C neboli údaje stratené.
  * **Prefix adresára zálohy**: Prefix v názve adresára reprezentujúceho zálohu, po ktorom nasleduje dátum a čas vo formáte `yyyyMMdd-HHmmss`. Príklad: pre hodnotu prefixu `db_backup_` je názov adresáru vytvorený 17.5.2024 v čase 14:59:00  pomenovaný`db_backup_20240517145900`.

{% hint style="danger" %}
Uistite sa, že zálohy sú uschovávané na inom pamäťovom médiu. V opačnom prípade, pri poruche tohto média, zálohovanie nechráni pred stratou dát.

To je možné docieliť napríklad niektorým z týchto spôsobov:

* cieľový adresár je nastavený na iný disk, než na ktorom beží zvyšok systému. Vhodné je použiť separátne pamäťové médium (druhý disk, alebo USB kľúč).
* obsah cieľového adresára je iným mechanizmom kopírovaný na externé úložisko.&#x20;
  {% endhint %}

## Manuálna záloha databázy

1. Na hlavnom počítači, na ktorom je nainštalovaná služba PORTOS API otvoríme ponuku štart a začneme písať názov aplikácie "**PORTOS Monitor**".
2. Až sa v nájdených výsledkoch aplikácia Portos Monitor zobrazí, zvolíme a otvoríme ju.
3. V prípade, ak sa nás systém opýta na potvrdenie otvorenia aplikácie, stlačíme **Áno**.
4. Otvoríme záložku utility
5. Pri položke **Záloha databázy** stlačíme tlačidlo **Otvoriť**.

![Sekcia utility v aplikácii PORTOS Monitor](https://2205714691-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LTX4pJkSJoZaDqMmcPy%2F-MTfdVdYkzXHZyyWKxKR%2F-MTfi1M435tgslA-_V86%2Fdb-backup-monitor.png?alt=media\&token=9ca98bbc-3ffa-4201-89fd-9ebd45c693b4)

Otvorí sa konzolové okno, ktoré po chvíli končí výpisom podobným tomu, ktorý je uvedený nižšie a obsahuje:

* umiestnenie na počítači, kde bola záloha vytvorená
* umiestnenie na počítači, kde sa nachádza dávkový súbor, ktorý je potrebné spustiť, aby sa záloha databázy obnovila.

```
   * * * Zaloha databazy prebehla uspesne * * *


-- Zaloha databazy bola vytvorena v adresari: "C:/zaloha/db_backup_20210216-173810/"
-- Pre obnovu databazy spustite davkovy subor C:/zaloha/db_backup_20210216-173810/restore_db.bat



Press any key to continue . . .
```

Stlačením akejkoľvek klávesy sa okno zatvorí.

## Zálohovanie externou utilitou

Pre zálohovanie externou utilitou je možné použiť powershell skript, ktorý sa nachádza v umiestnení `C:\Program Files (x86)\NineDigit\PORTOS\API\MongoDB\scripts\db_backup.ps1`.

### Vstupné parametre

Tabuľka nižšie popisuje vstupné parametre powershell skriptu.

| Názov parametra   | Predvolená hodnota | Popis                                                                                                          |
| ----------------- | ------------------ | -------------------------------------------------------------------------------------------------------------- |
| `databaseName`    | `POS2`             | Názov databázy, ktorá bude predmetom zálohy.                                                                   |
| `prefix`          | `db_backup_`       | Prefix v názve adresára reprezentujúceho zálohu, po ktorom nasleduje dátum a čas vo formáte `yyyyMMdd-HHmmss`. |
| `destinationPath` | `C:\Zaloha`        | Cesta k adresáru, v ktorom budú uchovávané zálohy.                                                             |
| `retentionCount`  | `10`               | Počet uchovávaných záloh. Staršie zálohy prevyšujúce zadný počet budú skriptom automaticky odstránené.         |

### Návratové kódy

Návratový kód 0 indikuje úspech, ostatné návratové hodnoty indikujú chybu. Chybové kódy sú popísané v tabuľke nižšie.

| Kód    | Význam                                                                             |
| ------ | ---------------------------------------------------------------------------------- |
| `1`    | Chybný vstupný parameter.                                                          |
| `1001` | Utilita MongoDB databázy nebola nájdená.                                           |
| `1002` | Cieľový adresár nie je možné určiť.                                                |
| `1100` | Vytvorenie zálohy nebolo úspešné.                                                  |
| `1101` | Kompresia zálohy do ZIP archívu zlyhala.                                           |
| `1200` | Tvorba dávkového súboru pre aplikovanie zálohy databázy (restore\_db.bat) zlyhala. |
| `2000` | Vykonávanie pravidiel retencie zlyhalo.                                            |
