După trecerea la baza de date a oglinzilor, ca urmare a rezolvării eșecului bazei de date principale, baza de date oglindă devine cea principală. În această secțiune, termenii "primar" și "oglindă" se referă întotdeauna la baza de date sursă primară și oglindă, respectiv.
Când utilizați replicarea împreună cu oglindirea unei baze de date, rețineți următoarele cerințe și reguli.
Bazele de date primare și oglindă trebuie să partajeze distribuitorul. Se recomandă ca acesta să fie un distribuitor la distanță care oferă o mai mare rezistență la eșecuri în situațiile în care apare o eroare neplanificată asupra editorului în caz de eșec.
Metadatele și obiectele care există în afara bazei de date nu sunt copiate în oglindă. Acest lucru se aplică în cazul conectărilor, al locurilor de muncă, al serverelor asociate și așa mai departe. Dacă aveți nevoie de metadate și obiecte într-o bază de date oglindită, trebuie să le copiați manual. Pentru informații suplimentare, consultați Gestionarea numelor de conectare și a sarcinilor după schimbarea rolurilor (SQL Server).
Configurarea replicării și oglindirea bazei de date constă în cinci etape. Fiecare pas este descris în următoarea secțiune.
Configurați oglindirea bazei de date.
Configurați oglinda pentru utilizare cu baza de date principală a aceluiași distribuitor.
Configurați agenții de replicare pentru a migra într-o bază de date cu oglindă în eventualitatea unei preluări de erori.
Adăugați o bază de date primară și oglindită în monitorul de replicare.
Etapele 1 și 2 pot fi efectuate în ordine inversă.
Se recomandă utilizarea unui distribuitor la distanță. Pentru informații suplimentare despre configurarea distribuției, consultați Configurarea distribuției.
Baza de date poate fi activată pentru a utiliza publicațiile instantanee, publicarea de tranzacții sau pentru a îmbina publicațiile. Pentru bazele de date cu oglindă care conțin mai mult de un tip de publicație, baza de date care utilizează procedura sp_replicationdboption ar trebui activată pentru ambele tipuri de publicații din același nod. De exemplu, ați putea executa următoarele apeluri de procedură memorată în baza de date principală:
Pentru mai multe informații despre crearea publicațiilor, consultați Editarea datelor și a obiectelor bazei de date.
Configurați distribuția pentru baza de date oglindită. Specificați numele bazei de date oglindă ca nume de editor și specificați același director distribuitor și instantaneu utilizat de baza de date primară. De exemplu, dacă configurați replicarea utilizând proceduri stocate, rulați sp_adddistpublisher pe distribuitor și apoi sp_adddistributor pe serverul mirror. Pentru sp_adddistpublisher, procedați în felul următor:
setați valoarea parametrului @publisher la numele de rețea al oglinzii;
setați valoarea parametrului @working_directory la numele folderului instantaneu utilizat de baza de date principală.
Specificați numele oglinzii în parametrul agent -PublisherFailoverPartner. Această opțiune este necesară pentru ca următorii agenți să determine oglinda după eșec:
agent instantaneu (pentru toate publicațiile);
cititorul de jurnal (pentru toate publicațiile de tranzacții);
cititorul de coadă (pentru publicarea tranzacțiilor care acceptă abonamentele actualizate de cozi);
agentul de îmbinare (pentru abonamentele de fuziune);
SQL Server listener replication (replisapi.dll: pentru abonamentele de fuziune sincronizate cu sincronizarea web);
controlul ActiveX pentru combinarea SQL (pentru abonamentele de îmbinare sincronizate cu acest control).
Agentul de distribuție și controlul ActiveX al distribuției nu au această opțiune, deoarece nu se conectează la editor.
Modificările setărilor agentului intră în vigoare data viitoare când agentul este pornit. Dacă agentul rulează în mod continuu, trebuie să opriți și să reporniți agentul. Parametrii pot fi setați în profilurile agenților sau din linia de comandă. Pentru mai multe informații, consultați:
Este recomandat să adăugați parametrul -PublisherFailoverPartner la profilul agentului și apoi să specificați numele oglinzii din profil. De exemplu, dacă configurați replicarea folosind procedurile stocate:
Dacă serverul oglindă este activ:
dacă apare o eroare de agent, această eroare este afișată numai în nodul principal și nu este afișată în nodul oglindă;
dacă serverul principal nu este disponibil, atunci listele identice de publicații sunt afișate în site-urile principale și în oglindă. Observarea trebuie efectuată numai pentru publicațiile de pe nodul oglindă.
Dacă utilizați proceduri stocate sau obiecte RMO pentru a administra replicarea pe oglindă, pentru instanțele în care este specificat numele editorului, trebuie să specificați numele instanței pe care baza de date este activată pentru replicare. Pentru a determina numele corespunzător, utilizați funcția publishingservername.
În unele cazuri, cum ar fi sp_addpublication. Parametrul @publisher este acceptat numai pentru editori excelenți SQL Server; astfel, nu se aplică la oglindirea bazei de date SQL Server.
Pentru a sincroniza abonamentul în mediul Management Studio după procesul de eșec, trebuie să sincronizați abonamentul la cerere de la abonat și să sincronizați abonamentele forțate de la editorul activ.
Comportamentul replicării când imaginea oglindă este ștearsă
Următorul tabel descrie comportamentul agentului cititor de jurnale pentru diferite moduri de oglindire a bazei de date.
Comportamentul agentului de citire a jurnalului când baza de date oglindă nu este disponibilă
Mod de protecție înaltă cu resetare automată
Dacă oglinda nu este disponibilă, cititorul de jurnale trimite comenzile către baza de date a distribuitorului. În cazul unei căderi de erori, baza de date principală nu va putea trece la oglindă până când baza de date oglindă revine în modul "on-line" și primește toate tranzacțiile din baza de date principală.
Dacă oglinda nu este disponibilă, baza de date principală este executată fără suport (adică fără o bază de date oglindă). Cu toate acestea, agentul cititor de jurnal replică numai acele tranzacții care sunt scrise în baza de date oglindă. Dacă serviciul este forțat și serverul oglindă își asumă rolul principal, cititorul de jurnal va începe să lucreze asupra oglinzii și va colecta noi tranzacții pe acesta.
Rețineți că întârzierea replicării va crește dacă baza de date oglindită nu se află în spatele bazei de date principale din modificări.
Mod de siguranță înaltă fără resetare automată
Se garantează că toate tranzacțiile angajate vor fi scrise pe discul serverului oglindă. Cu toate acestea, cititorul de jurnal replică numai acele tranzacții înregistrate pe oglindă. Dacă oglinda nu este disponibilă, serverul principal interzice activitățile suplimentare din baza de date. Prin urmare, Log Reader nu are tranzacții pentru replicare.