суббота, 1 июня 2013 г.

Готовим описание MS SQL серверов.

Публикую перевод заметки Jes Schultz Borland о важности документирования при использовании MS SQL Server под названием Documentation: It Doesn’t Suck!.


Некоторая часть нашей работы не слишком очаровательна, но необходима. Например, мне приходится чистить парик Боба Дилана каждую неделю, чтобы быть уверенным в его красоте и блеске. Документирование - это как раз та задача, которую многие не хотят начинать, которую тяжело поддерживать актуальной и, в общем, работы над которой стараются избегать.

Прекратите отлынивать и получите от этого пользу.



Самая трудная часть в документировании - начать, так что я бы хотел помочь именно с этим, и дать вам перечень того, что нужно документировать. Эта работа, конечно, займет время, и не будет столь же интересна как тюнинг запросов для их ускорения с 20 минут до 2 секунд, но это может сэкономить вам дни работы в будущем.

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

Загрузите, если нужно, шаблон "SQL Server справочник по эксплуатации", а если вам нужен пример, то он вот здесь - "Пример справочника по эксплуатации для SQL Server".


Серверные настройки.

Вам понадобится базовая информация о вашем сервере, так что если вам придется его восстанавливать, вы сделаете его таким же, каким он и был.
  • Количество и тип CPU.
  • Объем используемой памяти.
  • Система хранения - тип и количество.
  • Настройки SAN (если есть).
  • Имя сервера.
  • Имя экземпляра.
  • Версия и редакция SQL Server.
  • Сервисная учетная запись.
  • Максимальное и минимальное значения использования памяти.
  • Настройки сортировки строк (Collation).
  • Настройки флагов трассировки.
  • Опции, настроенные на значения НЕ по-умолчанию, такие как MAXDOP или настройка на оптимизацию ad-hoc запросов.
  • Кластеризация
    • Имя виртуального сервера.
    • Виртуальный IP адрес.

Базы данных.

Каждая БД вашего сервера, включая системные БД, должна быть хорошо документирована. Помимо знаний о том, что БД содержит, вы также должны знать, зачем эта БД вообще существует, и к кому обращаться в случае вопросов.
  • Наименование.
  • Назначение.
  • Для какого приложения или программы нужна эта БД.
  • Кто владелец (персона, отдел, департамент).
  • Связаны ли между собой несколько БД, нужно ли их восстанавливать на одном сервере и/или восстановление должно идти в определенном порядке?
  • Расположение файлов данных и файлов логов.
  • Настройки режима восстановления.
  • Расписание бэкапа и расположение файлов бэкапа.
  • Настройки collation.
  • Информация о таблицах, представлениях, сохраненных процедурах и функциях, такие как имена таблиц и колонок, значения по-умолчанию и параметры подпрограм.
  • Список ролей.
  • Список пользователей и их привелегий.
  • Разрешен ли log shipping?
    • Какой экземпляр используется для восстановления?
    • Частота выполнения бэкапов.
  • Разрешено ли зеркалирование?
    • Режим зеркалирования.
    • Главная БД или зеркало
    • Экземпляр для главной БД или зеркала.
  • Реплицирование.
    • Тип реплицирования.
    • Публикант, подписчик или дистрибьютор.
    • Имя сервера для дистрибуции.

Безопасность.

Очень важно иметь правильно настроенный, с точки зрения безопасности, SQL сервер. Только те пользователи, которым необходим доступ к серверу, должны такой доступ получать, а разрешения на данные должны быть минимально достаточными.

  • Настройки аутентификации.
  • Логины - Windows или SQL аутентификация.
    • Какой роли дан логин.
    • Список БД для которых есть разрешения данному пользовательскому логину и список ролей в этих базах.
  • Серверные роли.
  • Разрешения (Credentials).
  • Сертификаты.
  • Прилинкованные сервера.
    • Имя.
    • Тип.
    • Логин / Контекст безопасности.

Параметры обслуживания / Агентские задачи.

Много важных задач могут быть настроены, в том числе и на запуск по расписанию, на вашем сервере БД, такие как бэкапы, восстановления, скрипты обслуживания БД.
Документируйте их также, так что вы будете знать за что каждая задача отвечает, и сможете пересоздать их в случае аварии.
  • Наименование.
  • Цель.
  • Владелец.
  • Выполняемые задачи.
  • Расписание.
  • Есть ли зависимые (зависящие) задачи и нужно ли запускать эти задачи в определенном порядке?

Все, что нарушает рекомендованные практики использования, и причины этого.

Разрешен ли у вас запуск xp_cmdshell для некоторого приложения, использующего БД? Все ли связанные сервера используют аккаунт SA? Все специальные случаи должны быть задокументированы и объяснены. В случае чрезвычайных обстоятельств, вам не очень захочется раздумывать, почему все эти вещи были включены. Вам также понадобится эта информация в готовом виде для того, кто будет поддерживать данный экземпляр.

Выгода больше усилий.

Вы поблагодарите себя за проделанную работу. Не дайте этой задаче перегрузить вас - начните с одного сервера, и продолжайте описывать сервера по всему парку. Как только вам понадобится пересобрать сервер, научить нового DBA, или объяснить какую специфическую работу выполняет некоторый агент, вы высоко оцените затраченное когда-то время.

Комментариев нет:

Отправить комментарий