Niektórzy z moich współpracowników byli zaskoczeni, gdy powiedziałem im, że mogę wykonać kopię zapasową bazy danych SQL Server, gdy jest ona uruchomiona, i zastanawiałem się, jak to możliwe. Wiem, że SQL Server jest w stanie wykonać kopię zapasową bazy danych, gdy jest ona nadal online, ale nie jestem pewien, jak wyjaśnić, dlaczego jest to możliwe. Moje pytanie brzmi: jaki to ma wpływ na bazę danych?
Jeśli dane zostaną zmodyfikowane (przez wstawienie, aktualizację lub usunięcie) podczas wykonywania kopii zapasowej, czy kopia zapasowa będzie zawierać te zmiany, czy też zostanie później dodana do bazy danych?
Zakładam, że plik dziennika odgrywa tutaj ważną rolę, ale nie jestem pewien, jak to zrobić.
edycja: Dla przypomnienia, moja sprawa dotyczy tworzenia kopii zapasowych baz danych przy użyciu SQL Server Agent i skutków modyfikacji baz danych podczas tego procesu.
źródło
Podczas tworzenia kopii zapasowej zostanie utworzona migawka dla bazy danych, a dane zostaną odczytane w celu wykonania kopii zapasowej z tej migawki. Rzeczywiste operacje bazy danych na żywo nie wpłyną na operację tworzenia kopii zapasowej.
źródło
Nie można go po prostu skopiować, ponieważ mogą istnieć zmiany w połowie kopii bazy danych, jak wspomniano w pytaniu.
Należy to zrobić z agentami, którzy znają funkcjonalność bazy danych, a następnie wykonują „migawkę” za pomocą funkcji systemu operacyjnego lub mogą użyć narzędzia do zrzucenia bazy danych w bezpieczny stan (np. Mysqldump, jeśli używa mysql).
W przeciwnym razie otrzymasz kopię zapasową, która może zostać uszkodzona i nie poznasz jej, dopóki jej nie przywrócisz. Myślę, że Joel i Jeff ostatnio rozmawiali o tym trochę w ostatnim podcastu StackOverflow.
I masz rację, że plik dziennika jest ważny. Jeśli plik dziennika / dziennika nie jest zsynchronizowany z rzeczywistymi danymi, przywrócenie plików spowoduje uszkodzenie.
Sprowadza się do kopii zapasowej wykonanej przy użyciu bezpiecznego stanu bazy danych, albo za pośrednictwem agenta obsługującego bazę danych, albo aplikacji migawkowej, albo aplikacji, która wie, jak prawidłowo podłączyć bazę danych do upuszczania danych bez ingerowania w aktualizacje podczas zrzutu danych, a następnie tworzenia kopii zapasowej plik wynikowy.
źródło
Jest tak wiele sposobów, aby to zrobić (ogólnie mówiąc, nie mam pojęcia, jak normalnie robi to MSSQL), np. Po prostu zrzucając bazę danych do pliku, jednocześnie dodając wszelkie zmiany do pliku dziennika, który jest zatwierdzany po zakończeniu zrzutu - w celu użycia migawki specyficznej dla systemu plików funkcje takie jak VSS w systemie Windows.
źródło
Możesz wykonać kopię zapasową znaną tylko jako kopia. Nie wpływa na bazę danych w trybie online
źródło