Słonie pracują w stadzie



Podobne dokumenty
Jak zatrudnić słonie do replikacji baz PostgreSQL

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

przykłady problemów; realizacja dostaw części od producenta do klienta:

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Bazy danych 9. SQL Klucze obce Transakcje

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Serwery LDAP w środowisku produktów w Oracle

Rozproszone bazy danych. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Replikacja bazy danych polega na kopiowaniu i przesyłaniu danych lub obiektów bazodanowych między serwerami oraz na zsynchronizowaniu tych danych w

Referat pracy dyplomowej

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

Problemy optymalizacji, rozbudowy i integracji systemu Edu wspomagającego e-nauczanie i e-uczenie się w PJWSTK

Wykład 8. SQL praca z tabelami 5

Jak zatrudnić słonie do replikacji baz PostgreSQL?

Zapewnienie wysokiej dostępności baz danych. Marcin Szeliga MVP SQL Server MCT

Bazy danych 2. Wykład 1

Od czego zacząć przy budowaniu środowisk wysokiej dostępności?

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Wymagania dotyczące oprogramowania bazodanowego

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

DBPLUS Data Replicator Subtitle dla Microsoft SQL Server. dbplus.tech

edziennik Ustaw Opis architektury

Zasady współpracy programu Doradca Handlowy z Symfonią

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Architektura i mechanizmy systemu

Wybrane działy Informatyki Stosowanej

Politechnika Śląska, Instytut Informatyki

Spis treści. Przedmowa

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

DEKLARATYWNE ZARZĄDZANIE W MICROSOFT SQL SERVER

Administracja bazami danych

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

Administracja i programowanie pod Microsoft SQL Server 2000

Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres

Klastrowanie bazy IBM DB2. Adam Duszeńko

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Rok szkolny 2015/16 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. ADMINISTROWANIE BAZAMI DANYCH kl. 4c

Zarządzanie transakcjami

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

PHP: bazy danych, SQL, AJAX i JSON

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Opisy efektów kształcenia dla modułu

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Autorytatywne serwery DNS w technologii Anycast + IPv6 DNS NOVA. Dlaczego DNS jest tak ważny?

Jarosław Kuchta. Administrowanie Systemami Komputerowymi. Klastry serwerów

Replikacje. dr inż. Dziwiński Piotr Katedra Inżynierii Komputerowej. Kontakt:

Szkolenie obejmuje zagadnienia związane z tworzeniem i zarządzaniem bazą danych Oracle, jej zasobami i dostępem do danych.

Projektowani Systemów Inf.

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Win Admin Replikator Instrukcja Obsługi

Hurtownie danych wykład 5

Transakcje jednocześnie ACID

Zajęcia prowadzone przez MCT, auditora wiodącego systemów bezpieczeństwa informacji.

Ramowy plan kursu. Lp. Moduły Wyk. Lab. Przekazywane treści

Serwery Aplikacji "CC" Grzegorz Blinowski. tel (22) ; faks (22)

Migracja do PostgreSQL za pomocą narzędzi Enterprise DB

Ogólne informacje o Systemie Archiwizacji ZEUS

Budowanie interfejsów do baz danych

REFERAT O PRACY DYPLOMOWEJ

Konfiguracja modułu alarmowania w oprogramowaniu InTouch 7.11

dziennik Instrukcja obsługi

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Paweł Rajba

Ekspert MS SQL Server Oferta nr 00/08

Wdrożenie modułu płatności eservice. dla systemu Magento

Oracle Designer. Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera :

AE/ZP-27-16/14. Oprogramowanie do wykonywania kopii zapasowych oraz zarządzania maszynami wirtualnymi

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Wybrane działy Informatyki Stosowanej

Tworzenie aplikacji bazodanowych

Pojęcie bazy danych. Funkcje i możliwości.

Bazy danych 2. Wykład 6 Transakcje

JBoss Application Server

Szkolenie wycofane z oferty. Apache Cassandra - modelowanie, wydajność, analiza danych

Deduplikacja danych. Zarządzanie jakością danych podstawowych

Win Admin Replikator Instrukcja Obsługi

Dostęp do baz danych z aplikacji J2EE

POSTGRESQL PRAKTYCZNE PODEJŚCIE

Internetowe bazy danych

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

Podręcznik administratora Systemu SWD ST Instrukcja instalacji systemu

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

Hbase, Hive i BigSQL

VMware View: Desktop Fast Track [v5.1] Dni: 5. Opis: Adresaci szkolenia

Technologia informacyjna

Transkrypt:

Słonie pracują w stadzie Adam Buraczewski aburacze@gmail.com GNU/Politechnika, 13.01.2007 r.

Plan wykładu Wprowadzenie po co łączyć serwery bazodanowe? Transakcje rozproszone: 2PC, dblink, JTA Równoważenie obciążenia serwerów: pgpool, Sequoia, PostgreSQL Relay Replikacja asynchroniczna: Slony-I Replikacja synchroniczna: PGCluster, PostgreSQL-R

Najważniejsze pojęcia Transakcja pojedyncza logiczna operacja na bazie danych, mogąca się składać z wielu poleceń. Cechy: Atomicity jest zrealizowana w całości albo wcale Consistency po jej zakończeniu baza jest spójna Isolation inni użytkownicy bazy danych nie widzą pojedynczych operacji składających się na transakcję Durability zatwierdzona transakcja nie może być cofnięta, jej efekt jest utrwalony w bazie

Najważniejsze pojęcia Transakcja rozproszona: Obejmuje kilka serwerów bazodanowych połączonych za pomocą sieci Zapewnia cechy ACID ale w obrębie tych kilku serwerów na raz Realizacja techniczna: za pomocą protokołu wielofazowego zatwierdzania (Two-Phase Commit)

Najważniejsze pojęcia Replikacja automatyczne przekazywanie zmian w bazie danych do innych serwerów w sieci Master-slave zmiany dozwolone są tylko na głównym serwerze w sieci i są propagowane do serwerów podrzędnych Multi-master zmiany mogą być nanoszone na dowolnym z serwerów i są propagowane do pozostałych

Najważniejsze pojęcia Równoważenie obciążenia (Load balancing): Przekierowanie poleceń/zapytań bazodanowych do różnych serwerów w sieci, w celu ich optymalnego wykorzystania Stosowane zwykle razem z replikacją Failover reakcja systemu na awarię, przekierowanie poleceń/zapytań do innego serwera w sieci Failback przywrócenie poprzedniej konfiguracji po zlikwidowaniu awarii

Najważniejsze pojęcia Partycjonowanie danych podzielenie jednej logicznej bazy danych pomiędzy kilka serwerów: Poziome każdy serwer ma te same tabele, ale różne zakresy wierszy (np. w zależności od daty wpisanej do jednej z kolumn) Pionowe każdy serwer ma inny zestaw tabel Mieszane Umożliwia lepsze rozłożenie obciążenia, ułatwia określenie polityki dostępu (np. dane osobowe na osobnym serwerze) itp.

Zalety łączenia serwerów Połączenie wielu serwerów za pomocą sieci pozwala na: Zwiększenie wydajności poprzez rozłożenie obciążenia Zwiększenie dostępności (availability) systemu Partycjonowanie danych ze względów np. prawnych lub innych

Wady łączenia serwerów Połączenie wielu serwerów za pomocą sieci jest kłopotliwe ze względu na: Konieczność wymiany informacji o pracy serwerów (blokady, transakcje, spójność danych, awarie, wybór nowych głównych serwerów) Techniczną realizację rozłożenia obciążenia pomiędzy serwerami, autoryzacji użytkowników itp. Techniczną realizację replikacji danych pomiędzy serwerami Konieczność monitoringu, oprogramowania

Moduł dblink Dostęp do baz PostgreSQL z poziomu SQL Dostępny od wersji 7.3, wykorzystuje SRF Sposób użycia: SELECT dblink_connect('host=192.168.0.1 dbname=baza'); SELECT * FROM dblink('select c1, c2 FROM tabela') AS (c1 INTEGER, c2 INTEGER); SELECT dblink_exec('update tabela SET c2 = 4 WHERE c1 = 2'); SELECT dblink_close();

Moduł dblink Możliwość stosowania w perspektywach i procedurach składowanych, triggerach itp. Przykład: CREATE VIEW zdalna_tabela AS SELECT * FROM dblink('select c1, c2 FROM tabela') AS (c1 INTEGER, c2 INTEGER); SELECT * FROM zdalna_tabela; API do pracy z kilkoma połączeniami naraz API do dynamicznego budowania poleceń SQL, odczytu schematu zdalnej bazy

Moduł dblink Problem z transakcjami: BEGIN; SELECT dblink_exec('begin'); SELECT dblink_exec('insert...'); SELECT dblink_exec('commit'); ROLLBACK; Rozwiązanie: transakcje rozproszone, realizowane za pomocą 2PC

Alternatywy dla dblink Inne rozwiązania, podobne do dblink: dblinkora, dblink-tds stosowanie identyczne jak dblink Dblink-DBI wykorzystuje język pl/perl i sterowniki DBI przeznaczone dla Perla Skrypt analizujący strukturę wskazanej bazy danych i tworzący lokalnie komplet perspektyw do korzystania z tabel zdalnej bazy jak z tabel lokalnych

Transakcje rozproszone - 2PC Mechanizm Two-Phase Commit protokół dwufazowego zatwierdzania transakcji Standardowe rozwiązanie dla wielu serwerów baz danych Przystosowane do działania z managerami transakcji (np. standard JTA dla Javy odpowiednie wsparcie w sterowniku JDBC).

Transakcje rozproszone - 2PC Polecenia (transakcję rozpoczyna BEGIN): PREPARE TRANSACTION 'nazwa' przygotowuje transakcję; pomyślne zakończenie gwarantuje w 100% możliwość późniejszego wykonania COMMIT PREPARED, nawet po np. awarii zasilania COMMIT PREPARED 'nazwa' ostatecznie zatwierdza transakcję ROLLBACK PREPARED 'nazwa' wycofuje PREPARE TRANSACTION pozostawia założone blokady na tabele i wiersze

Transakcje rozproszone - 2PC Możliwość sprawdzenia aktualnie przygotowanych transakcji za pomocą: SELECT * FROM pg_prepared_xacts; Zatwierdzić/wycofać przygotowaną transakcję może użytkownik, który ją przygotował lub administrator

Dblink i 2PC Stosowanie mechanizmu 2PC z modułem dblink do wiarygodnego zatwierdzania transakcji: BEGIN; SELECT dblink_exec('begin'); SELECT dblink_exec('insert...'); SELECT dblink_exec('prepare TRANSACTION ''t123'';'); COMMIT; SELECT dblink_exec('commit PREPARED ''t123'';');

JTA Java Transaction API- standardowy mechanizm języka Java do obsługi transakcji rozproszonych Obsługuje wiele różnych źródeł danych o zachowaniu transakcyjnym (np. Hibernate, obiekty EJB itp.) Wymaga Java Transaction Service dostępne w J2EE, Jboss, oraz jako niezależne implementacje (np. JOTM z rozwiązań Open Source)

JTA Wykorzystanie: UserTransaction ut = (UserTransaction) context.lookup( java:comp/usertransaction ) ; ut.begin(); // dostęp do wielu źródeł danych ut.commit(); Zatwierdzenie transakcji odbywa się z użyciem mechanizmów 2PC, o ile dane źródło danych obsługuje transakcje rozproszone (PostgreSQL jak najbardziej

Sequoia Dawniej: Clustered-JDBC Produkt Open Source, niezależny od PostgreSQL, ale dobrze z nim współpracuje Działa z językiem Java, ale jest API dla C+ + Organizuje cały klaster złożony z wielu baz danych i udostępnia go za pomocą pojedynczego połączenia JDBC Realizuje replikację i partycjonowanie

Sequoia Serwery bazodanowe (w tym PostgreSQL) służą jedynie składowaniu danych, nie można z nimi współpracować bezpośrednio Sequoia wykorzystuje własny mechanizm wieloetapowego zatwierdzania transakcji, nie korzysta z 2PC (nie współpracuje też z JTA), sama realizuje synchronizację baz po awarii Wygodna administracja: graficzne wizardy, narzędzia do administracji i

pgpool Dojrzały system do rozkładania obciążenia pomiędzy kilka serwerów Utrzymuje pulę otwartych połączeń do serwera PostgreSQL, skracając czas potrzebny na np. autoryzację Wykorzystuje natywny protokół komunikacji klient-serwer systemu PostgreSQL, współpracuje więc z każdym programem, biblioteką czy sterownikiem Doskonale sprawdza się w serwisach WWW

pgpool Pgpool I: Obsługa tylko 2 serwerów PostgreSQL Polecenia SELECT kierowane tylko do jednego z serwerów (można określić jak ma być rozłożone obciążenie) Polecenia INSERT/UPDATE/DELETE kierowane do obydwóch serwerów, dzięki czemu bazy danych pozostają spójne Failover w przypadku awarii wszystkie połączenia przekierowane do drugiego serwera Nie potrafi korzystać z mechanizmu 2PC

Pgpool Pgpool II (wydany w 2006 r.): Dowolnie wiele serwerów składających się na klaster Tryb parallel - zapytania rozkładane są na podzapytania, wykonywane niezależnie na różnych serwerach, a wynik łączony (przezroczyste dla klienta) Nowy, wygodny panel administracyjny pgpooladmin (napisany w PHP) Lepsza współpraca z systemem Slony-I

Pgpool Bardziej elastyczny niż Sequoia, lepiej dostosowany do PostgreSQLa Wymaga, aby przed uruchomieniem bazy danych były zsynchronizowane np. za pomocą systemu Slony Możliwość podawania podpowiedzi w kodzie SQL, dotyczących realizacji zapytania w klastrze Warto stosować nawet dla pojedynczego serwera obsługującego np. serwis WWW (dużo krótkich sesji bazodanowych).

PostgreSQL Relay Integruje wiele rozproszonych serwerów i baz danych na jednym serwerze Wygodne rozwiązanie gdy przeniesiono pojedynczą bazę danych lub cały serwer pod inną lokalizację, a nie chcemy zmieniać konfiguracji programów Możliwość użycia tcpwrappers do kontroli dostępu Prosty plik konfiguracyjny

SQL Relay Realizuje connection pooling dla wielu różnych serwerów bazodanowych i języków programowania Ma własny protokół komunikacji klientserwer Nie potrafi synchronizować baz danych należy korzystać z replikacji osobnym mechanizmem lub korzystać z baz w trybie tylko do odczytu Wygodne narzędzia administracyjne (graficzny do konfiguracji, tekstowy

SQL Relay Elementy składowe: sqlr-connection łączy się do bazy danych sqlr-listener udostępnia pulę połączeń aplikacjom sqlr-scaler uruchamia dodatkowe połączenia w razie potrzeby Udostępnia połączenia standardowymi mechanizmami (DBI, JDBC itp.) oraz za pomocą własnych bibliotek (własna wersja biblioteki libpq, pozwala na korzystanie z SQL Relay bez rekompilacji

Slony-I Najbardziej dojrzałe rozwiązanie Open Source do replikacji baz danych dla PostgreSQL Opracowany w 2004 r. przez Jana Wiecka dla firmy Afilias Replikacja typu master-slave (jeden serwer główny i dowolnie wiele podrzędnych, zorganizowanych w drzewo) Działa dla PostgreSQL 7.3, nie wymaga żadnych zmian w kodzie serwera

Slony-I Wykorzystuje mechanizmy LISTEN/NOTIFY, własne procedury PL/pgSQL oraz triggery Nie replikuje zmian w strukturze bazy danych (tylko w samych danych w tabelach) Replikuje pojedyncze bazy danych lub ich fragmenty (operuje na zestawach tabel set). Wymaga, aby węzły klastra były nawzajem widoczne; przeznaczony dla

Slony-I Działanie: Modyfikacja bazy głównej powoduje umieszczenie informacji o zmianie w prywatnych tabelach Slony'ego (razem dla całej transakcji) Bazy podrzędne mają zablokowaną możliwość zmian w replikowanych tabelach Proces slon odczytuje te zmiany i przenosi do serwerów podrzędnych Pomyślne naniesienie zmian we wszystkich bazach podrzędnych powoduje wykasowanie logów z serwera

Slony-I Konfiguracja za pomocą programu slonik, wyposażonego w specjalny język skryptowy Przed uruchomieniem replikacji należy przenieść samą strukturę tabel BEZ danych (pg_dump -s pg_restore) Etap I określenie węzła nadrzędnego i podrzędnych, następnie uruchomienie procesów slon Etap II określenie zestawów tabel do replikacji

Slony-I Etap I: cluster name = moj_klaster; node 1 admin conninfo = 'dbname=nadrzedny host=192.168.0.1'; node 2 admin conninfo = 'dbname=podrzedny host=192.168.0.2'; init cluster (id = 1); store node (id = 2); store path (server = 1, client = 2, conninfo = ''dbname=nadrzedny host=192.168.0.1'); store path (server = 2, client = 1, conninfo = ''dbname=podrzedny host=192.168.0.2'); store listen (origin = 1, provider = 1, receiver = 2); store listen (origin = 2, provider = 2, receiver = 1);

Slony-I Etap II: cluster name = moj_klaster; node 1 admin conninfo = 'dbname=nadrzedny host=192.168.0.1'; node 2 admin conninfo = 'dbname=podrzedny host=192.168.0.2'; create set (id = 1, origin = 1); set add sequence (set id = 1, origin = 1, id = 1, fully qualified name = 'public.sekwencja'); set add table (set id = 1, origin = 1, id = 1, fully qualified name = 'public.tabela1'); set add table (set id = 1, origin = 1, id = 2, fully qualified name = 'public.tabela2'); set add table (set id = 1, origin = 1, id = 3, fully qualified name = 'public.tabela3');

Slony-I Failover z wyborem węzła najbardziej aktualnego (wykrywanie awarii musi być oprogramowane przez administratora) Możliwość przekazywania danych z określonym opóźnieniem Możliwość przekazywania danych poprzez pliki Bogactwo języka skryptowego slonik

PGCluster, PostgreSQL-R Tworzone, ale już całkiem stabilne rozwiązania replikacji multi-master Ingerują w kod źródłowy PostgreSQL Replikacja całej instalacji PostgreSQLa na raz (bez możliwości wybrania baz danych) Wszystkie węzły klastra są równorzędne Odczyty baz danych są realizowane lokalnie, zapis i blokady muszą być synchronizowane między węzłami klastra (wymaga szybkiej sieci)

PostgreSQL-R Dawniej PGReplicator Dostępna wersja binarna obraz ISO płyty z Linuksem i skonfigurowanym PostgreSQL-R Do komunikacji między węzłami wykorzystany jest mechanizm Spread Wymaga stosowania zewnętrznego programu do rozkładania obciążenia (np. pgpool)

PGCluster Dostępny w postaci łaty na PostgreSQL (nawet na wersję 8.2.1!) Ma własny program do rozkładania obciążenia, ora dodatkowy demon do monitoringu klastra Do wstępnej synchronizacji klastra wykorzystuje program rsync i ssh, na każdym węźle klastra cała instalacja musi być w tym samym katalogu

Adresy www.pgfoundry.org - serwis pgfoundry, czyli katalog i repozytorium wiekszosci oprogramowania zwiazanego z PostgreSQL, np. pgpool, PGcluster, PostgreSQL Relay, SkyTools itp., slony.info - strona domowa projektu Slony I, www.postgres-r.org - strona domowa projektu Postgres-R, jotm.objectweb.org - strona domowa JOTM, sequoia.continuent.org strona projektu Sequoia, sqlrelay.sourceforge.net - stronasql Relay.