Przywracanie bazy danych z kopii zapasowej nie należy do najprzyjemniejszych. Do tego, jeśli nasza baza jest wysoko dostępna sprawa jeszcze bardziej się komplikuję. Oprócz pamiętania o odpowiedniej sekwencji przywracania plików kopii dochodzi poprawna sekwencja usuwania, odtwarzania i dodawania bazy do Availability Groups.

Poniżej 6 kroków które należy wykonać aby status Availability Group po przywróceniu był poprawny (Healthy):

  1. Usunięcie bazy danych z Availability Group na instancji Primary
  2. Przywrócenie kopii pełnej, następnie w zależności o polityki kopii zapasowych kopie różnicową i na końcu logi transakcyjne
  3. Dodanie przywróconą baze danych do Availability Group
  4. Wykonanie pełnej kopii zapasowej na instancji Primary
  5. Przywrócenie bazy (z punktu 4) na instancji Secondary z opcją WITH NORECOVERY (i REPLACE)
  6. Dodanie bazy na instancji Secondary do Availability Group

W punkcie 4 sugeruję wykonanie pełnej kopii, co nie jest konieczne. Możesz na instancji Secondary odtworzyć bazę danych z tych samych kopii co na instancji Primary. Jeden warunek, trzeba pamiętać o wykonaniu kopii logu transakcyjnego z instancji Primary, aby wykonać restore na serwerze Secondary. Pamiętając wciąż o NORECOVERY.

Jeśli zapomnimy o tej dodatkowej kopii otrzymamy błąd jak poniżej.

Msg 1408, Level 16, State 211, Line 30
The remote copy of database „NewTestAG” is not recovered far enough to enable database mirroring or to join it to the availability group. You need to apply missing log records to the remote database by restoring the current log backups from the principal/primary database.

Jaka jest tego zaleta? Nie potrzebujemy ani dodatkowej przestrzeni i czasu na wykonanie pełnej kopii z instancji Primary.

Na konieć, dodatkowo dwa skrypt – T-SQL i PowerShell. Jeden i drugi wykonują identyczną sekwencje kroków.

Mateusz Nadobnik

Z pasją poświęcam czas na zdobywanie wiedzy w zakresie szeroko rozumianej Data Platform. Zachwycony językiem skryptowym Windows PowerShell. Swoją wiedzę, doświadczenia i spostrzeżenia opisuję na blogu.

read more