Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Время recovery из локального бекапа  [new]
Алекс1990
Guest
Подскажите как оценить время полного восстановления базы данных из локального бекапа с компрессией и без компрессии ?

Хочу оценить, сколько времени понадобиться, чтобы перегнать бекап с одного рейда на другой в рамках одного сервера и сделать его доступным.
2 фев 14, 18:22    [15506890]     Ответить | Цитировать Сообщить модератору
 Re: Время recovery из локального бекапа  [new]
Glory
Member

Откуда:
Сообщений: 104751
Алекс1990
сколько времени понадобиться, чтобы перегнать бекап с одного рейда на другой

Вы хотите, чтобы вам сказали, какова скрость копирования файлов на вашем оборудовании ?

Алекс1990
Подскажите как оценить время полного восстановления базы данных из локального бекапа с компрессией и без компрессии ?

замерить время ?
2 фев 14, 18:33    [15506911]     Ответить | Цитировать Сообщить модератору
 Re: Время recovery из локального бекапа  [new]
Алекс1990
Guest
Glory
Вы хотите, чтобы вам сказали, какова скрость копирования файлов на вашем оборудовании ?

Я хочу чтобы мне подсказали как это время правильно посчитать. Допустим бекап весит 100 Гб без компрессии. Время чтения с первого рейда(на котором бекап) + время записи на второй рейд(причем параллельно) - думаю слишком тривиально и неправдоподобно. А в случае с компрессией как оценивать еще и время декомпрессии ?

Замерить - нет возможности, т.к. такая оценка нужна для выбора оптимальных дисков для рейдов.
2 фев 14, 19:02    [15506983]     Ответить | Цитировать Сообщить модератору
 Re: Время recovery из локального бекапа  [new]
Glory
Member

Откуда:
Сообщений: 104751
Алекс1990
Время чтения с первого рейда(на котором бекап) + время записи на второй рейд(причем параллельно) - думаю слишком тривиально и неправдоподобно.

Почему ?
Думате, можно восстанваливать быстрее, чем читать из единственного файла бэкапа ?
Или быстрее, чем записывать на диск ?
2 фев 14, 20:48    [15507304]     Ответить | Цитировать Сообщить модератору
 Re: Время recovery из локального бекапа  [new]
Алекс1990
Guest
Glory
Или быстрее, чем записывать на диск ?

Мне важно убедиться, чтоб медленнее не было))) Давайте на примере:

Оценочно размер бекапа без компрессии = 500 Гб, т.е. 500 000 МБ. Восстановить бекап необходимо за час. => мне нужна минимальная пропускная способность в 500 000/(60*60) = 138,8 МБ/сек ? Причем оба рейда не должны выдавать пропускную способность меньше этого значения(на чтение с первого рейда и на запись на второй рейд) ?

  • Который из показателей производительности рейда должен быть не менее найденного значения ? Linear Read и linear Write ?
  • Как измениться ситуация, если у меня не один файл бекапа а 8 ? Т.е. для 8-ми разных баз.
  • Как стоит учитывать задежки на рейд контроллере ?
  • Сами сервисы Sql server'а ведь тоже не мгновенно после копирования могут начать с базой работать.
  • 2 фев 14, 21:41    [15507474]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31983
    Алекс1990
    Я хочу чтобы мне подсказали как это время правильно посчитать. Допустим бекап весит 100 Гб без компрессии. Время чтения с первого рейда(на котором бекап) + время записи на второй рейд(причем параллельно) - думаю слишком тривиально и неправдоподобно. А в случае с компрессией как оценивать еще и время декомпрессии ?
    1. Берём скорость чтения с дисков для БД.
    2. Берём корость чтения дисков с бакапом.
    3. Размер базы делим на первую скорость, полечаем "время 1"
    4. Размер базы умножаем на коэфф. компресии, делим на вторую скорость, полечаем "время 2"
    5. Выбираем из двух времён наибольшее.
    6. Далее добавляем время дописывания операций, совершённых во время бакапа (зависит от интенсивности изменения базы).

    Всё.

    Это всё в предположении, что сервер больше ничем не загружен, и устройства для базы и бакапа разные.
    2 фев 14, 21:45    [15507483]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    NickAlex66
    Member

    Откуда:
    Сообщений: 319
    Алекс1990,

    Компрессия/декомпрессия ляжет на плечи процессора. А диски за это вам только спасибо скажут - I/O будет меньше.
    По поводу всего остального: для бэкапов, особенно для бэкапов данных, важны потоковые характеристики дисковой системы (если отвлечься от логической фрагментации). Если до рейда оптика, так вообще сказка. Но на практике бэкапы выносятся на отдельные хранилища. Другими словами, от сервера до хранилища должен быть канал с соответствующей пропускной способностью.
    В вашем случае надо учитывать дисковые операции, пропускную способность контроллеров и "кота в мешке" - не завершенные транзакции. Последний фактор может быть определяющим. Отсюда совет - делайте бэкапы данных когда нагрузка на базу минимальна. На практике отрепетируйте восстановление на боевой системе и будет вам с чем сравнивать.
    2 фев 14, 21:47    [15507488]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31983
    alexeyvg
    1. Берём скорость чтения с дисков для БД.
    2. Берём корость чтения дисков с бакапом.
    То есть, конечно, для бакапа нужно брать скорость чтения с дисков для БД и скорость записи дисков с бакапом.
    А для восстановления наоборот.
    Алекс1990
    Как стоит учитывать задежки на рейд контроллере ?
    В этой "скорости дисков" всё учитывается.
    Если у вас есть страйп из дисков с суммарной скоростью в гигабайт, а контроллер (или канал) пропускает полгигабайта, то получится полгигабайта.
    Алекс1990
    Оценочно размер бекапа без компрессии = 500 Гб, т.е. 500 000 МБ. Восстановить бекап необходимо за час. => мне нужна минимальная пропускная способность в 500 000/(60*60) = 138,8 МБ/сек ? Причем оба рейда не должны выдавать пропускную способность меньше этого значения(на чтение с первого рейда и на запись на второй рейд) ?
    В этом примере всё правильно, только скорость чтения рэйда с бакапом может быть меньше, пропорционально коэффициенту компресии.

    Ещё к времени восстановления нужно прибавить восстановление "хвоста" из последних транзакций.
    Алекс1990
    Как измениться ситуация, если у меня не один файл бекапа а 8 ? Т.е. для 8-ми разных баз.
    Повторяем вычисления для всех баз.

    Алекс1990
    Сами сервисы Sql server'а ведь тоже не мгновенно после копирования могут начать с базой работать.
    Сервисы сиквела и не прекращали работать.
    Время понадобится фактически только на прокачку кеша, то есть первое время после восстановления будет притормаживать.
    Алекс1990
    Мне важно убедиться, чтоб медленнее не было)))
    Ну и в конце, как оптимист, умножайте время на 2 :-)
    2 фев 14, 21:54    [15507511]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    Алекс1990
    Guest
    Коллеги, спасибо за помощь! Давно волнует эта тема, но опыта в администрировании нема( Для бекапов без компрессии все стало очевидным, спасибо! Хвосты в виде незаконченных транзакций если и будут, то крайне мало. Об этом потом можно отдельно поговорить)

    alexeyvg
    4. Размер базы умножаем на коэфф. компресии, делим на вторую скорость, полечаем "время 2"

    alexeyvg
    только скорость чтения рэйда с бакапом может быть меньше, пропорционально коэффициенту компресии.

    Почему пропорционально коэфф. компрессии ? Это исходя из логики, документации или вашего опыта ?) Почему вообще "скорость чтения" соотносится с компрессией, эсли за неё отвечают процессорные ресурсы ?
    NickAlex66
    Компрессия/декомпрессия ляжет на плечи процессора. А диски за это вам только спасибо скажут - I/O будет меньше.

    Вот это и есть самое интересное) Во всех источниках прописано, что при использовании компрессии время создания и восстановления бекапов увеличивается. Однако, если я половину своих баз буду хранить с компрессией, а другую половину в чистом виде, то я должен получить выигрыш в производительности за счет того, что помимо дисковых ресурсов буду нагружать процессорные. Или я ошибаюсь ?

    Если не ошибаюсь, то как определиться с процессорными ресурсами, которые помогли бы мне уменьшить время восстановления из бекапа ? Если у сервера будет 8 ядер, как это поможет восстановлению из бекапа ? :)
    2 фев 14, 22:33    [15507616]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    Алекс1990
    Guest
    Алекс1990
    Почему пропорционально коэфф. компрессии ? Это исходя из логики, документации или вашего опыта ?) Почему вообще "скорость чтения" соотносится с компрессией, эсли за неё отвечают процессорные ресурсы ?

    аааа.. наверное понял. Потому что после декомпрессии весь исходный размер бекапа надо записать на диск ? :)
    2 фев 14, 22:39    [15507633]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31983
    Алекс1990
    Во всех источниках прописано, что при использовании компрессии время создания и восстановления бекапов увеличивается.
    Во всех источниках написано, что время создания и восстановления бекапов уменьшается.

    Процессорного времени там требуется немного, мала вероятность, что процессор окажется узким местом.
    Алекс1990
    alexeyvg
    только скорость чтения рэйда с бакапом может быть меньше, пропорционально коэффициенту компресии.

    Почему пропорционально коэфф. компрессии ? Это исходя из логики, документации или вашего опыта ?) Почему вообще "скорость чтения" соотносится с компрессией, эсли за неё отвечают процессорные ресурсы ?
    Извините, это я криво выразился. Попробую ещё раз:
    Алекс1990
    Оценочно размер бекапа без компрессии = 500 Гб, т.е. 500 000 МБ. Восстановить бекап необходимо за час. => мне нужна минимальная пропускная способность в 500 000/(60*60) = 138,8 МБ/сек ? Причем оба рейда не должны выдавать пропускную способность меньше этого значения(на чтение с первого рейда и на запись на второй рейд) ?
    В этом примере всё правильно, только требуемая пропускная способность для рэйда с бакапом может быть меньше, пропорционально коэффициенту компресии.

    В общем, если база 500 гб, бакап, допустим, 100 гб, то для восстановления базы за час нужно иметь пропускную способность для дисков с базой 500 000/(60*60) = 138,8 МБ/сек, а пропускную способность для дисков с бакапом 100 000/(60*60) = 27,7 МБ/сек

    Ну и с учётом написанных выше замечаний, нужен ещё некоторый запас.
    2 фев 14, 23:43    [15507801]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    Алекс1990
    Guest
    alexeyvg
    Во всех источниках написано, что время создания и восстановления бекапов уменьшается.

    Прошу простить меня. Не знаю уже откуда взял этот бред. В BOL явно указано что положительно влияет на производительность.
    alexeyvg, спасибо вам!

    Насколько реально добиться производительности в 400 МБайт/сек на запись для RAID10 ?
    3 фев 14, 00:27    [15507960]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31983
    Алекс1990
    Насколько реально добиться производительности в 400 МБайт/сек на запись для RAID10 ?
    Чтож нереального? Скорость серверного диска для линейных операций 150 МБайт/сек, а то и больше.
    RAID10 на 8 дисков уже должен дать больше 400 МБайт/сек. И для контроллера 400 МБайт/сек обычно вполне достижимо.
    3 фев 14, 00:38    [15508015]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    Алекс1990
    Guest
    alexeyvg, спасибо!

    Вот я смотрю на эти графики и... понимаю глупость своего вопроса)))
    3 фев 14, 00:55    [15508061]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    Гавриленко Сергей Алексеевич
    Member

    Откуда:
    Сообщений: 37254
    400 Мб/сек -- это примерно то, что мы имеем при снятии полного бэкапа в среднем. Снимаем на 12-дисковую (два raid-10 по 6 дисков) полку с SATA-дисками. Для такого кол-ва дисков у бэкап-полки цифра так себе, но есть следующие но:

    1. Данные в базе неравномерно разложены: средняя плотность шпинделей / 1 Гб данных по файл-группам очень разная.
    2. В начале снятия бэкапа, когда все файл-группы читаются параллельно, мы ограничены общим i/o в 2 Гбайт/cек -- упираемся в HBA.

    Все с сжатием, само собой.
    3 фев 14, 01:10    [15508085]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    Алекс1990
    Guest
    Гавриленко Сергей Алексеевич
    1. Данные в базе неравномерно разложены: средняя плотность шпинделей / 1 Гб данных по файл-группам очень разная.

    А причем тут данные в базе ? Насколько я понимаю бекап копипастит весь файл базы включая пустые экстенты. Или имеется ввиду фрагметация между отдельными кусками файлов ? Так ведь Sql server наращивает файл итерационно и сколько же должно быть кусков файла, чтоб это критически влияло на производительность бекапа.

    + если для базы выделен отдельный логический диск, то фрагментация даже между этими кусками можно избежать.
    3 фев 14, 11:01    [15508819]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    Гавриленко Сергей Алексеевич
    Member

    Откуда:
    Сообщений: 37254
    Алекс1990
    Гавриленко Сергей Алексеевич
    1. Данные в базе неравномерно разложены: средняя плотность шпинделей / 1 Гб данных по файл-группам очень разная.

    А причем тут данные в базе ? Насколько я понимаю бекап копипастит весь файл базы включая пустые экстенты. Или имеется ввиду фрагметация между отдельными кусками файлов ? Так ведь Sql server наращивает файл итерационно и сколько же должно быть кусков файла, чтоб это критически влияло на производительность бекапа.

    + если для базы выделен отдельный логический диск, то фрагментация даже между этими кусками можно избежать.
    Еще раз на пальцах. В одной файловой группе может, к примеру, быть 1 терабайт, который лежит на 2х дисках, а в другой -- 10 терабайт, которые размазаны на 100 дисков. Итого, если мы в состоянии утилизировать все io, то со второй файловой группы мы считаем все данные в пять раз быстрее, чем с первой, а потом 4/5 оставшегося времени мы будем курить и ждать, пока у нас вычитается первая файловая группа.

    Сообщение было отредактировано: 4 фев 14, 01:15
    4 фев 14, 01:15    [15513707]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    full backup
    Guest
    Алекс1990
    Насколько я понимаю бекап копипастит весь файл базы включая пустые экстенты.

    неправильно понимаете, такое поведение было бы по крайне мере глупо.
    создайте пустую базу данных на сколько хватит дисков, и забекапте ее, после бекапа будет показано сколько страниц данных было прочитано и с какой скоростью.
    4 фев 14, 09:48    [15514216]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    NickAlex66
    Member

    Откуда:
    Сообщений: 319
    Алекс1990,

    И не "жадничайте" прав для службы (учетки) SQL: (но без фанатизьма :)) http://technet.microsoft.com/en-us/library/ms175935(v=sql.105).aspx
    4 фев 14, 19:02    [15518845]     Ответить | Цитировать Сообщить модератору
     Re: Время recovery из локального бекапа  [new]
    NickAlex66
    Member

    Откуда:
    Сообщений: 319
    Алекс1990,

    И если уж хотите совсем быстро выводить базу в онлайн, то смотрите в сторону Enterprise Edition. Эта редакция "шустрее" по сравнению с младшими.
    5 фев 14, 16:17    [15523690]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить