mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/.../nosql/vježba_4_replikacija.docx · web viewagent...

16
Vježba: Kreiranje replikacije za MS SQL Server 2016 Transakcijska replikacija Transakcijska replikacija obično započinje snimkom početnog stanja objekata baze podataka koja se publicira. Čim se napravi početna snimka, naknadne izmjene podataka i izmjene shema koje su napravljene u Izdavaču obično se dostavljaju Pretplatniku u trenutku kada se pojave (u gotovo stvarnom vremenu). Promjene podataka primjenjuju se na Pretplatnika u istom redoslijedu i unutar istih granica transakcija kao što su se dogodile u Izdavaču; stoga je u publikaciji zajamčena konzistentnost transakcija. Transakcijska replikacija se obično koristi u okruženjima poslužitelj-poslužitelj i prikladna je u svakom od sljedećih slučajeva: Želite da se inkrementalne promjene šire pretplatnicima u trenutku njihovog pojavljivanja. Aplikacija zahtijeva nisku latenciju između vremenskih promjena koje su izvršene na izdavaču i promjena koje stižu do pretplatnika. Aplikacija zahtijeva pristup srednjim podacima stanja. Na primjer, ako se redak mijenja pet puta, transakcijska replikacija omogućuje aplikaciji da odgovori na svaku promjenu (kao što je okidanje okidača), a ne samo da se neto podaci promijene u redak. Izdavač ima vrlo veliku količinu aktivnosti umetanja, ažuriranja i brisanja. Izdavač ili pretplatnik je baza podataka koja nije SQL Server, kao što je Oracle. Pretplatnici na transakcijske publikacije prema zadanim se postavkama trebaju tretirati kao samo za čitanje jer se promjene ne šalju natrag izdavaču. Međutim, transakcijska replikacija nudi opcije koje dopuštaju ažuriranje kod Pretplatnika. Kako funkcionira transakcijska replikacija Transakcijsku replikaciju implementira SQL Server Snapshot Agent, agent za čitanje dnevnika i agent za distribuciju. Agent za snimanje priprema snimljene datoteke koje sadrže shemu i podatke objavljenih tablica i objekata baze podataka, pohranjuju datoteke u mapu za snimanje i snima poslove sinkronizacije u distribucijsku bazu podataka na Distributeru.

Upload: others

Post on 27-Dec-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Vježba: Kreiranje replikacije za MS SQL Server 2016

Transakcijska replikacija

Transakcijska replikacija obično započinje snimkom početnog stanja objekata baze podataka koja se publicira. Čim se napravi početna snimka, naknadne izmjene podataka i izmjene shema koje su napravljene u Izdavaču obično se dostavljaju Pretplatniku u trenutku kada se pojave (u gotovo stvarnom vremenu). Promjene podataka primjenjuju se na Pretplatnika u istom redoslijedu i unutar istih granica transakcija kao što su se dogodile u Izdavaču; stoga je u publikaciji zajamčena konzistentnost transakcija.

Transakcijska replikacija se obično koristi u okruženjima poslužitelj-poslužitelj i prikladna je u svakom od sljedećih slučajeva:

Želite da se inkrementalne promjene šire pretplatnicima u trenutku njihovog pojavljivanja. Aplikacija zahtijeva nisku latenciju između vremenskih promjena koje su izvršene na izdavaču

i promjena koje stižu do pretplatnika. Aplikacija zahtijeva pristup srednjim podacima stanja. Na primjer, ako se redak mijenja pet

puta, transakcijska replikacija omogućuje aplikaciji da odgovori na svaku promjenu (kao što je okidanje okidača), a ne samo da se neto podaci promijene u redak.

Izdavač ima vrlo veliku količinu aktivnosti umetanja, ažuriranja i brisanja. Izdavač ili pretplatnik je baza podataka koja nije SQL Server, kao što je Oracle.

Pretplatnici na transakcijske publikacije prema zadanim se postavkama trebaju tretirati kao samo za čitanje jer se promjene ne šalju natrag izdavaču. Međutim, transakcijska replikacija nudi opcije koje dopuštaju ažuriranje kod Pretplatnika.

Kako funkcionira transakcijska replikacija

Transakcijsku replikaciju implementira SQL Server Snapshot Agent, agent za čitanje dnevnika i agent za distribuciju. Agent za snimanje priprema snimljene datoteke koje sadrže shemu i podatke objavljenih tablica i objekata baze podataka, pohranjuju datoteke u mapu za snimanje i snima poslove sinkronizacije u distribucijsku bazu podataka na Distributeru.

Agent čitača dnevnika nadzire dnevnik transakcija svake baze podataka konfiguriranu za transakcijsku replikaciju i kopira transakcije označene za replikaciju iz dnevnika transakcija u distribucijsku bazu podataka, koja djeluje kao pouzdan red čekanja za pohranu i prosljeđivanje. Agent distribucije kopira početne datoteke snimaka iz mape trenutnih snimki i transakcije koje se nalaze u tablicama distribucijske baze podataka za pretplatnike.

Inkrementalne promjene koje su napravljene u Izdavaču protječu Pretplatnicima prema rasporedu Distributivnog agenta, koji se može izvoditi neprekidno za minimalno kašnjenje ili u zakazanim intervalima. Budući da se izmjene podataka moraju izvršiti na izdavaču (kada se transakcijska replikacija koristi bez trenutnog ažuriranja ili opcija ažuriranja u redu čekanja), sukobi ažuriranja se izbjegavaju. Na kraju će svi pretplatnici postići iste vrijednosti kao i izdavač. Ako se trenutačne nadopune ili opcije ažuriranja u redu čekanja koriste s replikacijom transakcija, ažuriranja se mogu izvršiti na Pretplatniku, a kod ažuriranja s čekanjem može doći do sukoba.

Sljedeća ilustracija prikazuje glavne komponente transakcijske replikacije.

Početni skup podataka

Prije nego što novi pretplatnik transakcijskih replikacija može primiti inkrementalne promjene od izdavača, pretplatnik mora sadržavati tablice s istom shemom i podacima kao tablice u izdavaču. Početni skup podataka obično je snimak koji kreira Agent snimaka i distribuira i primjenjuje Agent za distribuciju. Početni skup podataka također se može isporučiti putem sigurnosne kopije ili na druge načine, kao što su usluge integracije sustava SQL Server.

Kada se snimke distribuiraju i primjenjuju na pretplatnike, to utječe samo na one pretplatnike koji čekaju početne snimke. Ostali pretplatnici na tu publikaciju (oni koji su već pokrenuti) nisu pod utjecajem.

Istodobna obrada snimke

Replikacija snimke stavlja dijeljene brave na sve tablice objavljene kao dio replikacije tijekom trajanja generiranja snimke. To može spriječiti izvršavanje ažuriranja na tablicama objavljivanja. Istovremena obrada snimki, zadana s transakcijskom replikacijom, ne drži brave za dijeljenje tijekom cijele generacije snimaka, što omogućuje korisnicima da nastave raditi neprekidno dok replikacija stvara početne snimke.

Agent za snimanje

Postupci kojima agent za snimke implementira početnu snimku u transakcijskoj replikaciji isti su postupci koji se koriste u replikaciji snimke (osim kako je gore navedeno u vezi s istovremenom obradom snapshota).

Nakon generiranja snimljenih datoteka, možete ih pregledati u mapi za snimanje pomoću programa Microsoft Windows Explorer.

Izmjena podataka i agenta čitača dnevnika

Agent čitača dnevnika radi na distributeru; obično se izvodi neprekidno, ali može se izvoditi i prema rasporedu koji uspostavite. Prilikom izvršavanja, agent za čitanje dnevnika najprije čita dnevnik transakcija objavljivanja (isti dnevnik baze podataka koji se koristi za praćenje i obnavljanje transakcija tijekom redovitih operacija sustava SQL Server Database Engine) i identificira sve izjave INSERT, UPDATE i DELETE, ili druge izmjene podataka u transakcijama koje su označene za replikaciju. Zatim, agent kopira te transakcije u skupinama u distribucijsku bazu podataka kod distributera. Agent čitača dnevnika koristi internu pohranjenu proceduru sp_replcmds da bi dobio sljedeći skup naredbi označenih za replikaciju iz dnevnika. Distribucijska baza podataka tada postaje red za pohranu i prosljeđivanje iz koje se promjene šalju pretplatnicima. Samo distribuirane transakcije šalju se u distribucijsku bazu podataka.

Nakon što je cijela grupa transakcija uspješno napisana u distribucijsku bazu podataka, ona je predana. Nakon predavanja svake serije naredbi Distributeru, Agent za čitanje dnevnika poziva sp_repldone da označi gdje je replikacija zadnja dovršena. Konačno, agent označava redove u dnevniku transakcija koji su spremni za čišćenje. Redovi koji još uvijek čekaju da budu replicirani ne čiste se.

Naredbe transakcija pohranjuju se u distribucijsku bazu podataka dok se ne prenesu svim pretplatnicima ili dok se ne dostigne maksimalno razdoblje zadržavanja distribucije. Pretplatnici primaju transakcije u istom redoslijedu u kojem su primijenjeni na izdavaču.

Agent distribucije

Distribucijski agent radi kod distributera za pretplatu na push i kod pretplatnika za pretplatu povlačenjem. Agent premješta transakcije iz distribucijske baze podataka u Pretplatnika. Ako je pretplata označena za provjeru valjanosti, Distributer također provjerava jesu li podaci na podudaranju izdavača i pretplatnika.

Vrste objavljivanja

Transakcijska replikacija nudi četiri vrste objavljivanja:

Vrsta publikacije Opis

Standardna transakcijska objava

Prikladno za topologije u kojima su svi podaci na Pretplatniku samo za čitanje (transakcijska replikacija to ne provodi kod Pretplatnika).Standardne transakcijske publikacije standardno se stvaraju kada se koriste Transact-SQL ili Objekti upravljanja replikacijom (RMO). Kada koristite Čarobnjak za nove publikacije, oni se kreiraju odabirom publikacije Transakcije na stranici Vrsta publikacije.

Transakcijska publikacija s ažuriranim pretplatama

Značajke ove vrste publikacije su:- Svaka lokacija ima identične podatke, s jednim izdavačem i jednim pretplatnikom.- Moguće je ažurirati retke na Pretplatniku-Ova topologija je najprikladnija za poslužiteljska okruženja koja zahtijevaju visoku dostupnost i skalabilnost čitanja.

Topologija peer-to-peer Značajke ove vrste publikacije su:- Svaka lokacija ima identične podatke i djeluje kao Izdavač i Pretplatnik.- Isti se redak može mijenjati samo na jednom mjestu.- Podržava otkrivanje sukoba- Ova topologija je najprikladnija za poslužiteljska okruženja koja zahtijevaju visoku dostupnost i skalabilnost čitanja.

Dvosmjerna transakcijska replikacija

Značajke ove vrste publikacije su:Dvosmjerna replikacija slična je replikaciji Peer-to-Peer, ali ne pruža rješenje sukoba. Osim toga, dvosmjerna replikacija je ograničena na 2 poslužitelja.

Vodič: Konfiguriranje replikacije između dva potpuno povezana poslužitelja (transakcijski)

Što ćete naučiti

Ovaj vodič vas uči da objavljujete podatke iz jedne baze podataka u drugu korištenjem transakcijske replikacije.

U ovom vodiču naučit ćete kako:

Stvorite izdavača putem replikacije transakcija. Napravite pretplatnika za transakcijski izdavač. Potvrdite pretplatu i izmjerite kašnjenje.

Konfigurirajte izdavača za replikaciju transakcija

U ovom odjeljku kreirate transakcijsku publikaciju koristeći SQL Server Management Studio za objavljivanje filtriranog podskupa tablice proizvoda u uzorku baze podataka AdventureWorks2012. Također dodajete prijavu SQL poslužitelja koju koristi Agent distribucije na pristupni popis publikacije (PAL).

Napravite publikaciju i definirajte članke

Povežite se s izdavačem u programu SQL Server Management Studio, a zatim proširite čvor poslužitelja.

Desnom tipkom miša kliknite SQL Server Agent i odaberite Start. Agent SQL poslužitelja trebao bi biti pokrenut prije stvaranja publikacije. Ako ovaj korak ne pokrene vašeg agenta, morat ćete to učiniti ručno iz programa SQL Server Configuration Manager.

Proširite mapu Replikacija, desnom tipkom miša kliknite mapu Lokalne publikacije i odaberite Nova objava. Ovaj korak pokreće čarobnjak za novu objavu:

Na stranici baze podataka publikacije odaberite AdventureWorks2012, a zatim odaberite Dalje.

Na stranici Vrsta publikacije odaberite Objava transakcije, a zatim odaberite Sljedeće:

Na stranici Filter tablica redaka odaberite Dodaj.

U dijaloškom okviru Dodaj filtar odaberite stupac SafetyStockLevel. Odaberite desnu strelicu da biste dodali stupac u izraz filtra WHERE klauzule filtra. Zatim ručno upišite u WHERE modifikator klauzule kako slijedi:

WHERE [SafetyStockLevel] < 500

Odaberite U redu, a zatim odaberite Dalje.

Označite potvrdni okvir Napravi odmah snimku i zadržite snimku dostupnu za inicijalizaciju pretplata i odaberite Sljedeće:

Na stranici Sigurnost agenta poništite potvrdni okvir Koristi sigurnosne postavke iz agenta za snimanje.

Odaberite Sigurnosne postavke za agenta snimka. Unesite <Publisher_Machine_Name> repl_snapshot u okvir Process account, unesite lozinku za ovaj račun, a zatim odaberite OK.

Ponovite prethodni korak da biste postavili <Publisher_Machine_Name> repl_logreader kao račun procesa za agent čitača dnevnika. Zatim odaberite U redu.

Na stranici Dovršenje čarobnjaka u okvir Naziv publikacije upišite AdvWorksProductTrans i odaberite Završi:

Nakon stvaranja publikacije odaberite Zatvori da biste dovršili čarobnjak.

Ako se SQL Server Agent ne pokrene prilikom pokušaja izrade publikacije, možda ćete naići na sljedeću pogrešku. Ova pogreška označava da je vaša publikacija uspješno izrađena, ali agent za snimanje nije mogao pokrenuti. Ako se to dogodi, morat ćete pokrenuti agenta SQL poslužitelja, a zatim ručno pokrenuti agent snimka. Sljedeći odjeljak daje upute.

Pogledajte status generacije snimaka

Povežite se s izdavačem u programu SQL Server Management Studio, proširite čvor poslužitelja, a zatim proširite mapu Replikacije.

U mapi Lokalne publikacije desnom tipkom miša kliknite AdvWorksProductTrans, a zatim odaberite Prikaži status agenta za snimke:

Dodajte prijavu Distributivnog agenta u PAL

Povežite se s izdavačem u programu SQL Server Management Studio, proširite čvor poslužitelja, a zatim proširite mapu Replikacije.

U mapi Lokalne publikacije desnom tipkom miša kliknite AdvWorksProductTrans, a zatim odaberite Svojstva. Pojavljuje se dijaloški okvir Properties (Svojstva).

a. Odaberite stranicu s popisom pristupa publikaciji i odaberite Dodaj.

b. U dijaloškom okviru Dodavanje pristupa publikaciji odaberite <Publisher_Machine_Name> repl_distribution i odaberite OK.

Stvorite pretplatu na objavljivanje transakcija

U ovom odjeljku dodajete pretplatnika u publikaciju koju ste prethodno stvorili. Ovaj vodič koristi udaljenog pretplatnika (NODE2 SQL2016), ali možete i dodavati pretplatu lokalno izdavaču.

Stvorite pretplatu

Povežite se s izdavačem u programu SQL Server Management Studio, proširite čvor poslužitelja, a zatim proširite mapu Replikacije.

U mapi Lokalne publikacije desnom tipkom miša kliknite publikaciju AdvWorksProductTrans, a zatim odaberite Nove pretplate. Pokreće se novi čarobnjak za pretplatu:

Na stranici Publikacija odaberite AdvWorksProductTrans, a zatim odaberite Next:

Na stranici Lokacija agenta distribucije odaberite Pokreni sve agente na Distributeru, a zatim odaberite Sljedeće. Za više informacija o pretplati za pull i push, pogledajte Pretplatite se na publikacije.

Na stranici Pretplatnici, ako ime pretplatničke instance nije prikazano, odaberite Dodaj pretplatnika, a zatim s padajućeg popisa odaberite Dodaj pretplatnika SQL poslužitelja. Ovaj korak otvara dijaloški okvir Povezivanje s poslužiteljem. Unesite ime instance pretplatnika, a zatim odaberite Poveži.

Nakon što je pretplatnik dodan, označite potvrdni okvir pored imena instance vašeg pretplatnika. Zatim odaberite Nova baza podataka u bazi pretplate.

Pojavit će se dijaloški okvir Nova baza podataka. Unesite ProductReplica u okvir Naziv baze podataka, odaberite U redu, a zatim odaberite Sljedeće:

Na stranici Security Agent Security odaberite gumb Elipsis (…). Unesite <Publisher_Machine_Name> ime_primjene u okvir Process process, unesite zaporku za ovaj račun, odaberite OK, a zatim odaberite Next.

Odaberite Završi da biste prihvatili zadane vrijednosti na preostalim stranicama i dovršili čarobnjak.

Postavite dozvole baze podataka na pretplatnika

Povežite se s pretplatnikom u programu SQL Server Management Studio. Proširite Sigurnost, desnom tipkom miša kliknite Prijava, a zatim odaberite Nova prijava.

a. Na stranici Općenito, u odjeljku Ime za prijavu, odaberite Traži i dodajte prijavu za <Subscriber_Machine_Name> repl_distribution.

b. Na stranici Korisnička mapiranja, dodijelite članstvo db_owner za bazu podataka ProductReplica.

Odaberite U redu da biste zatvorili dijaloški okvir Nova prijava.

Prikaz statusa sinkronizacije pretplate

Povežite se s izdavačem u programu SQL Server Management Studio. Proširite čvor poslužitelja, a zatim proširite mapu Replikacija.

U mapi Lokalne publikacije proširite publikaciju AdvWorksProductTrans, desnom tipkom miša kliknite pretplatu u bazi podataka ProductReplica, a zatim odaberite Prikaz statusa sinkronizacije. Pojavljuje se trenutačni status sinkronizacije pretplate: