Offline BG - kontrola a vymazanie zmien

Z Hotelové systémy - Wiki
Skočit na navigaci Skočit na vyhledávání

<viewsecurity consultant />

Slave

Kontrola zmien

Kontrola zmien na lokálnej prevádzke pred updatom je dôležitým krokom, ktorý nie je možne vynechať.

Error.png Na lokálnej prevádzke nesmú počas update na novú verziu zostať žiadne zmeny!!!

Existujú síce transformačné skripty, ktoré vedia vyupdatovať aj neodreplikované zmeny, avšak pri update na verziu s vyšším major číslom (stredné číslo verzie) sa nie vždy podarí všetky zmeny korektne vyupdatovať.

Skript na kontrolu zmien je dostupný na ftp:

/produkty/hotelove_systemy/servisnestrediska/InstalaciaHRS/LokalnePrevadzky/script/check_changes_slave.bat

Kontrolujú sa zmeny v lokálnom replicu aj na lokálnom BG serveri. Skript je napísaný pre inštalácie na postgres databázi.

Skript je potrebné upraviť pre konkrétnu lokálnu prevádzku, ide o prvé 4 riadky skiptu, kde sa nastavujú cesty ku inštalácii systému Asseco BLUEGASTRO.

set disk=D:
set SystemAsseco BLUEGASTRO=SystemAsseco BLUEGASTRO03
set Log_Dir=Logs
set Log_Name=change.log

Po nastavení správnych hodnôt je možné skript otestovať. Po úspešnom dobehnutí skript vygeneruje log súbor na miesto, ktoré je zadefinované priamo v skripte. Ak sa log súbor nevygeneroval, preverte správne nastavenie ciest na systém Asseco BLUEGASTRO.

Log súbor, v prípade, ak nie sú žiadne zmeny (toto je želaný stav pred update), by mal vyzerať nasledovne:

Kontrola G_CHANGES v Blue Gastro
count 
-------
     0
(1 row)
kontrola sys_changes_for_gastro v replic 
 count 
-------
     0
(1 row)
kontrola sys_changes_for_receivers v replic 
 count 
-------
     0
(1 row)

V niektorých prípadoch môže nastať situácia, že log z kontroly zmien vyzerá tak, ako je zobrazené nižšie. V tomto prípade síce platí, že cesty v skripte sú správne nakonfigurované, avšak samotná kontrola zmien neprebehla. Nenechajte sa pomýliť tým, že nie sú vypísané počty zmien, rozhodne to neznamená, že žiadne zmeny nie sú!

Kontrola G_CHANGES v Blue Gastro 
kontrola sys_changes_for_gastro v replic 
kontrola sys_changes_for_receivers v replic

V takomto prípade býva najčastejšie problém s nastavením pripojenia cez IPV6 na samotnom PostgreSQL a preto je potrebné komunikaciu cez IPV6 povoliť. Nastavenie je v súbore ..\PsqlHomes\PgSQL_Gastro01\data\gastro01\pg_hba.conf (pre verzie GV_02.08.++) ..\pgsql\data\gastro01\pg_hba.conf(pre verzie nižšie ako GV_02.08.xx). Takisto je potrebné skontrolovať nastavenie pre Replic v súbore ..\PsqlHomes\PgSQL_Replic01\data\replic01\pg_hba.conf príp. ..\pgsql\data\replic01\pg_hba.conf

# IPv6 local connections:
# host    all         all         ::1/128               trust 
             - druhý riadok je potrebné odkomentovať, tj. zrušiť znak mriežky

Vymazanie zmien

Vymazanie zmien sa taktiež vykonáva spustením skriptu. Túto funkciu je však využívať len vo výnimočných prípadoch, nakoľko vymazanie zmien vedie ku rozsynchronizovaniu dát slave versus master. Rozhodne nie je vhodné realizovať vymazanie zmien pred updatom - následne by bola potrebné manuálne synchronizácia a následná reincializácia slave prevádzky. V prípade, že pred updatom zistíte, že na lokálnej prevádzke sú zmeny, je potrebné počkať, kým sa zmeny odreplikujú prípadne riešiť problém samotnej replikácie.

Vymazanie zmien sa najčastejšie využíva pri lokálnych prevádzkach, ktoré fungujú len v offline režime - nikdy sa nepripájajú na master. V takýchto prípadoch sa pravidelne vykonáva manuálna synchronizácia a jej súčasťou je aj vymazanie zmien. Viacej o manuálnej synchronizácii je na tejto stránke.

Skript na vymazanie zmien je dostupný na ftp. Využiteľný je pre inštalácie na postgres databázi.

/produkty/hotelove_systemy/servisnestrediska/InstalaciaHRS/LokalnePrevadzky/script/clear_changes_slave.bat

Skript je potrebné upraviť pre konkrétnu lokálnu prevádzku, ide o prvé 4 riadky skriptu, kde sa nastavujú cesty ku inštalácii systému Asseco BLUEGASTRO.

set disk=E:
set SystemAsseco BLUEGASTRO=SystemAsseco BLUEGASTRO03
set Log_Dir=Logs
set Log_Name=change.log

Po nastavení správnych hodnôt je možné skript otestovať - POZOR test je potrebné vykonať vo vhodnej situácii - aj skúšobné odmazanie dát vedie ku rozsynchronizovaniu dát. Po úspešnom dobehnutí skript vygeneruje log súbor na miesto, ktoré je zadefinované priamo v skripte. Ak sa log súbor nevygeneroval, preverte správne nastavenie ciest na systém Asseco BLUEGASTRO.

Log súbor by mal vyzerať nasledovne:

ut 25. 03. 2014 Vymazanie zmien 
vymazanie sys_changes_for_gastro v replic 
 DELETE 0
vymazanie sys_changes_for_receivers v replic 
 DELETE 0

Opätovne platí aj vyššie spomenuté, pokiaľ chýbajú v logu riadku označené DELETE, je vhodné preveriť nastavenie v súbore pg_hba.conf.

Warn.png Vymazanie sa týka len tabuliek v Replicu, ak boli nejaké zmeny v G_CHANGES - tj. ešte na BlueGastre, tieto neboli skriptom zmazané. Ak sa týchto zmien potrebujete zbaviť, je možné zmazať ich manuálne cez databázový explorer nasledovnými príkazmi.

delete from G_CHANGES_ACTUAL_VALUES; 
delete from G_CHANGES;

Present.png Gratulujem - v tejto chvíli ste sa stali šťastným výhercom manuálnej synchronizácia lokálnej prevádzky. Dáta, ktoré boli či už v G_CHANGES alebo v sys_changes_for_receivers totiž chýbajú na mastri a nemajú sa tam ako bez manuálnej synchronizácie dostať. Pre manuálnu synchronizáciu pokračujte na túto stránku.

Master

Kontrola zmien

Kontrola zmien na mastri je nemenej dôležitá, opätovne platí, že by počas update nemali byť žiadne zmeny v replicu, nakoľko tieto zmeny sa nemusia vyupdatovať a následne po príchode na lokálnu prevádzku budú robiť zlobu. Ak však ide o situácie, kedy je plánovaná reinicializácia lokálnych prevádzok, potom nie je problém zmeny vymazať a na jednotlivé lokálne prevádzky vygenerovať dávky a naimportovať ich. Podrobnosti o reinicializácii sú na tejto stránke.

Skript na kontrolu zmien je dostupný na ftp:

/produkty/hotelove_systemy/servisnestrediska/InstalaciaHRS/LokalnePrevadzky/script/check_changes_master.bat

Kontrolujú sa len zmeny, ktoré sú už v MasterReplicu. Skript je použiteľný pre MasterReplic, ktorý beží na postgres databázi.

Skript je potrebné upraviť pre konkrétnu lokálnu prevádzku, ide o prvé 4 riadky skiptu, kde sa nastavujú cesty ku inštalácii systému Asseco BLUEGASTRO.

set disk=D:
set SystemAsseco BLUEGASTRO=SystemAsseco BLUEGASTRO03
set Log_Dir=Logs
set Log_Name=change.log

Po nastavení správnych hodnôt je možné skript otestovať. Po úspešnom dobehnutí skript vygeneruje log súbor na miesto, ktoré je zadefinované priamo v skripte. Ak sa log súbor nevygeneroval, preverte správne nastavenie ciest na systém Asseco BLUEGASTRO. Pokiaľ v logu chýbajú údaje o počte riadkov je veľmi pravdepodobné, že sa skript síce spustil, ale pripojenie na databázu bolo neúspešné. Preverte si nastavenie v pg_hba.conf.

Ak nenulový počet zmien v sys_changes_for_gastro, znamená to, že zmeny z lokálnych prevádzok čakajú na zápis na master - táto situácia môže nastať v niekoľkých prípadoch:

  • MasterReplic sa nevie pripojiť na Asseco BLUEGASTRO, hoci toto je spustené - je potrebné skontrolovať replic.conf
  • MAsterReplic sa nevie pripojiť na Asseco BLUEGASTRO, lebo systém Asseco BLUEGASTRO zomreu
  • pripojenie MasterReplic vs. Asseco BLUEGASTRO ide, ale zápis zmien zlyháva na chybe - takýto stav je viditeľný v logu obidvoch Dlappserverov

Pred updatom je potrebné tieto kolízne situácie vyriešiť tak, aby na master boli zapísané všetky zmeny z lokálnych prevádzok. Mazanie zmien je úplne posledná možnosť.

Sys_changes_for_receivers býva prázdny, je to historická tabuľka, ktorá zostala z pôvodných verzií, nakoľko masterReplic aj slaveReplic mali spoločnú dátovú štruktúru. Aktuálne sa zmeny pre jednotlivé lokálne prevádzky zapisujú do tabuliek určených pre konkrétnu lokálnu prevádzku dwld_installNo. Najmä u sezónnych prevádzok (zákazník TMR) sa počas update v letnej sezóne môže stať, že tieto tabuľky sú pre vypnuté lokálne prevádzky plné zmien. V tomto prípade nie je problém dané tabuľky vyčistiť, nakoľko pred spustením do zimnej prevádzky sa konkrétne lokálne prevádzky reinicializujú. Druhou možnosťou je aj to, že sa odkomunikuje so zákazníkom, aby boli všetky lokálne prevádzky online niekoľko hodín pred update. Zmeny sa prenesú a nie je potrebný žiadny zásah.

Kontrola zmien priamo na BlueGastre (zmeny, ktoré ešte neodišli z mastra) je možná cez databázový explorer jednoduchým selectom:

select count(*) from G_CHANGES; 

Ak je počet 0, potom žiadne zmeny na mastri nečakajú. Ak je počet 1 a viacej, potom zmeny ešte neboli ani len odoslané z BlueGastra - odporúčame preveriť pripojenie na MasterReplic ako aj to, či je vôbec spustený. V G_CHANGES by sa za normálnych okolností nemali nachádzať zmeny takmer nikdy - z Asseco BLUEGASTRO ich takmer okamžite po vygenerovaní preberá MasterReplic. Zmeny sa nakopia len v prípade, že MasterReplic nebeží príp. sa nevie na Asseco BLUEGASTRO pripojiť.

Vymazanie zmien

Vymazanie zmien na mastri je takisto možné realizovať skriptom. Skript vymaže len zmeny, ktoré prišli z lokálnych prevádzkov a ešte neboli zapísané na master.

Vymazanie zmien v G_CHANGES - tj. ešte na BlueGastre sa robí manuálne. Ak sa týchto zmien naozaj potrebujete zbaviť, potom je to možné cez databázový explorer nasledovnými príkazmi.

delete from G_CHANGES_ACTUAL_VALUES; 
delete from G_CHANGES;

Skript na vymazanie zmien v masterReplic na databázi postgres je dostupný na ftp:

/produkty/hotelove_systemy/servisnestrediska/InstalaciaHRS/LokalnePrevadzky/script/clear_changes_master.bat

Skript je potrebné upraviť pre konkrétnu lokálnu prevádzku, ide o prvé 4 riadky skiptu, kde sa nastavujú cesty ku inštalácii systému Asseco BLUEGASTRO.

set disk=D:
set SystemAsseco BLUEGASTRO=SystemAsseco BLUEGASTRO03
set Log_Dir=Logs
set Log_Name=change.log

Po nastavení správnych hodnôt je možné skript otestovať - POZOR test je potrebné vykonať vo vhodnej situácii - aj skúšobné odmazanie dát vedie ku rozsynchronizovaniu dát. Po úspešnom dobehnutí skript vygeneruje log súbor na miesto, ktoré je zadefinované priamo v skripte. Ak sa log súbor nevygeneroval, preverte správne nastavenie ciest na systém Asseco BLUEGASTRO. Pokiaľ v logu chýbajú údaje o počte DELETE je veľmi pravdepodobné, že sa skript síce spustil, ale pripojenie na databázu bolo neúspešné. Preverte si nastavenie v pg_hba.conf.

Vymazanie zmien pre jednotlivé prevádzky v dwld_instalNo tabuľkách nie je možné skriptom. Nie je však problém tieto zmeny pohodlne zmazať cez databázový explorer - pravým kliknutím na príslušnú tabuľku a výberom príkazu delete table.

Present.png Po úspešnom vymazaní zmien si môžte zvoliť svoju výhru:

  • reinicializácia lokálnej prevádzky - ak ste vymazali zmeny len v G_CHANGES.
  • manuálna synchronizácia - ak ste vymazali zmeny len v sys_changes_for_gastro
  • Surprise.png full house - manuálna synchronizácia aj reinicializácia - ak ste vymazali všetky zmeny, čo Vám prišli do cesty.