Muszę wykonać kopię zapasową 10-20 baz danych SQL Server 2008 R2 o rozmiarach między 10-50 GB, podczas gdy są one online i są używane jednocześnie przez jedną aplikację dla przedsiębiorstw. Muszę też przywrócić je do stanu, który jest w dużej mierze zsynchronizowany we wszystkich bazach danych (mogę sobie pozwolić na kilka sekund desynchronizacji między bazami danych). Celem jest przechwycenie danych produkcyjnych dla środowisk QA / DEV.
Chciałbym nie wymagać, aby bazy danych działały w trybie pełnego odzyskiwania, i zaproponować metodę tworzenia kopii zapasowych, która jest dedykowana do przechwytywania danych w środowiskach kontroli jakości i pozostaje niezależna od głównego procesu tworzenia kopii zapasowych, który nie jest pod moją kontrolą.
Dla moich klientów zrobienie 20 pełnych kopii zapasowych po około 30 GB zajmie 1-2 godziny. To sprawia, że wykonywanie pełnych kopii zapasowych sekwencyjnie jest niedopuszczalne, ponieważ bazy danych byłyby zbyt zsynchronizowane podczas uruchamiania w prostym odzyskiwaniu.
Szukam pomysłu lepszego niż te:
IDEA 1: Migawka na poziomie SAN dysków VM. xcopy MDF / LDF z migawki.
Gdy skopiowane pliki zostaną dołączone do innej instancji serwera, proces jej odzyskiwania powinien wygenerować spójne bazy danych, które są migawkami prawie jednocześnie.
Googling przekonał mnie, że to zły pomysł, przynajmniej dlatego, że mogę uzyskać desync vs. master / msdb / etc.
IDEA 2: Zorganizuj złożone tworzenie kopii zapasowych i przywracanie synchronizacji we wszystkich bazach danych
Wymaga to ode mnie, aby bazy danych działały w trybie pełnego odzyskiwania, czego nie chcę. Rozpocznij równoległe tworzenie kopii zapasowych dla wszystkich baz danych na długo przed terminem (T0). Po osiągnięciu T0 wykonaj kopię zapasową wszystkich dzienników (powinno to zająć najwyżej kilka minut). Weź wynikową liczbę kopii zapasowych i spróbuj je przywrócić i przewiń dzienniki do przodu / do tyłu, aby uzyskać nieco spójny stan w bazach danych względem T0.
Wymaga to dużo planowania i skryptów, aby można było z niego korzystać niezawodnie, więc dołożyłem wszelkich starań, aby tego uniknąć.
Czy brakuje mi jakiegoś innego rozwiązania?
PS1: Chciałbym móc korzystać z migawek db . Chodziło o to, aby zainicjować migawkę na każdym db (co powinno potrwać kilka sekund), a następnie w pełni wykonać kopię zapasową każdego z nich w ciągu kolejnych minut / godzin. Następnie przywróć je wszystkie na innym serwerze i przywróć każdy z nich do migawki. AFAIK ten scenariusz nie jest możliwy, ponieważ nie można wykonać kopii zapasowej migawek wraz z bazą danych. Można je tylko przywrócić na miejscu, na serwerze, na którym zostały utworzone. Ponadto wymagają wersji Enterprise, której nie mam dla wszystkich klientów.
PS2: Jeśli znasz rozwiązanie innej firmy, które może tworzyć synchronizowane kopie zapasowe między bazami danych, proszę o tym wspomnieć.