# 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](/backoffice/uvod-do-aplikacie-backoffice.md) 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="/files/nLvHtTMxd5mJPkglIqh4" 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](/files/-MTfi1M435tgslA-_V86)

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.                                            |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.portos.sk/udrzba/zaloha-databazy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
