Replikacja bazy danych

advertisement
Replikacja bazy danych
Replikacja bazy danych
Replikacja bazy danych polega na kopiowaniu (powielaniu) i przesyłaniu danych lub obiektów bazodanowych
między serwerami oraz na synchronizowaniu tych danych w celu utrzymania ich spójności.
Dane kopiowane nazywamy danymi źródłowymi, dane docelowe — repliką.
Replikacja danych najczęściej wykorzystywana jest w systemach rozproszonych baz danych, gdzie dane z jednego
zdalnego węzła (serwera) są kopiowane do innych zdalnych węzłów. Celem replikacji jest skrócenie czasu
dostępu do danych oraz uniezależnienie się od czasowej niedostępności serwerów i awarii sieci.
Wadą replikacji jest konieczność aktualizowania repliki w przypadku zmian danych źródłowych. Proces
uaktualniania nazywamy synchronizacją (ang. synchronization) lub odświeżaniem (ang. refreshing) repliki.
Zalety replikacji
Dzięki replikacji możemy poprawić niezawodność i wydajność systemu bazodanowego
Replikując dane:
• umożliwiamy lokalny dostęp do danych
użytkownikom z oddalonych miejsc;
• pozwalamy na częściową niezależność
serwerów bazodanowych;
• możemy podzielić dane w sposób
odpowiadający wymaganej strukturze;
• możemy fizycznie rozdzielić serwery
bazodanowe realizujące różne zadania oparte
na tych samych danych.
REPLIKACJA
Modele replikacji
Model replikacji serwera SQL Server definiuje trzy role, które
mogą zostać przypisane serwerom bazodanowym.
Serwer może zostać skonfigurowany jako:
• wydawca (ang. publisher),
• dystrybutor (ang. distributor),
• subskrybent (ang. subscriber).
Wydawca to serwer baz danych, który przesyła dane do innego serwera lub do innej bazy danych.
Jego zadaniami są:
• utrzymanie wzorcowej bazy danych,
• udostępnianie tej bazy innym serwerom (wysyłanie danych do subskrybenta)
• monitorowanie zmian w replikowanych danych i przesyłanie informacji o tych zmianach do
serwera pełniącego funkcję dystrybutora.
Modele replikacji -dystrybutor
Dystrybutor to serwer baz danych, który zarządza przepływem
danych między wydawcą a subskrybentami.
Serwer ma bazę dystrybucyjną (ang. distribution), która jest
automatycznie tworzona podczas przypisywania serwerowi roli
dystrybutora.
Ponadto dystrybutor zarządza informacjami związanymi z replikacją danych, takimi jak:
• historia zmian danych,
• transakcje przeprowadzone na serwerach,
• konfiguracja serwerów biorących udział w replikacji.
Modele replikacji -subskrybent
Subskrybent to serwer (lub baza danych), który otrzymuje replikowane dane
od innego serwera (lub od innej bazy danych) i przechowuje ich lokalną kopię.
Dane przechowywane przez subskrybenta mogą zostać
udostępnione użytkownikom:
• tylko do odczytu
• do odczytu i modyfikacji.
Dane (publikacje) mogą być dostarczane:
• automatycznie (ang. push ) przez wydawcę
• mogą być pobierane okresowo (ang. pull) przez subskrybenta,
który w celu ich pobrania łączy się z bazą dystrybucyjną.
• Replikacja typu push zalecana jest w przypadku synchronizowania poufnych danych pomiędzy małą liczbą
serwerów i wymaga wydajnego serwera pełniącego funkcję dystrybutora.
• Replikacja typu pull zalecana jest w przypadku synchronizowania danych pomiędzy dużą liczbą serwerów.
Typy replikacji
W serwerze MS SQL Server występują trzy typy replikacji:
• migawkowa,
• transakcyjna,
• łączeniowa.
Replikacja migawkowa (ang. snapshot replicalion ) polega na systematycznym przesyłaniu danych z
określonych momentów od wydawcy do subskrybentów. Ten typ replikacji stosowany jest dla danych, które
nie są często modyfikowane.
Replikacja transakcyjna (ang. transactional replication ) — wszystkie zmiany w danych źródłowych są na
bieżąco przesyłane do replik w kolejności, w jakiej zostały wprowadzone. Ponieważ zmiany zapisywane są na
bieżąco, nie występują konflikty. Ten typ replikacji wymaga szybkiego i niezawodnego połączenia wszystkich
serwerów i dlatego w praktyce jest stosowany głównie w sieciach lokalnych.
Replikacja łączeniowa (ang. merge replication) — zmodyfikowane dane są przechowywane i w określonym
czasie przesyłane do dystrybutora, który rozwiązuje konflikty i wysyła dane do subskrybentów.
Konfiguracje replikacyjne
Każdy typ replikacji może zostać zaimplementowany w jednym
z fizycznych modeli replikacji. Najczęściej spotykane modele to:
model centralnego wydawcy — w tym modelu jeden serwer pełni funkcje
wydawcy oraz dystrybutora, który replikuje dane do dowolnej liczby
subskrybentów. Często role wydawcy i dystrybutora są przypisywane temu
samemu serwerowi. Jest to najczęściej spotykana konfiguracja.
model centralnego subskrybenta — w tym modelu
zakłada się, że dowolna liczba wydawców przesyła dane
do jednego subskrybenta, gdzie są analizowane
subskrybent
model równorzędny — w tym modelu zakłada się,
że w replikacji bierze udział dowolna liczba
wydawców oraz dowolna liczba subskrybentów
REPLIKACJA
Typy tabel w MySQL
W serwerze MySQL występuje wiele mechanizmów obsługi tabel. Każdy
z nich jest przeznaczony do innego zastosowania. Przy użyciu polecenia
CREATE DATABASE i jego klauzul lub TYPE można zdefiniować mechanizm
przechowywania danych, który zostanie użyty w definiowanej tabeli.
• MyISAM Jest to domyślny typ tabeli. Tego typu tabele pozwalają na szybkie odczytywanie danych, ale nie
obsługują transakcji. Powinny być wykorzystywane do przechowywania rzadko zmienianych danych.
• MEMORY Tabele. tego typu są przechowywane w pamięci operacyjnej, a dane w nich zapisane są tracone
bezpowrotnie po wyłączeniu serwera. Wykorzystywane są w nich indeksy mieszane (ang. Hash), dlatego
modyfikacje danych są bardzo szybkie. Tabele tego typu powinny być używane jako tabele tymczasowe.
Każda tabela typu MEMORY przechowywana jest w postaci pojedynczego pliku z rozszerzeniem frm, który
zawiera jedynie definicję tabeli.
• FEDERATED Tabele tego typu definiują dane znajdujące się na innym serwerze. W przeciwieństwie do tabel
innych typów tabele FEDERATED są bezpośrednio dostępne ze zdalnych serwerów MySQL Serwer lokalny
łączy się z serwerem zdalnym i bezpośrednio zapisuje dane w tabeli lub odczytuje je.
Typy tabel w MySQL
Aby wyświetlić informacje o dostępnych na serwerze
typach tabel, należy użyć polecenia : SHOW ENGINES\G
• BLACKHOLE Dane zapisywane w tego typu tabelach nie są przechowywane. Zapisywane w nich wiersze są
automatycznie usuwane. Ze względu na to, że informacje o operacjach wykonywanych na nich są zapisywane
w dzienniku zdarzeń serwera MySQL, tabele tego typu są przydatne podczas diagnozowania i testowania baz
danych.
• CSV Tabele tego typu służą do przechowywania danych w plikach tekstowych typu csv. Są używane do
importowania i eksportowania danych pomiędzy serwerem MySQL a innymi serwerami lub programami.
• ARCHIVE Tabele tego typu służą do przechowywania dużych ilości danych. Dane są przechowywane bez
indeksów i są kompresowane przed umieszczeniem w tabeli. Podczas odczytu danych następuje ich
dekompresja. Zmienianie lub usuwanie tych danych jest niedozwolone. Tabele typu ARCHIVE są używane
głównie do przechowywania zarchiwizowanych danych lub danych diagnostycznych.
• InnoDB Są to tabele obsługujące transakcje. Serwer MySQL automatycznie blokuje odczytywane i
modyfikowane wiersze tych tabel. Tabele InnoDB pozwalają również definiować i sprawdzać ograniczenia
klucza obcego.
Replikacja bazy danych na serwerze MYSQL
• Replikacja na serwerze MySQL działa na podstawie schematu master-slave.
• Serwer master wszelkie zmiany wprowadzane w bazie danych (aktualizację, usuwanie danych) zapisuje w plikach
logowania binarnego (binary logs). Dlatego, aby wykonać replikację bazy danych, należy włączyć rejestrowanie
binarne na serwerze master.
• Serwer (lub serwery) slave pobiera dane i zapisuje je w replice. Każda zmiana danych na serwerze głównym (master)
powoduje identyczną zmianę danych na serwerze zapasowym (slave).
• Ten typ replikacji jest replikacją jednokierunkową. Po podłączeniu do serwera master serwer slave przesyła
informacje o stanie uaktualnienia wpisów z dziennika replikacji.
• Jeżeli z jakiegoś powodu połączenie między serwerami master i slave zostanie przerwane, serwer slave będzie
próbował okresowo łączyć się z serwerem master, aż połączenie ponownie zostanie nawiązane. Po uzyskaniu
połączenia serwer slave zaktualizuje swoją bazę danych.
• Serwer slave może być skonfigurowany jako serwer master dla innych serwerów MySQL
Podstawowe cechy replikacji
• skalowalność — możliwość rozłożenia obciążenia na
wiele serwerów;
• bezpieczeństwo — tworzona kopia istniejącej bazy
danych może pomóc w przypadku awarii serwera
głównego;
• separacja — możliwość udostępnienia kopii bazy
danych wielu użytkownikom.
Zasada działania replikacji
• Zasada działania replikacji polega na zapisywaniu do dziennika przez serwer master każdej czynności,
którą wykonał. Wykorzystuje się do tego bin-logi. Są to pliki binarne zawierające instrukcje, które
wykonał serwer master.
• Serwer slave odczytuje te pliki i kolejno wykonuje zapisane w nich instrukcje. Efektem takiego
działania są dwie identyczne bazy danych.
• Po skonfigurowaniu mechanizmu replikacji na serwerze master pojawia się dodatkowy wątek dla
każdego serwera slave, który odpowiada za wysyłanie bin-logów do serwerów slave.
• Każdy serwer slave tworzy dwa wątki. Pierwszy (wątek I/O Thread) odpowiada za odbieranie
dziennika replikacji z serwera master i zapisanie go na dysku w plikach tymczasowych (relay-log).
• Drugi (wątek SQL Thread) zajmuje się parsowaniem plików tymczasowych i wykonaniem zapytań do
bazy.
Bin-log
Bin-logi przechowują informacje o wszystkich zdarzeniach, które
prowadziły do zmian w bazie danych. Są wykorzystywane do:
• tworzenia replikacji,
• odzyskiwania danych.
Włączenie rejestrowania binarnego na serwerze zmniejsza jego wydajność, jednak korzyści płynące ze
skonfigurowania replikacji są na tyle istotne, że przewyższają spadek wydajności serwera.
Rodzaje replikacji:
• SBR (Statement Based Replication, replikacja bazująca na zapytaniach) - serwer do pliku zapisuje polecenia, które
wykonał,
• RBR (Row-Based Replication, replikacja bazująca na wierszach) - do bin-logów zapisywane są wyniki działań zapytań
na serwerze MASTER. Zapisywana jest informacja, jaki rekord w jaki sposób został zmieniony,
• MFL (Mixed-Format Replication, replikacja typu mieszanego) - połączenie dwóch powyższych replikacji.
Technika SBR jest bardzo wydajna i szybka, ponieważ w jej przypadku serwer główny zapisuje do pliku zapytanie, jakie
wykonał, następnie serwer zapasowy je odczytuje i wykonuje. Niestety do plików zapisywane są tylko zapytania SQL, co
może przysporzyć kłopotów, gdy zapytania będą bardziej złożone.
Problem ten rozwiązała metoda RBR, która do bin-logów zapisuje wyłącznie zmiany, które zaszły po wykonaniu
polecenia: zapisywane są informacje na temat sposobu modyfikacji konkretnych rekordów. Niestety ta metoda jest
znacznie wolniejsza od poprzedniej oraz zwiększa ilość wysyłanych danych pomiędzy replikującymi się serwerami.
Z pomocą przyszła metoda MFL, w której w większości przypadków logowane są zapytania SQL, tak jak w przypadku
metody SBR, natomiast dla zapytań, których wynik nie jest przewidywalny włączana jest replikacja RBR.
Download