none
Вопрос по SQL Server VSS Writer RRS feed

  • Вопрос

  • Здравствуйте, имеется виртуальная машина vmware с mssql 2012

    Интересует вопрос по службе SQL Server VSS Writer. У меня проводится два типа архивации. Архивация виртуальной машины и архивация непосредственно баз данных SQL. Архивация баз данных работает с дифференциальными копиями, что позволяет экономить место архивов. Проблема возникает, когда архивируется виртуальная машина. После архивации виртуальной машины, перестают работать дифференциальные копии, приходится делать полную копию. После ряда тестов выяснил, что при архивации виртуальной машины служба SQL Server VSS Writer сбрасывает информацию по дифференциальным копиям. Службу остановил и архивы теперь делаются в штатном режиме после копировании виртуальной машины.

    Вопрос теперь остался по SQL Server VSS Writer, что именно делает эта служба? По описанию я предполагаю, что если использовать теневое копирование тома, то данная служба позволяет вносить в теневую копию базы данных SQL?

    13 февраля 2014 г. 11:41

Ответы

  • Добрый день.

    Все верно.

    Служба «Модуль записи SQL» позволяет во время работы SQL Server разрешить программам резервного копирования Windows копирование файлов данных SQL Server.

    При архивации виртуальной машины (в вашем случае vmware) служба "SQL Server VSS Writer" автоматически запускается и служба архивирования виртуальной машины получает доступ к файлам данных SQL. В результате получается новая полная копия базы данных, происходит разрыв в цепочке полная копия базы - разностные (дифференциальные) копии базы, дифференциальные копии просто не видят новую полную копию базы данных, выполненную посредством архивирования виртуальной машины.   

    Если служба "SQL Server VSS Writer" не запущена, то у программ резервного копирования, работающих в Windows, нет доступа к файлам данных. 

    Также можно отключить вызов службы "SQL Server VSS Writer" в VMware Tools  

    Disabling specific VSS writers with VMware Tools (1031200)

    Удачи 

    13 февраля 2014 г. 12:29
  • Добрый день.

    Как уже говорилось при архивации виртуальной машины без запущенной службы SQL VSS Writer у программы резервного копирования виртуальной машины нет доступа к базе данных. Поэтому на транзакции это никак не повлияет. Чтобы быть уверенным что после восстановления виртуальной машины базы данных были в нормальном (на момент создания копии) состоянии необходимо к сценарию резервирования баз банных добавить еще и создание резервных копий лога транзакций (при модели восстановления базы FULL). Просто создайте резервную копию лога транзакций до момента создания архива виртуальной машины и после восстановления виртуальной машины дополнительно выполните восстановление полной копии базы далее разностной копии и далее лога транзакций. При модели восстановления базы Simple просто сделайте полную резервную копию базы до момента запуска архивирования виртуальной машины.  

      

    14 февраля 2014 г. 6:37
  • Транзакции, коненчо, олстановлены не будут, но после восстановления вирутальной машины и запуска сервера SQL база данных будет в согласованном состоянии (каждая транзакция будет либо выполнена целиком, либо не выполнена совсем).  

    При таком резервном копировании вы фактически получаете копию всех дисков виртуальной машины, в таком состоянии как если бы вирутальную машину бы выключили в момент создания теневой копии (crash-consistent). Механизм транзакций SQL Server как раз рассчитан на восстановление БД в таком случае в согласованное состояние.


    Слава России!

    14 февраля 2014 г. 15:48

Все ответы

  • Добрый день.

    Все верно.

    Служба «Модуль записи SQL» позволяет во время работы SQL Server разрешить программам резервного копирования Windows копирование файлов данных SQL Server.

    При архивации виртуальной машины (в вашем случае vmware) служба "SQL Server VSS Writer" автоматически запускается и служба архивирования виртуальной машины получает доступ к файлам данных SQL. В результате получается новая полная копия базы данных, происходит разрыв в цепочке полная копия базы - разностные (дифференциальные) копии базы, дифференциальные копии просто не видят новую полную копию базы данных, выполненную посредством архивирования виртуальной машины.   

    Если служба "SQL Server VSS Writer" не запущена, то у программ резервного копирования, работающих в Windows, нет доступа к файлам данных. 

    Также можно отключить вызов службы "SQL Server VSS Writer" в VMware Tools  

    Disabling specific VSS writers with VMware Tools (1031200)

    Удачи 

    13 февраля 2014 г. 12:29
  • Здравствуйте, имеется виртуальная машина vmware с mssql 2012

    Интересует вопрос по службе SQL Server VSS Writer. У меня проводится два типа архивации. Архивация виртуальной машины и архивация непосредственно баз данных SQL. Архивация баз данных работает с дифференциальными копиями, что позволяет экономить место архивов. Проблема возникает, когда архивируется виртуальная машина. После архивации виртуальной машины, перестают работать дифференциальные копии, приходится делать полную копию. После ряда тестов выяснил, что при архивации виртуальной машины служба SQL Server VSS Writer сбрасывает информацию по дифференциальным копиям. Службу остановил и архивы теперь делаются в штатном режиме после копировании виртуальной машины.

    Вопрос теперь остался по SQL Server VSS Writer, что именно делает эта служба? По описанию я предполагаю, что если использовать теневое копирование тома, то данная служба позволяет вносить в теневую копию базы данных SQL?

    Если есть возможность, делайте архивацию с типом "Копирующая", а не "Полная". В этом режиме информация о дифференциальных копиях сбрасываься не должна.

    Слава России!

    13 февраля 2014 г. 19:00
  • Спасибо за пояснение!

    Тогда еще один наводящий вопрос. При архивации виртуальной машины без запущенной службы SQL Server VSS Writer можно ли быть уверенным, что транзакции SQL в момент создания временной теневой копии виртуальной машины будут остановлены и после восстановления виртуальной машины базы данных будут в нормальном состоянии?

    13 февраля 2014 г. 23:47
  • Добрый день.

    Как уже говорилось при архивации виртуальной машины без запущенной службы SQL VSS Writer у программы резервного копирования виртуальной машины нет доступа к базе данных. Поэтому на транзакции это никак не повлияет. Чтобы быть уверенным что после восстановления виртуальной машины базы данных были в нормальном (на момент создания копии) состоянии необходимо к сценарию резервирования баз банных добавить еще и создание резервных копий лога транзакций (при модели восстановления базы FULL). Просто создайте резервную копию лога транзакций до момента создания архива виртуальной машины и после восстановления виртуальной машины дополнительно выполните восстановление полной копии базы далее разностной копии и далее лога транзакций. При модели восстановления базы Simple просто сделайте полную резервную копию базы до момента запуска архивирования виртуальной машины.  

      

    14 февраля 2014 г. 6:37
  • Транзакции, коненчо, олстановлены не будут, но после восстановления вирутальной машины и запуска сервера SQL база данных будет в согласованном состоянии (каждая транзакция будет либо выполнена целиком, либо не выполнена совсем).  

    При таком резервном копировании вы фактически получаете копию всех дисков виртуальной машины, в таком состоянии как если бы вирутальную машину бы выключили в момент создания теневой копии (crash-consistent). Механизм транзакций SQL Server как раз рассчитан на восстановление БД в таком случае в согласованное состояние.


    Слава России!

    14 февраля 2014 г. 15:48
  • Спасибо за ответы!

    Самое главное, чтобы после восстановления не было разрушенных баз данных. Я протестировал следующим образом, создал тестовую виртуальную машину и сделал тестовую базу, сделал простой зацикленный запрос на insert и сделал на vmware 15 раз snapshot, после этого восстанавливал snapshot и смотрел состояние базы данных. Во всех случаях база данных была в нормальном состоянии.

    Около года назад я делал такой же тест, только гипервизор был KVM и использовал snapshot с помощью LVM, после восстановления spanshot база данных была разрушена, состояние базы было "подозрительная". Пришлось отказаться от архивации виртуальной машины и делать архивацию уже внутри гостевой ОС.

    16 февраля 2014 г. 4:18