26.3.2024

Migrácia trezorov na PostgreSQL v praxi

V novembrovom blogu “Arcsynchro a PostgreSQL trezory” som písal o spôsoboch, akým sa nám podarilo zrýchliť prácu nástroja arcsynchro pri napĺňaní trezorov v databáze PostgreSQL. Zároveň som písal, že toto zrýchľovanie sa udialo v rámci projektu konverzie trezorových databáz konkrétneho zákazníka. Dnes je fáza migrácie starých trezorov úspešne ukončená - poďme sa pozrieť na to, ako prebiehala a koľko trvala.

V prvom rade by som chcel uviesť, že sa jednalo o jednu z najväčších (ak nie najväčšiu) migráciu trezorových databáz z Oracle na PostgreSQL, ktorú sme robili alebo kedy budeme robiť. Prečo? Z jednoduchého dôvodu, že tento MES systém bol do produkcie odovzdaný v roku 2004 a trezorovanie bolo zapnuté začiatkom roku 2006. V súčasnosti teda existuje 146 mesačných trezorov. Navyše, na tejto aplikácii sú aktívne aj trezorové segmenty, takže každý mesiac vzniká 5 segmentov (0-4).

 

Trz_1.png

Obr 1: začiatok a koniec výpisu trezorov - 146 trezorov za 12 rokov


Veľkosť trezorov postupne v dôsledku rozvoja a rozširovania MES systému narastala - trezorové segmenty z januára 2018 na platforme Oracle majú už vyše 70 GB.

Trz_2.png

Obr 2: veľkosť trezorov za január 2018 je 71700 MB.


Pre zaujímavosť, archív obsahuje konfiguráciu viac ako 58 tisíc archívnych objektov, pričom mnohé z nich sú štruktúrované archívy - v dôsledku toho sa pri štarte archívu z databázy načítava vyše 96 tisíc štartovacích hodnôt.

 

Trz_3.png

Obr 3: výpisy archívu pri štarte ukazujú existenciu 291 štruktúrovaných archívov, pre ktoré sú zapnuté
časové rezy, a viac ako 96 tisíc štartovacích hodnôt
(načítaných za cca 20 sekúnd z tabuľky plnenej pri vypínaní archívu).

 

Takže ako prebiehala migrácia na PostgreSQL?
Prvou fázou bola migrácia archívnej databázy. Nad prázdnou archívnou databázou bol spustený archív, ktorý v databáze povytváral tabuľky a začal ju plniť dátami. Následne boli utilitou arcsynchro do archívu domigrované dáta z Oracle archívu. Migrácia prebiehala medzi 6.10.2017 a 29.10.2017.

 

Trz_4.png

Obr 4: archívna databáza má veľkosť 1.67 TB a na disku zaberá 762 GB

 

Následne sme pre každý trezorový segment vytvorili samostatnú PostgreSQL databázu a skriptom inicializovali jej štruktúru. Následne bolo nutné pre každý trezorový segment spustiť arcsynchro na premigrovanie dát z Oracle do PostgreSQL.

 

Migrácia začala 31.10.2017 a prebiehala od najnovších trezorov ku najstarším. Koncom novembra (24.11) bol prvý krát pri migrácii použitý “file mode”, ktorý viac ako trikrát zrýchlil migráciu použitím externých tabuliek (foreign tables) reprezentovaných súbormi na disku. Fáza napĺňania trvala do 25.2.2018, t.j. takmer 3 mesiace.

 

Počas tohto času sme postupne vytvárali ďalšie a ďalšie trezorové databázy. Popri tom bolo nutné riešiť problémy s počtom spojení na tieto databázy - archív držal jedno otvorené spojenie na každú trezorovú databázu (kvôli čítaniu dát), čo spotrebovávalo systémové prostriedky (pamäť, handle) na strane PostgreSQL servera. Preto bola upravená funkcionalita čítania pre PostgreSQL trezory tak, že sa spojenia otvárajú a zatvárajú dynamicky pri čítaní - výhodou je okrem šetrenia systémových prostriedkov aj to, že čítanie konkrétneho trezoru viacerými taskami už nie je serializované v dôsledku použitia jedného spoločného databázového spojenia, ale každý task si otvorí vlastné spojenie.

 

Zaujímavosťou je fakt, že disk pre trezorové databázy je umiestnený na dátovom úložisku NAS RS2416RP+ (rackové vyhotovenie, osadené 12 diskami s užitočnou kapacitou cca 30 TB), ktoré je k archívnemu serveru pripojené ako iSCSI zariadenie cez gigabitový Ethernet - takže v zásade jednoduché a relatívne lacné riešenie (lacné v porovnaní s výkonnými diskovými poľami).

 

Trz_5.png

Obr 5: trezory s veľkosťou 12 TB zaberajúce cca 4 TB na disku (vďaka zapnutej kompresii)

 

Čo ďalej? V súčasnosti prebieha “upratovanie” - všetky dátové tabuľky trezorov sú kvôli zrýchleniu čítania pomocou SQL príkazu “ALTER TABLE CLUSTER ON INDEX” reorganizované tak, aby dátová štruktúra kopírovala index tabuľky a tak bolo čítanie rýchlejšie.
Následne bude na programe vytvorenie zálohy trezorových databáz na nezávislom diskovom poli, pre prípad poškodenia alebo nehody (podobne ako sú zálohy vytvorené pre Oracle trezory). A nakoniec bude nasledovať niekoľkomesačná prevádzka archívu ako aktívnej inštancie, ktorá sprostredkováva dáta uživateľom.

 

Záver 

 

PostgreSQL už niekoľko rokov dokazuje svoju užitočnosť a stabilitu aj ako úložisko pre archívne a trezorové dáta systémov postavených na aplikačnej platforme reálneho času D2000. Vykonaná migrácia viac ako 12 TB trezorových dát pokrývajúcich obdobie 12 rokov dokazuje, že táto databázová platforma je v praxi použiteľná nielen na malé a stredné riešenia, ale aj na tie najväčšie, ktoré v súčasnosti naši zákazníci prevádzkujú.


26.2.2018, Ing. Peter Humaj, www.ipesoft.com

Iné blogy