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.
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ę.
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
Ekran: Tworzenie kopii bazy danych cz. 2
PLIKI KOPII
Nazwa plików kopii zapasowej ma następujący format:
nazwaoryginalna_wersja_data_godzina.bak
gdzie:
nazwaoryginalnato oryginalna nazwa pliku bazy danych,wersjaoznacza wersję bazy danych w chwili tworzenia kopii,dataigodzinato 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.198ip komputera na którym znajdują się pliki bazy danychC:\Modus\db\start.fdbjest ścieżką do bazy głównej Modusa, aC:\Modus\db\bin_start.fdbścieżką do bazy załączników i zdjęć,C:\Modus\backup\start.fbkiC:\Modus\backup\bin_start.fbkplikami kopii tych baz.
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 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ń