====== KOPIE ZAPASOWE ======
Wszelkie wprowadzane w systemie Modus dane przechowywane są w bazie danych (a konkretnie w plikach o określonej strukturze, obsługiwanych przez serwer bazodanowy FireBird). Kwestia bezpieczeństwa danych powinna być zawsze zadaniem o najwyższym priorytecie. Regularne tworzenie kopii zapasowych bazy danych ogranicza do minimum koszty związane z ponownym uruchomieniem systemu Modus po nieoczekiwanej awarii serwera. Począwszy od wersji 2.2.11 RhoAdmina kopie zapasowe wykonywane się tylko i wyłącznie po stronie serwera Firebird. Dzięki takiemu rozwiązaniu:
* operacje wykonywania kopii, przywracania bazy z kopii oraz optymalizacji bazy danych będą wykonywać się dużo szybciej (na serwerach linux to nawet kilkadziesiąt razy szybciej!);
* operacje te będą dużo bezpieczniejsze i nie narażone na awarie sieci - wszystko odbywa się na jednym komputerze bez pośrednictwa sieci.
===== KOPIE TWORZONE W PANELU ADMINISTRACYJNYM =====
Panel administracyjny RhoAdmin umożliwia utworzenie kopii zapasowej bazy danych w każdym momencie na żądanie użytkownika. Aby wykonać kopię należy:
* Na komputerze-serwerze (tam gdzie jest baza i zainstalowany Firebird) utworzyć lub wybierać folder, w którym będą tworzone kopie zapasowe bazy Modusa. Aby zwiększyć bezpieczeństwo folder ten **nie powinien być udostępniony w sieci**. Musi natomiast mieć nadane **uprawnienia do zapisu**.
* Zapisać lub zapamiętać pełną (bezwzględną) ścieżkę do tego folderu, np:
* c:\kopie\modus (ścieżka w formacie Windows)
* /backup/modus (ścieżka w formacie Linux)
* Uruchomić panel administracyjny RhoAdmin.
* Wybrać odpowiednią bazę danych i kliknąć przycisk **Połącz**.
* Przejść do zakładki "Kopie zapasowe".
* W polu 'Folder kopii' wpisać tą ścieżkę. Należy pamiętać, że od tej wersji jest to ścieżka na serwerze, a nie ścieżka lokalna. Jeżeli wprowadzisz ścieżkę, która nie istnieje na serwerze, wystąpi błąd podczas próby utworzenia kopii lub odtworzenia bazy danych z kopii.
* Wcisnąć przycisk **Wykonaj kopię**.
Podczas tworzenia kopii zapasowej na żądanie **nie trzeba** przerywać pracy w systemie Modus. Użytkownicy mogą normalnie pracować.
Oprócz trybu ręcznego, kopia zapasowa jest wykonywana automatycznie zawsze przed aktualizacją bazy danych do nowej wersji, a także podczas optymalizacji bazy danych. W tych przypadkach dodawany jest odpowiedni opis kopii.
\\ \\
Ekran: Tworzenie kopii bazy danych\\
{{:pl:administrator:licencja.png}}
\\ \\
Ekran: Tworzenie kopii bazy danych cz. 2\\
{{:pl:administrator:kopie.png}}
\\ \\
===== PLIKI KOPII =====
Nazwa plików kopii zapasowej ma następujący format:
nazwaoryginalna_wersja_data_godzina.bak
gdzie:
* ''nazwaoryginalna'' to oryginalna nazwa pliku bazy danych,
* ''wersja'' oznacza wersję bazy danych w chwili tworzenia kopii,
* ''data'' i ''godzina'' to data i czas rozpoczęcia tworzenia kopii zapasowej na stanowisku, na którym uruchomiono funkcję kopii.
Przykładowo plik o nazwie:
demo.fdb_v1.16.6.0_2009-11-03_15-59-55.bak
jest plikiem kopii bazy danych **demo.fdb**, utworzonej dnia **03 listopada 2009** o godzinie **15:59**. Baza danych w momencie tworzenia kopii była w wersji **1.16.6.0**.\\
===== UŻYCIE PROGRAMU GBAK =====
Na systemach Windows jak również Linux można używać zainstalowanego razem z serwerem Firebird programu **gbak**, który znajduje się w podkatalogu **bin** zainstalowanego serwera. Składnia polecenia utworzenia kopii:
gbak -T -V -USER nazwa_użytkownika -PASSWORD hasło plik_bazy plik_kopii
lub
gbak -T -V -USER nazwa_użytkownika -PASSWORD hasło ip:plik_bazy plik_kopii
Domyślnym użytkownikiem serwera Firebird jest **SYSDBA**, a jego hasłem **masterkey** (uwaga na duże i małe litery). Jeżeli hasło nie było zmieniane, to do utworzenie kopii bazy Modusa należy uruchomić polecenie:
gbak -T -V -USER SYSDBA -PASSWORD masterkey C:\Modus\db\start.fdb C:\Modus\backup\start.fbk
lub
gbak -T -V -USER SYSDBA -PASSWORD masterkey 10.0.0.198:C:\Modus\db\start.fdb C:\Modus\backup\start.fbk
a następnie
gbak -T -V -USER SYSDBA -PASSWORD masterkey C:\Modus\db\bin_start.fdb C:\Modus\backup\bin_start.fbk
lub
gbak -T -V -USER SYSDBA -PASSWORD masterkey 10.0.0.198:C:\Modus\db\bin_start.fdb C:\Modus\backup\bin_start.fbk
gdzie:
* ''10.0.0.198'' ip komputera na którym znajdują się pliki bazy danych
* ''C:\Modus\db\start.fdb'' jest ścieżką do bazy głównej Modusa, a
* ''C:\Modus\db\bin_start.fdb'' ścieżką do bazy załączników i zdjęć,
* ''C:\Modus\backup\start.fbk'' i ''C:\Modus\backup\bin_start.fbk'' plikami kopii tych baz.
Aby kopia bazy danych była kompletna należy zawsze wykonać operację dla obu plików bazy.
Nazwy plików kopii są dowolne. Można w nazwie zawrzeć na przykład datę utworzenia kopii czy wersję systemu, tak jak to robi ModusAdmin (patrz wyżej). Lokalizacja plików kopii powinna natomiast być dobrana tak, aby uwzględniać zasady bezpieczeństwa przechowywania danych w firmie.
Szczegółowe informacje na temat działania i opcji programu gbak znajdują się w [[http://www.firebirdsql.org/file/documentation/reference_manuals/user_manuals/html/gbak.html|dokumentacji Firebirda]].
Ze względów bezpieczeństwa zalecamy zmianę domyślnego hasła użytkownika SYSDBA. Szczegóły są opisane w [[http://www.firebirdsql.org/file/documentation/reference_manuals/user_manuals/html/gsec.html|dokumentacji Firebirda]].
Przyrostowe bazy danych: NBACKUP
FirebirdSQL umożliwia tworzenie przyrostowych kopii zapasowych .
Tworzenie kopii przyrostowej polega na tym, że w kolejnych plikach archiwum zapisywane są tylko te rekordy, które zostały zmodyfikowane od momentu utworzenia ostatniej kopii zapasowej na określonym poziomie.
Planując tworzenie przyrostowych kopii zapasowych, określa się poziomy, na których będą tworzone kopie zapasowe. Kopie poziomu zerowego (najniższego) zawierają wszystkie rekordy w bazie danych. Kopie kolejnych poziomów (1, 2, …) zawierają tylko te rekordy, które zostały zmienione od momentu wykonania ostatniej kopii zapasowej na poziomie niższym. Na przykład archiwum poziomu 1 zawiera tylko rekordy, które zmieniły się od czasu wykonania ostatniego archiwum poziomu 0.
Kopie przyrostowe umożliwiają częstszą archiwizację danych przy mniejszym zużyciu zasobów komputera. Przykładowy plan tworzenia kopii przyrostowych może uwzględniać:
* kopie poziomu **0** tworzone co tydzień;
* kopie poziomu **1** tworzone codziennie;
* kopie poziomu **2** tworzone co godzinę.
Wykonywanie kopii przyrostowych może odbywać się w czasie, gdy użytkownicy korzystają z bazy danych (w czasie pracy na bazie). Wykonywanie archiwum w czasie pracy nie zapewnia jednak 100% integralności danych w bazie. Prawdopobieństwo utraty integralności danych jest bardzo niskie. Mimo to zalecane jest wykonywanie kopii w czasie, gdy aktywność użytkowników jest minimalna (np. o północy, w niedziele itd).
Do wykonywania przyrostowych kopii zapasowych służy program nbackup.exe, znajdujący się w folderze /bin firebirda. Kopie można wykonywać ręcznie z linii komend lub korzystając z programów typu harmonogram zadań. Przykładowe proste wywołanie nbackup:
"C:\Program Files\Firebird\Firebird_2_5\bin\nbackup.exe" -B 0 C:\bazy\baza_danych.fdb C:\bazy\archiwum\arch_2015_09_08_poziom_0.nbk -user SYSDBA -password masterkey
Gdzie **-B** oznacza polecenie wykonania kopii zapasowej, **0 ** oznacza poziom, następnie podana jest lokalizacja bazy i lokalizacja archiwum.
Inne przykładowe wywołanie, wpisujące aktualną datę do nazwy pliku:
set d=%data:~0,4date:~5,2date:~8,2%_%time:~0,2%%time:~3,2% \\ set katalog_archiwum=c:\Bazy\Archiwum\0 \\ set baza=c:\bazy\baza_danych.fdb \\ "C:\Program Files\Firebird\Firebird_2_5\bin\nbackup.exe" -B 0 %baza% "%katalog_archiwum%\poziom0_%data%.nbk" -user SYSDBA -password masterkey
**Przywracanie bazy ** z kopii odbywa się po podaniu parametru -R, następnie nazwy bazy danych oraz plików z archiwami na kolejnych poziomach. Liczba plików zawierających archiwa na kolejnych poziomach jest zależna od tego, ile poziomów archiwów było uwzględnione podczas wykonywania kopii zapasowych. Może to być tylko 1 plik poziomu 0, lub trzy pliki o poziomach 0, 1, 2. Przykładowe wywołanie:
"C:\Program Files\Firebird\Firebird_2_5\bin\nbackup.exe" -R C:\bazy\baza_danych.fdb C:\bazy\archiwum\arch_data_poziom_0.nbk C:\bazy\archiwum\arch_2011_09_12_poziom_1.nbk \\ C:\bazy\archiwum\arch_data_poziom_2.nbk -user SYSDBA -password masterkey
----
Przykład skryptu wykonującego regularne kopie - LINUX
''#!/bin/bash \\ BCKNAME=/mnt/backup/`date +%Y`/mydb-`date +%F`.gbk \\ LOGNAME=/mnt/backup/`date +%Y`/log/mydb-`date +%F`.log \\ if [ ! -d /mnt/backup/`date +%Y` ]; then \\ mkdir /mnt/backup/`date +%Y` \\ fi \\ if [ ! -d /mnt/backup/`date +%Y`/log ]; then \\ mkdir /mnt/backup/`date +%Y`/log \\ fi \\ rm -f $BCKNAME.gz \\ rm -f $LOGNAME.gz \\ (/usr/lib/firebird/1.5/bin/gbak -b -v localhost:/home/qwe/SYSTEM-1.S1B -user sysdba -pass masterkey $BKCNAME 2>&1) > $LOGNAME \\ gzip $BCKNAME \\ gzip $LOGNAME''
Kopia bazy będzie robiona w /mnt/backup/ROK/mydb-dzisiejsza-data.gbk \\ Logi będą w /mnt/backup/ROK/log/mydb-dzisiejsza-data.log \\ W tym przypadku plik bazy jest w /home/qwe/SYSTEM-1.S1B \\ Hasło do FireBirda jest standardowe \\ Pod koniec logi i sam plik z backupem będą pakowane
----
----
Przykład skryptu wykonującego regularne kopie - WINDOWS \\
Echo Tworzymy kopie bazy danych MODUS
set AktualnaData=%date%
pushd C:\Program Files\Firebird\Firebird_3_0
gbak -T -V -USER SYSDBA -PASSWORD masterkey C:\Modus\db\baza.FDB C:\Backup\kopia%AktualnaData%.fbk
gbak -T -V -USER SYSDBA -PASSWORD masterkey C:\Modus\db\bin_baza.FDB C:\Backup\bin_kopia%AktualnaData%.fbk
gdzie:\\
Lokalizacja bazy danych to: C:\Modus\db\\
Kopia bazy będzie robiona w lokalizacji: C:\Backup\\
Nazwa bazy danych to: baza\\
W niektórych przypadkach należy skopiować plik firebird.msg z folderu firebirda do folderu c:\windows\system32\\
Powyższy kod należy zapisać w pliku tekstowym z rozszerzeniem **bat**, a następnie dodać plik do harmonogramu zadań
W przypadku kopii wykonywanych za pomocą tego skryptu baza nie może mieć nazwy **start**