Seriál o replikaci na SQL Serveru 2012 – I.

Prvním dílem začíná další seriál o technologiích dostupných v SQL Serveru, tentokráte se zaměřením na replikace.

Existují tři základní druhy replikací, a všechny mají stejný cíl. Tímto cílem je duplikace dat. Nejčastěji vytváříme další kopii dat pro reporting, zálohu, ale může být využíta i pro tzv. scale-out scénář pro zvýšení výkonu. Kopie dat může být vytvořena ve stejné databázi, na stejném serveru nebo klidně ve vzdáleném datacentru. Kopie dat mohou být synchronizovány v daných intervalech, nebo udržovány v neustálé synchronizaci. Máme možnost zvolit a konfigurovat replikaci jako jednosměrnou, z jednoho serveru na druhý, nebo i obousměrnou pro přenos a synchronizaci z obou serverů.


Druhy replikací

Každý druh replikace, který je dostupný, se hodí pro odlišné scénáře. Mezi hlavní kritéria pro volbu jednotlivých možností patří frekvence změn, množství změn, velikost publikace, zdroj změny dat, ale také například latence mezi jednotlivými servery a dostupná konektivita atd.

Snapshot replikace

Snapshot replikace funguje samostaně, ale je také základem pro další dva druhy replikací a to transakční a merge replikaci, které ze snapshotu vycházejí. Při snapshot replikaci musí snapshot agent podle rozvrhu vždy vytvořit kopii replikovaných objektů (jednotlivé databázové objekty jako tabulky, pohledy atd) a tyto uložit do snapshot adresáře, do kterého mají přístup další účastníci replikace. Každý snapshot vzniká vždy na novo, je tedy náročný na systémové prostředky – čas, úložiště, procesor.

Transakční replikace

Před samotným využitím transakční replikace je nutné synchronizovat datový zdroj (objekty, schéma a dataset) s cílovým serverem pomocí prvotního snapshotu. Jakmile snapshot agent vytvoří první snapshot je nutné jej pomocí distribučního agenta přenést na synchronizované servery. Následně jsou přenášeny všechny na subscriber server všechny změny, které jsou provedené na zdrojovém serveru.

Merge replikace

Stejně jako transakční replikace i merge replikace začíná úvodním snapshotem. Následně mohou být data měněna jak na publisher, tak na subscriber serveru. Publisher server je server, který nabízí data (publikaci) pro replikace. Subscriber je server, který tuto publikaci konzumuje a na který jsou data replikována. Tuto dvojici serverů ještě doplňuje distributor, což je server, který se stará o distribuci publikací z publisher serveru na subcriber servery. Protože u merge replikace je možné data měnit jak na publisher tak na subscriber serveru a tyto změny navzájem mezi oběma rolemi replikovat, dochází zde k problémům. Je nutné vyřešit tzv. konflikt, kdy změna např. jednoho řádku v tabulce může zároveň nastat jak na straně publisher serveru, tak na straně subscriber serveru. Pro tyto případy je merge replikace vybavena mechanismy na řešení konfiktů.

Co nabídne Enterprise edice

Co se jednotlivých možností týče z licenčního hlediska, tak všechny tři druhy replikací jsou běžně dostupné v rámci edicí Standard, Business Intelligence a Enterprise. U nižších edicí je zpravidla možné konfigurovat server jako subscriber roli. Výjimku tvoří 2 funkce, které jsou dostupné pouze u edice Enterprise a to Oracle publishing, které dovoluje replikovat data z Oracle serverů. Do budoucna se dále s touto funkcionalitou však nepočítá. Pro jakékoli synchronizace v rámci nehomogenního prostředí je doporučováno SSIS řešení. Druhou funkcí dostupnou pouze u Enterprise edice je tzv. Peer to Peer transakční replikace. Jedná se o řešení nabízející vysokou škálovatelnost a vysokou dostupnost, zejména u přístupu k datům pro čtení. Data jsou synchronizována mezi několika servery a díky tomu je možné jednotlivé požadavky klientů rozdělit mezi několik nodů a tím dosáhnout vyššího výkonu aplikace.

Snapshot Replikace

Snapshot replikace může fungovat zcela samostatně, ale je také základem pro další druhy replikací. Při tvorbě snapshotu dochází ke kopii databázových objektů, dle nastavení publikace. Pokud chceme vytvořit publikaci pro replikaci, musíme v management studiu použív volbu New Publication. SQL umí vytvořit i publikaci pro Oracle servery, je tedy možné data synchronizovat i napříč platformami.

sql replikace 01.png

Po zvolení položky New publication je nutné vybrat databázi, ze které budeme replikovat data a jednotlivé objekty (tabulky, pohledy, funkce, procedury atd). U tabulek je následně možné provést vertikální a horizontální filtering, můžeme si tedy zvolit publikované sloupce a řádky, které bude možné replikovat na další servery. Po nastavení parametrů pro zabezpečení je publikace hotová a snapshot replikace připravená.

sql replikace 02.png

U vytvořené publikace je k dispozici celá škála konfiguračních parametrů, od nastavení expirace snapshotu, přes zabezpečení, možnosti uložit snapshot na FTP server a mnoho jiných.

sql replikace 05.png

Důležitou volbou, která byla v průběhu konfigurace replikace k dispozici je volba tzv. distribučního serveru. Tato konfigurace je i dostupná přímo přes management studio.

sql replikace 03.png

Distribuční server hraje klíčovou roli při přenosu dat. Na distribučním serveru jsou uložena data, která jsou připravena pro jednotlivé subscriber servery. Jedna z úloh v SQL Agentovi, která je odpovědná za vytváření snapshotů je ukládá přímo na distribuční server. Pro malé scénáře je publishing a distribuční server jeden a ten stejný, ale pro komplexní konfigurace je možné tyto role od sebe navzájem oddělit a tím také lépe hlídat zátěž na jednotlivých serverech (rolích v replikaci). Na distribučním serveru je v SQL Agentovi připravená další plánovaná úloha, která má za úkol přenést data z distribučního serveru na všechny subscriber servery. Subscriber server role je cílový server, na který replikujeme data.

Při konfiguraci subscriber serveru potřebujeme zvolit publikaci na publikačním serveru, kterou chceme na tento server replikovat.

sql replikace 04.png

Tato publikace obsahuje námi vybrané objekty z publisher serveru, tedy tabulky, pohledy, procedury, funkce, indexované pohledy atd. Jakmile vybereme cílovou databázi (máme možnost vytvořit novou přímo z konfigurace subscription)a nastavíme zabezpečení replikace, máme skoro hotovo. Snapshot replikace je plánována na zvolený interval. Všechny změny budou tedy promítnuty do cílové databáze až po uplynutí intervalu, který si zvolíme. Protože snapshot replikace zpravidla dosahuje větších velikostí je vhodné ji plánovat na takovou denní dobu, kdy jsou naše servery co nejméně zatíženy, a také kdy konektivita mezi našimi servery je dostatečná na rychlý přenost těchto dat. Každý další snapshot vždy přenáší celou publikaci (tedy zvolené objekty v databázi) nezávisle na faktu, jestli byla data od poslední tvorby snapshotu změněna, či nikoli.

Závěrem

Cílem prvního dílu bylo představit základní pojmy z oblasti replikací a popsat rozdíly mezi třemi dostupnými druhy replikací. Protože snapshot replikace je základem všech dalších replikací, ukázali jsme si základní nastavení a možnosti vytvoření publikace, subscription a možnosti distribution serveru. V dalších dílech tohoto seriálu si společně detailně představíme zbývající replikace, včetně jejich dalších nastavení.