Replikacja kolejkowa (Q-replication) w IBM DB2 Paweł Kędziora, Maciej Krysiuk, Marek Lewandowski Politechnika Poznańska pawel.kedziora@gmail.com, maciej.krysiuk@gmail.com, lewandowski.marek@gmail.com
SPIS TREŚCI 1 Wstęp... 3 1.1 Replikacja kolejkowa... 3 1.2 Wymagane produkty... 3 2 Instalacja i przygotowanie środowiska... 5 2.1 Konfiguracja baz danych... 5 2.2 Konfiguracja WebSphere MQ... 6 2.2.1 Utworzenie menedżera kolejek... 6 2.2.2 Utworzenie kolejek źródłowych... 7 2.2.3 Utworzenie kolejek docelowych... 8 2.2.4 Kanały WebSphere MQ... 8 2.2.4.1 Kanały kolejek źródłowych... 9 2.2.4.2 Kanały kolejek docelowych... 9 2.3 Tabele kontrolne replikacji... 9 2.3.1 Tabele kontrolne programu Q Capture... 10 2.3.2 Tabele kontrolne programu Q Apply... 11 2.4 Mapy kolejek replikacji... 12 2.5 Subskrypcje... 13 3 Replikacja... 14 3.1 Uruchomienie kanałów i listenerów... 14 3.2 Uruchomienie programu Q Capture i Q Apply... 15 3.3 Rezultat replikacji.... 17 4 Literatura... 18 2
1 Wstęp 1.1 Replikacja kolejkowa Replikacja kolejkowa jest bardzo wydajnym, szybkim, niezawodnym i minimalizującym obciążenie sieci komputerowej mechanizmem replikacji danych. Rozwiązanie te wykorzystuje kolejki komunikatów w celu asynchronicznego przesyłania transakcji pomiędzy źródłową a docelową bazą danych. 1.2 Wymagane produkty W celu wykonania replikacji należy zainstalować (zarówno na komputerze stanowiącym źródło jak i cel danych) następujące produkty: Baza danych IBM DB2 8.2 WebSphere MQ 5.3 (lub wyższe) WebSphere Information Integrator 6 (lub wyższe) WebSphere MQ jest warstwą umożliwiającą aplikacjom wymienianie się komunikatami i stanowi swego rodzaju interfejs udostępniający połączenie poszczególnych kolejek. Rys 1.1: Komponenty replikacji kolejkowej. 3
Rys. 1.2 WebSphere MQ i jego rola pośrednicząca. 4
2 Instalacja i przygotowanie środowiska 2.1 Konfiguracja baz danych Po zainstalowaniu wszystkich wymaganych produktów należy utworzyć bazy danych: źródłową i docelową. W przeprowadzonym eksperymencie tabela źródłowa nazwana została SAMPLE_K, a tabela docelowa KUBA_TGT. Rys. 2.1: Widok okna Centrum Sterowania z widocznymi bazami: źródłową i docelową. 5
Należy utworzyć kopię zapasową źródłowej bazy danych, a następnie stworzyć dla niej log. Rys. 2.2: Konfiguracja bazy danych tworzenie logu. 2.2 Konfiguracja WebSphere MQ 2.2.1 Utworzenie menedżera kolejek W celu utworzenia menedżera kolejek należy w konsoli systemu operacyjnego wpisać następujące polecenia: crtmqm SRC_QM crtmqm TGT_QM strmqm SRC_QM strmqm TGT_QM 6
Rys. 2.3: Widok konsoli systemu operacyjnego z poleceniami utworzenia menedżerów kolejek. 2.2.2 Utworzenie kolejek źródłowych Kolejka jest strukturą danych wykorzystywaną do przechowywania wiadomości. Właścicielem kolejek jest menedżer kolejki (patrz 2.2.1 oraz Rys. 1.2). Dla menedżera SRC_QM należy zdefiniować cztery kolejki: SENDQ zdalna kolejka nadawcza, która jest używana do przekazywania wiadomości zawierających replikowane dane. Wiadomości te są przekazywane do kolejki odbiorczej w docelowej bazie danych. TGT_QM lokalna kolejka transmisyjna przechowująca wiadomości przed umieszczeniem ich w kanale. ADMINQ lokalna kolejka administracyjna, za pomocą której program Q Capture otrzymuje komunikaty od programu Q Apply. RESTARTQ lokalna kolejka restartu Aby utworzyć powyższe kolejki należy w konsoli systemu operacyjnego wpisać następujące polecenia: 7
runmqsc SRC_QM DEFINE QLOCAL ('ADMINQ') DEFPSIST(YES) DEFINE QLOCAL ('RESTARTQ') DEFPSIST(YES) DEFINE QLOCAL('TGT_QM') USAGE(XMITQ) DEFPSIST(YES) DEFINE QREMOTE('SENDQ') RNAME('RECVQ') RQMNAME('TGT_QM') XMITQ('TGT_QM') DEFPSIST(YES) End 2.2.3 Utworzenie kolejek docelowych Dla menedżera TGT_QM należy zdefiniować następujące kolejki: RECVQ lokalna kolejka odbierająca wiadomości z programu Q Capture ADMINQ zdalna kolejka administracyjna SPILLQ dzięki kolejce typu SPILL możliwe jest jednoczesne wprowadzanie danych podczas replikacji. SRC_QM lokalna kolejka transmisyjna. Aby utworzyć powyższe kolejki należy w konsoli systemu operacyjnego wpisać następujące polecenia: runmqsc TGT_QM DEFINE QLOCAL('RECVQ') DEFPSIST(YES) DEFINE QLOCAL('SRC_QM') USAGE(XMITQ) DEFPSIST(YES) DEFINE QREMOTE('ADMINQ') RNAME('ADMINQ') RQMNAME('SRC_QM') XMITQ('SRC_QM') DEFPSIST(YES) DEFINE QMODEL('IBMQREP.SPILL.MODELQ') DEFSOPT(SHARED) MSGDLVSQ(FIFO) DEFTYPE(PERMDYN) End 2.2.4 Kanały WebSphere MQ Kanały WebSphere MQ używane są do przesyłania wiadomości między menedżerami kolejek. 8
2.2.4.1 Kanały kolejek źródłowych Aby utworzyć powyższe kolejki należy w konsoli systemu operacyjnego wpisać następujące polecenia: runmqsc SRC_QM DEFINE CHL ('SRC_QM.TO.TGT_QM') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME ('150.254.32.240(1450)') XMITQ('TGT_QM') DISCINT(0) DEFINE CHL ('TGT_QM.TO.SRC_QM') CHLTYPE(RCVR) TRPTYPE(TCP) End gdzie atrybutem parametru CONNAME adres IP i jeden z portów komputera na którym znajduje się WebSphere. 2.2.4.2 Kanały kolejek docelowych Aby utworzyć powyższe kolejki należy w konsoli systemu operacyjnego wpisać następujące polecenia: runmqsc TGT_QM DEFINE CHL ('TGT_QM.TO.SRC_QM') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('150.254.32.240(1451)') XMITQ('SRC_QM') DISCINT(0) DEFINE CHL ('SRC_QM.TO.TGT_QM') CHLTYPE(RCVR) TRPTYPE(TCP) End gdzie atrybutem parametru CONNAME adres IP i jeden z portów (różny od wykorzystanego w punkcie 2.2.4.1!) komputera na którym znajduje się WebSphere. 2.3 Tabele kontrolne replikacji Tabele kontrolne zawierają m.in. informacje na temat tabel z których i do których dokonywana jest replikacja danych. Wszystkie poniższe działania wykonuje się za pomocą Repliaction Center. 9
2.3.1 Tabele kontrolne programu Q Capture Rys. 2.4: Tabele sterujące programu Q Capture. Rys. 2.5: Wartości, którymi należy wypełnić tabele sterujące programu Q Capture. 10
2.3.2 Tabele kontrolne programu Q Apply Rys. 2.6: Tworzenie tabeli sterującej programu Q Apply. Rys. 2.7: Zawartość tabeli sterującej programu Q Apply 11
2.4 Mapy kolejek replikacji Mapy kolejek replikacji służą do powiązania ze sobą kolejki nadawczej źródła danych i kolejki odbiorczej docelowej bazy danych. Rys. 2.8: Tworzenie mapy kolejkowej Rys. 2.9: Parametry tworzenia mapy kolejkowej. 12
2.5 Subskrypcje Subskrypcje służą do mapowania tabeli źródłowej na jej kopię w docelowej bazie danych. Tworzenie subskrypcji wymaga znajomości nazwy kolejki, która będzie wykorzystywana do transmisji danych oraz podania tabeli źródłowej i docelowej a także wskazania mapowania, które ma zostać wykorzystane. Rys. 2.10: Tworzenie subskrypcji Rys. 2.11: Stworzona subskrypcja 13
3 Replikacja 3.1 Uruchomienie kanałów i listenerów Aby uruchomić kanały, należy najpierw uaktywnić menedżerów kolejek. Można to wykonać wprowadzając w konsoli systemu operacyjnego następujące polecenia: strmqm SRC_QM strmqm TGT_QM Następnie za pomocą poniższego polecenia należy uruchomić listener odbiorcy na kolejce źródłowej: runmqlsr -t tcp -m SRC_QM -p 1451 Następnie należy zainicjować nową sesję (w oknie nowej konsoli) menedżera SRC_QM: runmqsc SRC_QM Uruchomienie kanału: start channel (SRC_QM.TO.TGT_QM) end Uruchomienie listenera dla menedżera TGT_QM: runmqlsr -t tcp -m TGT_QM -p 1450 Następnie należy zainicjować nową sesję (w oknie nowej konsoli) menedżera TGT_QM: runmqsc TGT_QM Uruchomienie kanału: start channel (TGT_QM.TO.SRC_QM) end Poprawność działania kanałów można sprawdzić zarówno wykonując polecenia: DISPLAY CHSTATUS (SRC_QM.TO.TGT_QM) DISPLAY CHSTATUS (TGT_QM.TO.SRC_QM) 14
jak i korzystając z Replication Center: Rys. 3.1: Poprawność działania kanałów 3.2 Uruchomienie programu Q Capture i Q Apply Rys. 3.2 Uruchomienie programu Q Capture. Program Q Capture uruchamiany jest dla źródłowej bazy danych. Parametr KATALOG wskazuje ścieżkę na dysku lokalnym dla serwera Q Capture, gdzie znajdują się pliki z hasłami (umożliwiającymi dostęp do docelowej i lokalnej bazy danych) 15
oraz gdzie będą składowane pliki logu z wszystkimi komunikatami generowanymi przez program Q Capture podczas przeprowadzania procesu replikacji. Pliki z hasłami są tworzone i szyfrowane przez dostarczony wraz z systemem program asnpwd: Rys. 3.3: Tworzenie pliku asnpwd.aut z hasłami dostępu. Po wykonaniu wygenerowanego przez system skryptu program Q Capture jest uruchomiony. Rys. 3.4: Rezultat poprawnego uruchomienia programu Q Capture. Program Q Apply uruchamiany jest dla docelowej bazy danych. Uruchomienie programu Q Apply następuje z użyciem menu kontekstowego docelowej bazy danych w oknie Centrum Replikacji. System generuje skrypt, którego wykonanie powoduje uruchomienie programu Q Apply i w konsekwencji replikację danych. 16
Rys. 3.5 Rezultat poprawnego uruchomienia programu Q Apply 3.3 Rezultat replikacji. Wynikiem poprawnej replikacji jest uzyskanie repliki tabeli źródłowej w docelowym schemacie bazy danych. Rys. 3.6: Zawartość tabeli źródłowej. Rys. 3.7: Zawartość tabeli docelowej. 17
4 Literatura 1. WebSphere Information Integrator Q Replication: Fast Track Implementation Scenarios Nagraj Allur, Rich Briddell, Donna Kelsey, Naoko Takaya Seria REDBOOKS. 2. Dokumentacja techniczna IBM DB2 18