Стратегия обслуживание базы MS SQL

Этапы обслуживания баз MS SQL Server, раз в день

Примерная последовательность этапов обслуживания базы MS SQL

  1. интеграция с другими сервисами, которые пишут в базу
    • перед обслуживанием, чтобы построить индексы после
  2. бэкап на уровне VM (виртуальной машины)
    • во время работы бэкапа ВМ, нельзя делать работы с базой на изменение, может разрастётся снепшот ВМ, нужно делать перед или после всеми обслуживаниями баз данных
  3. удаление лишнего или перенос в архив из таблиц баз исторических данных
    • перед обслуживанием, чтобы построить индексы после
  4. проверка базы  DBCC CHECKDB
    • перед всеми, если будет фейл, то не трогаем ничего и выходим, оповещаем
    • DBCC CHECKDB WITH PHYSICAL_ONLY  быстрее + max dop
    • если база совсем большая, то CHECKDB делаем при ресторе базы.
    • при Always On нужно чекать все реплики
  5. обновление статистики
    • после обслуживания индексов, возможно с полным сканированием, или совместно с ним
  6. обновление индексов
    • делаем раз в неделю, если нужно и можно и необходимо то каждый день
  7.  Сброс кэша плана выполнения для баз 1С
  8.  Закрытие открытых простаивающих сессий
  9. сжатие логов
    • после всего уменьшим размер, не путаем с сжатием базы
  10. бэкап полный или diff
    • раз в день, нужно дойти до этого этапа даже при фейлах, кроме проверки базы
  11. чистка бэкапов
    • если есть место на диске, то после успешного бэкапа. Если нет места, то перед бэкапом чистим
  12. чистка системных баз
    • после успешного бэкапа
  13. оповещение о выполнении
    • на уровне агента
      • c сортировка в почтовом клиенте  в отдельную папку  с фейлами
    • + Zabbix оповещение о не выполненных бэкапах, + не выполненных Job

В течении дня 

  1. бэкап diff (все от наличия места под бэкап)
  2. бэкап логов
    • если можем то делаем и шринг их потом
    • база в режиме Full
    • Важно! при  бэкапе логов появляется дополнительные  возможность
      • восстановления на уровне страниц
      • восстановление на любое время, а не только точку бэкапа

Обслуживание MS SQL вручную 

  1. сжатие базы
    • только вручную по необходимости и после нужно полное обслуживание индексов

Отказоустойчивость MS SQL Server

  1. Log Shipping
    • поддержка в Std редакции
    • можно отложить восстановление дельт логов на какое-то время
  2. Always On
    • поддержка в Ent редакции
    • упрощённая версия для одной базы, есть в Std редакции
    • появляются особенности бэкапа
      • нужно пересматривать этапы бэкапа
      • diff лучше  не делать, заменить на бэкап логов
    • обычно отключают авто переезд нод
  3. Зеркалирование
    1. смысла нет,  уже надежнее Log Shipping  делать

Масштабирование MS SQL

  1. используем секционирование
  2. используем файловые группы
  3. репликации на чтение