Ведение журнала транзакций в базе данных Mirror

10

Версия SQL Server: 2008 R2 Enterprise SP2

Я пытаюсь разобраться с нашим обслуживанием SQL Server, и я столкнулся с чем-то, что я считаю неправильным. У нас есть один производственный экземпляр с 3 базами данных, каждая из которых зеркально удалена от экземпляра DR.

Глядя на экземпляр DR, я заметил, что файлы LDF были огромными, более 35 ГБ для интенсивно используемых баз данных.

Я понимаю, что это, вероятно, связано с тем, что зеркальные базы данных находятся в режиме полного восстановления, и что журналы никогда не создавались резервные копии, они просто будут расти, пока не закончится место на диске.

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

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

Опять же, это рекомендации по ведению журнала транзакций в базе данных MIRROR .

Спасибо за любой вклад

Джереми Грунд
источник

Ответы:

5

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

Вы не можете сделать резервную копию журнала в зеркальной базе данных.

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

Вы также не можете сделать полное резервное копирование базы данных в зеркальной базе данных.

Возьмем для примера: у меня есть Server1база данных AdventureWorks2012, а у меня Server2зеркало. Вот что происходит, когда я пытаюсь запустить резервное копирование в зеркальной базе данных (вкл Server2):

use master;
go

backup database AdventureWorks2012
to disk = 'c:\sqlserver\AW_mirror.bak';
go

Сообщение 954, уровень 14, состояние 1, строка 2
Невозможно открыть базу данных "AdventureWorks2012". Он действует как зеркальная база данных .
Сообщение 3013, уровень 16, состояние 1, строка 2
BACKUP DATABASE завершается ненормально.

backup log AdventureWorks2012
to disk = 'c:\sqlserver\AW_mirror.trn';
go

Сообщение 954, уровень 14, состояние 1, строка 1
Невозможно открыть базу данных "AdventureWorks2012". Он действует как зеркальная база данных .
Сообщение 3013, Уровень 16, Состояние 1, Строка 1
РЕЗЕРВНОЕ КОПИРОВАНИЕ завершается ненормально.

Взгляните на этот FAQ по зеркальному отображению базы данных Роберта Дэвиса . Я процитирую его относительно этой операции и ведения журнала транзакций зеркальной базы данных:

При резервном копировании журнала на субъекте файлы виртуального журнала (отдельные блоки в файле журнала) помечаются как перезаписываемые. Те же VLF помечены как перезаписываемые в файле журнала зеркал. Состояние VLF отражается в базе данных .

Так что у вас есть это. Если у вас есть резервные копии журналов транзакций на субъекте, то подобное поведение повторного использования журналов будет отражено в его партнерской базе данных.

Томас Стрингер
источник
Я ненавижу это, когда есть статья, которая отвечает на мой точный вопрос, и я не нахожу это. Это имеет смысл, когда я взял журналы, резервные копии которых не создавались и стали очень большими на основном сервере, поэтому после начала регулярного резервного копирования я сжал журналы, но не думал делать это на зеркале. Спасибо!
Джереми Грунд
1
Дополнительный вопрос заключается в том, можно ли уменьшить размер перераспределенного журнала транзакций теперь, когда у нас есть регулярные резервные копии журнала транзакций на основном сервере?
Джереми Гранд
@JeremieGrund Один из способов сделать это - переключиться на зеркальную базу данных и выполнить сжатие там. Тщательно проверьте это в непроизводственной среде, чтобы убедиться, что она работает так, как вы хотите / ожидаете.
Томас Стрингер
0

@JeremieGrund - Если физическая файловая архитектура базы данных одинакова (имена и расположение дисков с данными и файлами журналов), то при сжатии файла журнала на основном сервере команда сжатия будет отправлена ​​на зеркало и сделает то же на зеркале. Таким образом, ваш файл журнала зеркала может быть сохранен .. Если файловая архитектура не идентична, вы должны следовать предложению Томаса Стрингера.

kranthi
источник