Kontynuując temat archiwizatora baz danych poruszony w poprzednim wpisie dotyczącym przeglądu narzędzi i archiwizatora baz danych chciałbym teraz skupić się na kwestiach kiedy i jak wykonywać archiwum. To, że archiwum należy robić regularnie użytkownik powinien mieć wbite do głowy bezwzględnie. Jak często robić i jaką metodą to kwestia już podlegająca dyskusji i przemyśleniu.

Rozpatrzmy to w kategorii kilku scenariuszy.

  1. Archiwum bazy dla małej bazy gdzie miesięcznie wystawiane jest kilka dokumentów, np. działalność usługowa
  2. Archiwum bazy dla firmy gdzie dziennie wystawiane jest kilka dokumentów
  3. Archiwum bazy dla firmy gdzie dziennie wystawiane jest kilkaset dokumentów

W zależności od ilości dokumentów warto rozróżnić zróżnicowanie częstotliwości i metodę wykonywania archiwum. Tu skupię się na metodach używanych przez Archiwizatora baz danych, który używany jest przez osobę o podstawowej znajomości komputera lub osobę techniczną ale nie wyspecjalizowaną w bazach danych, która mogłaby wprowadzić bardziej zaawansowane i elastyczne metody archiwizacji z wykorzystaniem natywnego mechanizmu SQL Server.

W przypadku scenariusza pierwszego w zupełności wystarczy jeśli użytkownik wykona archiwum bazy danych WAPRO ERP wtedy kiedy pojawiają się w niej zapisy czyli na koniec pracy danego dnia wykonujemy archiwum.

Można to zrobić poprzez zaznaczenie odpowiedniej opcji na oknie zamykania programu (np. WAPRO Mag lub WAPRO Aukcje). Użytkownik w uprawnieniach musi mieć włączoną możliwość wykonania tego archiwum.

Archiwizacja bazy WAPRO Mag

Dostęp do konfiguracji uprawnień jest z menu Administrator > Użytkownicy i grupy > Zakładka Grupy > Uprawnienia po wskazaniu odpowiedniej grupy. W przypadku WAPRO Aukcje logowanie odbywa się na kontach programu WAPRO Mag więc to uprawnienie jest konfigurowane raz właśnie w Magu.

WAPRO Mag konfiguracja uprawnień

Druga opcja to zwykłe uruchomienie archiwizatora na żądanie z menu Start systemu Windows wtedy kiedy użytkownik chce wykonać archiwum.

W przypadku scenariusza drugiego czyli sytuacji gdzie firma wystawia kilkadziesiąt dokumentów dziennie bez względu należy rozważyć wykonywanie archiwum raz dziennie po zakończeniu pracy. Oczywiście metody analogicznie jak powyżej:

  • wykonywanie archiwum podczas zakończenia pracy z programem
  • uruchamianie ręcznie z menu
  • uruchamianie automatyczne z harmonogramu – to opisze szerzej za chwilę

W przypadku scenariusza 3 należy rozważyć wykonywanie kopii pośredniej w ciągu dnia lub kilku. Chodzi o to aby wraz z każdą kopią zapasową zredukować ilość danych utraconych tak aby jak najszybciej można było je przywrócić. Można wykonywać archiwum po zakończeniu dnia oraz kopię w środku pracy lub nawet 2 lub 3 takie kopie. W takim przypadku warto rozważyć już używanie natywnych metod SQL do wykonywania archiwum bazy w taki sposób aby nie było to mocno obciążające dla pracujących użytkowników oraz redukując tym samym ilość miejsca na dysku potrzebą do wykonania takiego archiwum. Metoda ta jest jednak dedykowana dla zaawansowanych użytkowników i nie będę jej tu opisywał w szczegółach.

W tym przypadku na pewno nie możemy bazować na człowieku czyli wykonywanie archiwum należy zlecić systemowi operacyjnemu lub innej usłudze, która sama będzie pamiętała o wykonaniu archiwum o zadanej porze np. SQL Server Agent, który dostępny jest w Microsoft SQL Server od wersji Standard.

Jak się za to zabrać? Należy wykorzystać możliwości samego archiwizatora a potem rozbudować to troszkę o kawałek skryptu powłoki systemu, ale po kolei.

Najpierw należy przygotować tzw. plik konfiguracji czyli plik INI, który będzie posiadał zapisane informacje co chcemy archiwizować i jaką metodą. W tym celu można albo ręcznie utworzyć plik np. Konfiguracja.INI w katalogu C:\Program Files (x86)\Common Files\WAPRO\  lub wygenerować go automatycznie. Uruchamiamy archiwizatora baz danych i po wybraniu opcji Archiwizacja na zakładce Konfiguracja należy wyklikać ustawienia dotyczące maski pliku a następnie z zakładki Archiwizacja wybrać przycisk Do skryptu. System pozwoli zapisać plik we wskazanym miejscu. Po jego uruchomieniu pojawią się parametry wyklikane w archiwizatorze.
[Parametry]
Serwer=.\sql2016
Baza=WAPRO
WinLogin=1
Login=
Haslo=
Katalog=D:\Backup
ZIP=1
CzescStala=Archiwum
NazwaBazy=1
DataCzas=1
HasloArchiwum=
Kompresja=6

Większość z nich jest oczywista, na uwagę zasługuje WinLogin=1 – ta opcja pozwala stosować login windows do logowania w SQL bez konieczności podawania hasła w pliku tekstowym – opcja ta jest przeze mnie bardzo mocno rekomendowana!!! Warunek aby z niej skorzystać oczywiście jest taki, że konto systemu Windows lub usługi SQL w kontekście której taki automatyczny backup ma się wykonać musi mieć prawo logowania do SQL Server oraz wykonania archiwum.

Zip = 1 oznacza kompresję pliku a kompresja=6 pozwala określić jak mocno jest ona stosowana (zależność opisywałem w poprzedniej części wpisu).

Jeśli mamy już ten element gotowy można przejść do skorzystania ze skryptu wywołującego. W tym celu otwieramy notatnik i wpisujemy kawałek polecenia:

"C:\Program Files (x86)\Common Files\WAPRO\archiwizator.exe" tryb=1 inf=konfiguracja.ini

Co odpowiada wywołaniu pliku archiwizator.exe ze wskazanego katalogu, tryb = 1 mówi o tym,że chcemy wykonać archiwizację a inf=konfiguracja.ini zawiera szczegóły jak ma się to odbyć czyli gdzie się należy zalogować, jaką bazę zarchiwizować i jak ma nazywać się plik. Ważne, aby ścieżka była opakowana w cudzysłowie ponieważ zawiera spację. Tak utworzony plik należy zapisać z poziomu notatnika opcją Zapisz jako w określonym miejscu na dysku np. Backup_wapro.cmd – rozszerzenie to .cmd lub .bat. Można użyć również skrypt PowerShell ale w tym artykule się tym nie zajmę.

Teraz można sprawdzić poprawność takiej konfiguracji poprzez uruchomienie pliku Backup_wapro.cmd jeśli wszystko jest prawidłowe pojawi się okno archiwizatora w trakcie wykonywanej archiwizacji.

Kolejny etap to uruchomienie tego automatycznie w tym celu można w systemie uruchomić Harmonogram zadań następnie wybrać opcję Utwórz zadanie podstawowe w wprowadzamy nazwę zadania pozwalającą stwierdzić co ono robi, po przejściu Dalej w sekcji Wyzwalacz określamy co ile ma się ono wykonywać np. Codziennie po przejściu Dalej wprowadzamy godzinę i co ile dni. W sekcji Akcja należy wybrać Uruchom program i przejść Dalej a następnie w polu Program/Skrypt za pomocą opcji Przeglądaj… Wybrać plik Backup_wapro.cmd , który utworzyliśmy przed chwilą.

 

Zadanie jest gotowe w połowie ponieważ domyślnie zadziała tylko jeśli użytkownik jest zalogowany – oczywiście ma to swoje ograniczenia, że jak ktoś nie jest zalogowany albo ma urlop to kopia się nie wykona. Należy w menu po lewej stronie kliknąć na Biblioteka harmonogramu zadań a następnie w sekcji po środku odnaleźć zadanie i kliknąć w nie podwójnie lewym przyciskiem w celu edycji. Na pierwszej zakładce Ogólne należy zmienić ustawienie Uruchom niezależnie od tego, czy użytkownik jest zalogowany. Po tej operacji wybieramy OK – pojawi się dodatkowe okno, gdzie należy wprowadzić login i hasło użytkownika w kontekście, którego to zadanie ma się uruchamiać.

Po tej operacji czekamy na pierwsze uruchomienie i sprawdzamy czy wykonało się ono prawidłowo. Od tej pory wiemy już jak to składać poszczególne klocki aby zaplanować odpowiednią strategię kopii do ilości wprowadzanych przez nas danych w WAPRO ERP.

Pamiętaj, że ten artykuł skupia się jedynie na wykonaniu kopii bazy WAPRO ERP ale użytkownik musi zadbać o kopię innych elementów firmowych:

  • Dane użytkownika składowane w plikach (być może warto zastosować moduł e-Dokumenty w celu wykonywania archiwum tych danych wraz z bazą WAPRO ERP)
  • Zdjęcia artykułów przechowywane w katalogu (jeśli zapisywane są w bazie to robione jest to wraz z kopią bazy)
  • Raporty dodatkowe przechowywane w plikach (jeśli zapisywane są w bazie to robione jest to wraz z kopią bazy)
  • Dodatkowe pliki użytkownika

Kolejny aspekt do uwzględnienia to ewentualnie automatyczne kasowanie tych danych z katalogu po upływie pewnego czasu. Można czyścić to ręcznie ale w przypadku kiedy baza jest duża istnieje ryzyko, że jeśli użytkownik nie skasuje danych na czas to zapcha się dysk, gdzie zapisywane jest archiwum i cała strategia legnie w gruzach.

Można to znowu zautomatyzować poprzez utworzenie kolejnego pliku skryptu np. KasujStarszeNiz30Dni.cmd gdzie w definicji skryptu jest polecenie

forfiles /P D:\backup /D -30 /M *.* /C "cmd /c del @path"

Może być to oddzielny skrypt wywoływany w inny terminie lub może być to kolejna linijka dopisana do skryptu Backup_wapro.cmd wtedy najpierw zostanie wykonane archiwum a potem skasowane zostaną pliki starsze niż 30 dni.

W strategii kopii warto uwzględnić kopię plików archiwum na dodatkowy nośnik np. dodatkowy serwer plików NAS, który umożliwi przechowywanie tych danych na dodatkowych dyskach skonfigurowanych z użyciem RAID 1 lub innego zapewniającego większe bezpieczeństwo. Tą metodą zapewniamy sobie dodatkowe bezpieczeństwo. W tym celu można znowu dodać nowy skrypt lub rozbudować podstawowy o linijkę:

forfiles /P D:\backup /D %date% /M *.* /C "cmd /c copy /Y @path E:\backup"
Gdzie e:\Backup to zmapowany dysk lub można go zastąpić adresem UNC np. \\192.168.1.150\backup 

Jak widzisz zaplanowanie odpowiedniej koncepcji wykonywania archiwum wymaga lekkiego przemyślenia ale pozwala zabezpieczyć swoje dane i uniknąć nerwowych sytuacji. Chyba, że wyznajesz maksymę „Prawdziwi twardziele backupów nie robią” to powyższe informację nie są dla Ciebie 🙂

Pamiętaj ludzi dzielimy na dwie grupy tych co backupy robią i tych co zaraz je zaczną robić:)

Comments

  1. A ja mam pytanie moze z innej beczki ale tez dotyczy archiwizatora. Od jakiegoś momentu w oknie logowania (tylko po zamykaniu wfmag) przed wykonoaniem kopii zaznacza sie uwierzytelnianie windows i trzeba to odznaczyć zeby sie zalogować. Gdzie to ustawić aby automatycznie pole bylo oznaczone (wczesniej tak bylo) a teraz za kazdym razem trzeba odznaczac.

    1. Przyznam szczerze, że to zdaje się nie było zmieniane a sam ten mechanizm nie podlega konfiguracji ponieważ jest to coś co generowane jest w locie za każdym razem, kiedy użytkownik uruchamia tą funkcję. Przygotowywany jest tymczasowy plik ini podstawiany do archiwizatora.
      Założenie było takie, że używają tego osoby na lokalnych jednostanowiskowych instalacjach a wtedy logowanie windows jest zapewnione. Przy pracy wielostanowiskowej idziemy raczej w mechanizmy mniej zawodne niż „pamięć użytkownika” i po prostu ustawiamy automat do backupu.

      1. Ok. Spróbuję w takim razie z automatem. Mam takie pytanie czy automat do backupu ruszy w momencie gdy WFMAG jest aktywny?

        A gdzie ewentualnie znaleźć taki plik ini. Za każdym razem odznaczam ten „ptaszek” i za każdym razem jest cały czas zaznaczony. Wiem że SQL2008 oraz moje wapro 8.31.2 nie jest już wspierane, ale dotychczas nie miałem z tym problemów i to było odznaczone. Teraz musze za każdym razem odznaczyć…. Może trzeba dodać jakiś parametr do pliku ini lub go zmienić. Szukałem w różnych miejscach Common files, program files i wszedzie w plikach ini tego nie widzę. Który plik jest za to odpowiedzialny?

        Ps. pisałem w innym miejscu bo myślałem że to nie temat na tutaj 🙂 i posty znikały 🙂

        1. Posty nie znikają tylko wymagają akceptacji, żeby nie robić syfu w dyskusji i żeby boty nie siały spamu, który nic nie wnosi 🙂

          Ten plik ini, o którym wspominam jest generowany gdzieś głęboko w temp usera ale tak jak wspomniałem on za każdym razem zdaje się jest generowany od nowa o ile mnie pamięć nie myli.
          Co do automatu to jak najbardziej backup może być wykonywany w trakcie kiedy mag jest odpalony no ale wiadomo wtedy możemy mieć bazę z jakimś stanem np. dokument w edycji.

  2. Witam.
    Mam skrypt uruchamiający i plik konfiguracji. Wszystko działa, ale po uruchomieniu Backup_wapro.cmd pojawi sie za każdym razem okno notyfikacji windows(TAK / NIE) i muszę kliknąc aby poszło dalej. Wszystko robi prawidłowo, tylko pytanie moje jak usunąć tą notyfikację tylko dla tej aplikacji?

    1. O jakiej notyfikacji Tak/Nie mowa? Może to z windowsa jakieś pytanie o uruchomienie skryptu – czy pojawia się to także w momencie wywołania z poziomu CMD?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.