Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как быстрее всего сделать копию базы?  [new]
Alibek B.
Member

Откуда:
Сообщений: 4003
Есть рабочая база данных размером около 80ГБ, которая бэкапится каждую ночь.
Есть тестовая база данных, которая обычно восстанавливается из последнего бэкапа рабочей базы.
Иногда в тестовой базе нужны свежие данные, тогда делается бэкап рабочей базы и тут же восстанавливается в тестовую.
Иногда это делается несколько раз в течении дня.
Бэкап + восстановление занимают около 20. А нельзя ли ускорить процесс и просто скопировать рабочую базу в тестовую?
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
20 июл 16, 18:52    [19432546]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Дифференциальные бекапы не пробовали?
20 июл 16, 18:58    [19432570]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Всего-то 20?
20 июл 16, 18:59    [19432572]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
+ не забываем включать сжатие бекапов
+ включить Instant File Initialization чтобы восстановление из бекапа быстрее происходило
20 июл 16, 19:00    [19432577]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Mr. X
Guest
Alibek B.,

+ бекап/рестор в несколько потоков на разные девайсы
20 июл 16, 20:39    [19432936]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Alibek B.
Бэкап + восстановление занимают около 20. А нельзя ли ускорить процесс и просто скопировать рабочую базу в тестовую?
А просто копирование сколько занимает?

ИМХО с сжатием и с Instant File Initialization бакап-рестор будет ненамного медленнее копирования.
20 июл 16, 20:44    [19432956]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Alibek B.
А нельзя ли ускорить процесс и просто скопировать рабочую базу в тестовую?
Ещё минус - при "просто копировании" придётся отключать рабочую базу, это, наверное, не очень хорошо.
20 июл 16, 20:49    [19432973]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Alibek B.
Member

Откуда:
Сообщений: 4003
> Дифференциальные бекапы не пробовали?
А разве это ускорит работу?

> Всего-то 20?
Да, слово "минут" куда-то убежало.

> Ещё минус - при "просто копировании" придётся отключать рабочую базу, это, наверное, не очень хорошо.
Да, копирование не подходит, отключать базу нельзя.

Я думал, что может быть для restore можно указывать в качестве источника другую БД, только я этого способа не знаю.
Но видимо других способов нет.
20 июл 16, 20:58    [19433004]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Alibek B.
Я думал, что может быть для restore можно указывать в качестве источника другую БД, только я этого способа не знаю.
может быть в качестве не источника, а destination? дак это делается легко
20 июл 16, 21:12    [19433038]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Alibek B.
Я думал, что может быть для restore можно указывать в качестве источника другую БД, только я этого способа не знаю.
Теоретически API бакапа позволяет написать такую программу, которая через механизм бакапов будет делать копию файла, без лишних затрат времени на работу с промежуточным файлом. Может, кто то и написал такую программу? Но я такой не знаю.

Alibek B.
> Дифференциальные бекапы не пробовали?
А разве это ускорит работу?
Разумеется.
Дифф. бакап же маленький (может быть, зависит от интенсивности изменений).
Вы храните полный бакап на тестовом сервере, когда нужно восстановить - запускаете его восстановление, и параллельно - создание и копирование дифф бакапа, а когда он будет готов - восстановление его к восстановленному полному бакапу.
То есть время восстановления ("копирования рабочей базы") получится примерно в 2 раза меньше, чем сейчас.
20 июл 16, 21:53    [19433207]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Alibek B.
Member

Откуда:
Сообщений: 4003
Размер дифф.бэкапа разумеется небольшой.
Но чтобы его восстановить, нужно прочитать полный бэкап, а потом еще и промежуточные бэкапы.
Поэтому мне непонятно, почему дифф.бэкап будет быстрее.
20 июл 16, 22:57    [19433428]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Alibek B.
Размер дифф.бэкапа разумеется небольшой.
Но чтобы его восстановить, нужно прочитать полный бэкап, а потом еще и промежуточные бэкапы.
Поэтому мне непонятно, почему дифф.бэкап будет быстрее.
Промежуточные не нужно, только основной и дифф.

Объясняю ещё раз.

Допустим, время копирования базы, которое вы считаете самым быстрым вариантом, равно Т

Считаем время разных вариантов:
1. Обычный бакап: пишем полный бакап (Т), копируем полный бакап на тест (Т), читаем полный бакап для восстановления (Т), итого 3Т
Если делать бакап сразу на тест, то убираем копирование, итого 2Т
2. С дифф. бакапом: читаем полный бакап для восстановления (он уже там лежит) (Т), одновременно делаем и копируем дифф бакап (время не учитываем, т.к. одновременно), и потом восстанавливаем дифф бакап (0.1Т)
Итого 1.1Т
21 июл 16, 09:04    [19434173]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
alexeyvg
Считаем время разных вариантов:
Ещё нужно заметить, что время создания бакапа может быть меньше времени копирования файла. Т.к. чтение может быть быстрее записи, а бакап может быть сжатый. Но это ладно, это уже детали.
21 июл 16, 09:16    [19434233]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4420
почему бы не делать репликацию из главной в тестовую?
21 июл 16, 09:57    [19434469]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Ролг Хупин
почему бы не делать репликацию из главной в тестовую?

Быть может часто таблички пересоздают? да и хлопотное это дело поддерживать репликацию когда часто что-то меняется :)
21 июл 16, 09:59    [19434480]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Ролг Хупин
почему бы не делать репликацию из главной в тестовую?
Если на тестовой тестят, то это будет как то неудобно.
Они же меняют данные, код, модель, что то проверяют, а тут будет поток обновлений, который мешает тестировать и проверять, и который потом постепенно заткнётся из за появления несовместимых тестовых данных и изменения модели.
21 июл 16, 11:21    [19435035]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
20 минут можно и подождать, форум почитать, например.
21 июл 16, 11:25    [19435073]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
edyaN
Member

Откуда: Berlin
Сообщений: 185
Alibek B.
Иногда в тестовой базе нужны свежие данные, тогда делается бэкап рабочей базы и тут же восстанавливается в тестовую.
Иногда это делается несколько раз в течении дня.

Простого и быстрого решения нет. Вам лучше пересмотреть ваш процесс разработки так, чтобы в тестовой базе были тестовые данные и не было необходимости в продукционных данных.
Заскриптуйте тестовые данные. Это гораздо быстрее.
21 июл 16, 11:56    [19435318]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4420
Владислав Колосов
20 минут можно и подождать, форум почитать, например.


или пописать
21 июл 16, 13:03    [19435837]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Alibek B.
Member

Откуда:
Сообщений: 4003
Спасибо за советы, видимо особо процесс не ускорить.
Использовать тестовые данные не подходит, мне нужно работать именно с реальными данными.
Видимо самым оптимальным будет во время ночного бэкапа рабочей базы сразу же из него восстанавливать тестовую базу.
21 июл 16, 16:17    [19437560]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Alibek B.
видимо особо процесс не ускорить

Вы прикалываетесь? Делаете бекапы со сжатием... в зависимости от структуры данных у нас будет меньше дисковых операций при создании бекапа. Так не хитро вы получаете FULL бекап. Включаете на тестовом сервере Instant File Initialization и восстановление из бекапа будет быстрее на порядок (экономится дисковых операций равное размеру DATA файлов). Далее снимок создаете для тестовой БД (при условии что есть Ent/Dev редакция) и творите что душе угодно. Когда требуется накатить свежие данные делаете дифф бекап. Откатываете снимок и накатываете дифф на тестовую БД.
21 июл 16, 16:58    [19437799]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Alibek B.
Спасибо за советы, видимо особо процесс не ускорить.
Какая то у вас обречённость :-)
Вроде тут расписали подробно, как сделать процесс быстрее, чем просто копирование файлов (ваш эталон), что вам ещё надо?

Если подходит восстановление ночного бакапа - ну, так и надо сделать, это очевидно. Тогда затрат времени вообще 0.
Просто вы говорили, что вам в течении дня нужно несколько раз делать внезапное внеплановое копирование...
21 июл 16, 18:08    [19438190]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
o-o
Guest
AlanDenton
Когда требуется накатить свежие данные делаете дифф бекап. Откатываете снимок и накатываете дифф на тестовую БД.

можете вот это пояснить?
на что дифф накатывать, ведь все равно надо сперва полный восстановить.
а если все равно полный восстанавливать, то зачем нужен был снимок?
21 июл 16, 18:40    [19438286]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Alibek B.
Member

Откуда:
Сообщений: 4003
alexeyvg
Просто вы говорили, что вам в течении дня нужно несколько раз делать внезапное внеплановое копирование...

По разному бывает, примерно пополам.
Иногда вполне достаточно ночного бэкапа, иногда нужны свежие данные.
21 июл 16, 21:13    [19438738]     Ответить | Цитировать Сообщить модератору
 Re: Как быстрее всего сделать копию базы?  [new]
Alibek B.
Member

Откуда:
Сообщений: 4003
AlanDenton
Делаете бекапы со сжатием... в зависимости от структуры данных у нас будет меньше дисковых операций при создании бекапа.

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

AlanDenton
Включаете на тестовом сервере Instant File Initialization

Да, за этот совет спасибо.

AlanDenton
Далее снимок создаете для тестовой БД (при условии что есть Ent/Dev редакция)

У меня Standard. Но я все равно не понял, в чем тут будет экономия времени.
Некоторая экономия есть при выполнении бэкапа, но восстановление занимает столько же (или даже немного больше) времени.
21 июл 16, 21:20    [19438755]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить