none
Очиcтка лога для зеркальных баз в SQL Server 2016 RRS feed

  • Вопрос

  • Всех приветствую!

    Есть проблема. Несколько баз в 100 Gb зазеркалены с другим сервером. Естественно для зеркала пришлось включить для баз схему восстановления Полная, из-за чего лог уже более 2 терабайт. При Простой схеме лог можно было банально сжать, но не в данной ситуации. Соответственно вопрос, как очистить лог не меняя схему восстановления базы и не нарушая работу зеркала?


    • Изменено Prof92 14 февраля 2019 г. 11:14
    14 февраля 2019 г. 11:13

Все ответы

  • При схеме восстановления Полная, лог транзакций не будет усекаться без бэкапа.

    Сжатие файла лога, если Вы это имеете в виду, работает и для Простой и для Полной схемы восстановления - было бы "пустое" место в файле.

    14 февраля 2019 г. 14:21
  • Именно. Вот и хотелось бы в логе все очистить, но как?
    14 февраля 2019 г. 14:44
  • Сделать бэкап, лог автоматически усечется, потом шринкнуть файл лога. В чем тут проблема?

    Очистить в логе "все" не получится, для максимального сжатия файла нужно поставить галку для перемещения страниц внутри файла.

    • Изменено Рыхлый 15 февраля 2019 г. 5:52
    15 февраля 2019 г. 5:50
  • К сожалению не усечется. Хотя есть нюанс.

    Ранее пробовал на базе в 2GB, у которой лог 250 GB. Делается бекап, весит 1,6GB, при восстановлении снимается галочка с резервной копии журнала, запускается восстановление, которое доходя до 95% за 3 минуты, потом еще час висит что бы дойти до 100%. При этом лог снова весит 250 GB. Если галочку выше не снимать, пилит часа 3. (сервер с 2 камнями Xeon E5 v4, память 128)

    Правда после этого при попытке усечь лог все проходит. Но восстанавливается на все 250GB. 

    Говоря о базе в 100GB наблюдать за восстановлением лога в 2TB, пусть и пустого, не очень хочется.

    То есть другого варианта просто нет?

    • Изменено Prof92 15 февраля 2019 г. 6:18
    15 февраля 2019 г. 6:15
  • Не надо для усекания лога восстанавливать базу обратно! Это нужно для "отметки", что бэкап есть и можно закомиченные транзакции в логе не держать.

    Размеры файлов на диске сами не изменятся, даже если внутри одна пустота. Для этого нужен "шринк" файла.

    Смотрим и делаем как тут:

    https://www.sqlserverlogexplorer.com/shrink-transaction-file/

    Что пишет про место в лог-файле (занято и доступно)?

    15 февраля 2019 г. 6:49
  • выделено 252479,75 МБ

    доступно 238782,98 МБ (94 %)

    при этом попытка сжатия ни к чему не приходит.

    По ссылке то как я делаю с обычными базами, которые не зазеркалены и там все нормально работает. 

    15 февраля 2019 г. 11:16
  • Делаете на стороне Principal для этой зеркалированной базы?

    Вы в shrink action что выбираете?

    Нужно для максимального сжатия файла выбрать Reorganize pages... и размер 0 МБ, тогда файл должен ужиматься до 14-15 ГБ (судя по приведенным цифрам).


    15 февраля 2019 г. 12:17
  • Именно что оба пробовал варианта пробовал. Толку ноль.
    15 февраля 2019 г. 12:59