Jak wdrożyć kopie zapasowe z użyciem online dump w InterBase XE7
Dmitry Kuzmenko, 08-WRZ-2016
InterBase od wersji 2007 obsługuje zrzut online - kopiowanie pliku bazy danych online. Zamiast gbak -b/-c pozwala to uzyskać gotową do użycia bazę danych po skopiowaniu, bez konieczności „przywracania” jej z kopii zapasowej (która nie jest bazą danych). Zrzut online jest bardzo szybki, prawie jak kopiowanie pliku przez system operacyjny.
Aby wykonać zrzut online bazy danych, użyj następującego polecenia:
gbak -d [opcje] baza_danych cel
(Pelny opis zrzutu znajdziesz w dokumentacji, Doc\OpGuide.pdf, lub tutaj)
Podobnie jak w przypadku pliku bazy danych, cel może mieć dowolną nazwę i rozszerzenie. Wynikiem polecenia będzie plik zrzutu równoważny oryginalnej bazie danych, ale w trybie tylko do odczytu.
Czas pierwszego uruchomienia tego polecenia to czas skanowania (odczytu) źródłowej bazy danych oraz czas zapisu pliku docelowego.
Dopóki cel jest w trybie tylko do odczytu, jest powiązany z plikiem bazy danych. Przy pierwszym zrzucie cały plik bazy danych zostanie odczytany i skopiowany do celu. Przy drugim i kolejnych - tylko zmienione strony zostaną zapisane do celu. Nazywa się to „zrzutem przyrostowym”.
Ważne! InterBase XE7 przy każdym powtarzanym poleceniu zrzutu (oczywiście z tymi samymi nazwami plików) odczytuje tylko zmienione strony bazy danych i zapisuje je do celu. Wersje wcześniejsze niż XE7 odczytują całą źródłową bazę danych. Wydajność jest więc inna, a XE7 jest znacznie szybszy. Jeśli w źródłowej bazie danych nie zmieniono żadnych stron, przyrostowy zrzut XE7 zajmie około 1 sekundy, podczas gdy InterBase2007-XE3 poświęci czas potrzebny na odczyt całego pliku bazy danych. Czas zależy od rozmiaru źródłowej bazy danych i szybkości pamięci masowej. Na przykład, jeśli szybkość pamięci wynosi około 400 MB/s, baza danych o rozmiarze 100 GB zostanie przeskanowana w 250 sekund (4 min 10 s).
Uwaga. InterBase XE7 obsługuje formaty plików baz danych XE7 (ODS 16), XE/XE3 (ODS 15) i 2009 (ODS 13). Funkcja inteligentnego skanowania, wspomniana powyżej, będzie działać tylko z formatem bazy danych XE7 (ODS 16).
Jeśli chcesz przełączyć cel do trybu odczytu i zapisu (tryb normalny), użyj polecenia:
gfix cel -mode read_write
Ale po tym cel traci połączenie z bazą danych i kolejne uruchomienie gbak -d baza_danych cel nie będzie już możliwe, ponieważ cel jest traktowany jako „inna” baza danych.
Jeśli chcesz całkowicie nadpisać cel zamiast zrzutu przyrostowego, użyj opcji -ov:
gbak -d -ov baza_danych cel
Zrzut zrzutu
Pierwszy zrzut zrzutu zadziała, ale kolejne przyrosty nie. Na przykład, najpierw:
gbak -d baza_danych cel1
tutaj otrzymujemy cel1 jako pełną zrzuconą bazę danych w trybie tylko do odczytu.
Następnie:
gbak -d cel1 cel2
Jak widzisz, tworzymy zrzut zrzutu. I tak, to polecenie skopiuje cel1 do celu2. Oba cele będą w trybie tylko do odczytu. Ale jeśli powtórzymy te dwa polecenia ponownie, zmiany, które trafiły z bazy danych do celu1, nie zostaną skopiowane do celu2. Tak więc cel2 pozostaje w stanie po pierwszym, początkowym kopiowaniu. I nie pojawiają się żadne komunikaty o błędach ani ostrzeżenia.
Jeśli więc kiedykolwiek chcesz wykonać zrzut zrzutu, powinieneś używać tylko pełnego zrzutu:
gbak -d -ov cel1 cel2
Opcja -ov jest obowiązkowa, aby zapewnić, że cel2 zostanie zapisany (i nadpisany) źródłem z celu1.
Schemat kopii zapasowej 1
Przykład zrzutów w różnych odstępach czasu:
gbak -d baza_danych cel
Jest uruchamiane na przykład co 1 godzinę. Mamy tutaj produkcyjną bazę źródłową i kopię „zapasową” cel, opóźnioną o jedną godzinę.
Dodatkowo, co 24 godziny możemy uruchomić:
gbak -d baza_danych cel2
Mamy tutaj produkcyjną bazę danych, kopię cel opóźnioną o 1 godzinę oraz kopię cel2 opóźnioną o 24 godziny.
Możesz wykonać dowolną liczbę zrzutów z jednej bazy danych.
Nie trzeba dodawać, że zrzuty docelowe mogą być używane jako bazy danych tylko do odczytu w dowolnym celu - raportowaniu, analityce itp., do zadań, które nie wymagają zaglądania do bieżącej bazy danych.
Zalety: Każdy zrzut może być niezależnie zaplanowany.
Wady: Opóźnienia między najnowszym a najstarszym zrzutem.
Schemat kopii zapasowej 2
Sekwencyjny zrzut do różnych celów. W takim przypadku należy skonfigurować harmonogram (systemowy lub niestandardowy), aby uruchamiał następujące polecenia jedno na określony interwał czasu:
gbak -d baza_danych cel1
gbak -d baza_danych cel2
gbak -d baza_danych cel3
Jeśli użyjesz 1-godzinnego interwału między tymi poleceniami, otrzymasz zrzuty (kopie zapasowe) w ten sposób:
cel1 o 12:00, cel2 o 13:00, cel3 o 14:00. Następne uruchomienie zrzutu cel1 zostanie zaktualizowane o 15:00 i tak dalej. W rezultacie będziemy mieć kopie baz danych z ostatnich 3 godzin.
Zalety: mamy zrzuty z kilku godzin, które są zbliżone do oryginalnej bazy danych.
Wady: trochę trudniej zaplanować te polecenia. To znaczy w tym przykładzie polecenia zrzutu muszą być zaplanowane co do dokładnego czasu:
Zrzut do cel1 o 00:00, 03:00, 06:00…
Zrzut do cel2 o 01:00, 04:00, 07:00…
Zrzut do cel3 o 02:00, 05:00, 08:00…
Podsumowanie
Gbak -d może być używany do zrzutu do lokalnej pamięci masowej oraz do zrzutu przez sieć - ponieważ zrzut przyrostowy wysyła do celu tylko zmienione strony. Cel może więc znajdować się w zdalnej pamięci sieciowej. Ale oczywiście sieć musi mieć dobrą przepustowość, aby dorównać lokalnej pamięci masowej. W przeciwnym razie zapisy do celu będą wolne.
Zrzut online może być używany nie tylko jako narzędzie do tworzenia online kopii zapasowej bazy danych, ale także jako narzędzie do „poziomego skalowania” systemu, aby zrównoważyć obciążenie aplikacji produkcyjnych, raportujących i analitycznych.
Chociaż widzisz, że zrzut online jest najszybszym sposobem uzyskania online kopii bazy danych (zamiast gbak -b/-c), ponieważ zrzut operuje na stronach, może pominąć pewne uszkodzenia stron, jeśli baza danych jest uszkodzona. Dlatego nadal musisz sprawdzać spójność bazy danych za pomocą dobrego, starego gbak -b/-c, ale możesz to robić rzadziej niż wcześniej.