Мы настроили зеркальное отображение базы данных на выходных и забыли снова включить задание резервного копирования журналов транзакций. Когда я пришел этим утром, журнал транзакций увеличился до 58 ГБ и занял большую часть дискового пространства.
Я сделал ручное резервное копирование журнала транзакций на диск, чтобы снова запустить базу данных, однако запуск DBCC SHRINKFILE, по-видимому, не уменьшает физический размер файла журнала транзакций.
DBCC SHRINKFILE (N'MyDatabaseName_Log', 1000)
Если я проверю использование журнала с помощью
DBCC SQLPERF(LOGSPACE)
Я вижу, что используется только 22% текущего журнала
Имя журнала Размер журнала (МБ) Используемое пространство журнала (%) Состояние MyDatabaseName 55440,87 22,38189 0
Если я проверяю log_reuse_wait_desc
в sys.databses, единственная запись, которую я вижу DATABASE_MIRRORING
, так что я предполагаю, что зеркало играет роль в том, почему физический размер файла журнала не уменьшается?
SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = N'MyDatabaseName';
Я также заметил, что мое основное состояние зеркального отображения базы данных - Приостановлено, и попытка Возобновить его немедленно завершается с ошибкой:
Удаленный партнер по зеркальному отображению для базы данных «MyDatabaseName», обнаружена ошибка 5149, состояние 1, серьезность 25. Зеркальное отображение базы данных приостановлено. Устраните ошибку на удаленном сервере и возобновите зеркалирование или удалите зеркалирование и заново установите экземпляр зеркального сервера.
Журналы ошибок на зеркальном сервере также содержат эту ошибку, но также содержат ошибки о переполнении диска файла журнала.
В MODIFY FILE обнаружена ошибка 112 операционной системы (на диске недостаточно места.) При попытке расширить физический файл.
а также
F: \ Databaselogs \ MyDatabaseName_1.ldf: обнаружена ошибка 112 операционной системы (недостаточно места на диске).
Основной сервер имеет 60 ГБ на диске файлов журнала (здесь находятся другие базы данных), в то время как зеркальный сервер имеет только 45 ГБ.
Резервное копирование файла журнала позволило снова использовать базу данных, однако я также хочу уменьшить размер физического файла журнала на диске и возобновить зеркалирование.
Как я могу уменьшить размер моего физического файла журнала транзакций без ущерба для зеркалирования или цепочки резервного копирования?
Я использую SQL Server 2005
Ответы:
Из того, что я могу сказать, я не могу.
Я полагаю, что большая часть файла журнала ожидает зеркального отображения на зеркальный сервер, но зеркало не работает и не может быть возобновлено, потому что зеркальный журнал транзакций также вырос, чтобы занять все пространство на диске.
Эта теория подкрепляется тем фактом, что после удаления зеркалирования
DBCC SHRINKFILE
команда корректно сжимает физический файл журнала иlog_reuse_wait_desc
возвращается к ожиданию.LOG_BACKUP
Я не могу сжать файл журнала на зеркальном сервере, потому что он действует как зеркало и не может быть открыт, поэтому я думаю, что зеркало невозможно восстановить.
Поэтому я собираюсь полностью удалить зеркало и снова все настроить (очень медленный процесс с базой данных 300 ГБ). И на этот раз я позабочусь о том, чтобы размер журнала транзакций был достаточно мал перед запуском зеркала, и чтобы резервные копии журнала транзакций работали, как только зеркало будет запущено.
Я также собираюсь установить предел того, насколько большой журнал транзакций может расти на рабочем сервере, чтобы зеркало никогда не пыталось увеличить свой журнал транзакций сверх размера, доступного на диске.
источник
Сегодня мы столкнулись с той же проблемой с нашими базами данных, которые по какой-то причине прекратили резервное копирование журналов транзакций за последние 3 месяца, и журналы выросли до 200 ГБ.
Точно такие же коды ошибок, как в вашей ситуации, и зеркалирование не возобновится. Диск был полностью заполнен на зеркале.
К счастью, мне удалось освободить место, удалив пару заблудших старых журналов на диске Log. После этого смог возобновить зеркалирование.
Затем вошел в резервные копии плана обслуживания и запустил резервное копирование базы данных и журнала транзакций вручную. Даже после резервного копирования файлы журнала транзакций все еще были огромными. Поэтому мне приходилось неоднократно указывать SQL Studio сокращать файлы журналов (освобождать все неиспользуемое пространство), и после нескольких попыток в течение нескольких часов он сокращал их до более управляемого размера.
Надеюсь это поможет.
источник