При попытке зеркалировать базу данных с помощью следующей команды
ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ
Я получаю следующую ошибку
Сообщение 1475, уровень 16, состояние 105, строка 1
База данных «test0916aj8CJ» может содержать массовые зарегистрированные изменения, которые не были сохранены. Сделайте резервную копию журнала в основной базе данных или основной базе данных. Затем восстановите эту резервную копию либо в зеркальной базе данных, чтобы включить зеркалирование базы данных, либо в каждой вторичной базе данных, чтобы можно было присоединить ее к группе доступности.
Можно ли это сделать без поддержки базы данных? Или я должен сделать резервную копию, а затем сбросить резервную копию. Это для вновь созданной базы данных, поэтому мне все равно не нужна резервная копия на данном этапе.
Я попробовал следующее ...
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
WITH COPY_ONLY, NOFORMAT, INIT,
NAME = N’test-Full Database Backup’,
SKIP, NOREWIND, NOUNLOAD
GO
но вышеуказанный метод тоже не сработал.
Спасибо
Ответы:
Легко воспроизвести ошибку, которую вы получили
Ниже приведена ошибка, которую вы получите:
Давайте поймем, что это за ошибка:
Вы настроили базу данных в режиме полного восстановления и думаете, что база данных действительно находится в режиме полного восстановления.
Вышесказанное не соответствует действительности. После создания базы данных, если вы не выполните полное резервное копирование, даже если база данных находится в режиме полного восстановления, она находится в режиме псевдо-ПРОСТОГО восстановления
Вы можете легко проверить это, используя dbcc dbinfo-> dbi_dbbackupLSNимеющий значение 0:0:0(0x00000000:00000000:0000)или используя скрипт Пола Рэндала
Редактировать: Даже создание первой полной резервной копии с
COPY_ONLY
опцией не создает цепочку резервного копирования, а такжеdbcc dbinfo-> dbi_dbbackupLSNвсе еще имеет значение 0:0:0(0x00000000:00000000:0000). Это означает, что база данных все еще находится в псевдо-простом режиме восстановления.
Что нужно сделать, чтобы устранить вышеуказанную ошибку?
Необходимо создать полную резервную копию + одну резервную копию журнала транзакций на первичной, а затем восстановить ее на вторичной базе данных,
with norecovery
а затем присоединить базу данных к группе AG или зеркальному отображению.В качестве дополнительного примечания и для полноты, для вашего рассказа сценария
backup to NUL
, прочитайте это сообщение в блоге Гейл Шоу.источник
Я не понимаю, почему вы используете
TO DISK = N’NUL’
:Если вы это сделаете, резервная копия будет сохранена в
NUL
(то есть = в никуда / ничего) и не может быть использована, потому что ее файл не существует.Хотя
NUL
его также можно использовать в качестве места назначения для резервного копирования журналов, его также не следует использовать, особенно на серверах Prod, поскольку журналы будут потеряны и цепь резервного копирования будет разорвана. (~ похож наSHRINKFILE
)Перед добавлением БД в группу, вы должны подготовить ее. Если вы хотите подготовить вторичную БД, необходимо сделать и восстановить как минимум 1 резервную копию журнала транзакций. Зеркало использует его, чтобы выяснить, какие транзакции уже синхронизированы на вторичной БД, а какие транзакции еще не синхронизированы с первичной БД.
Поэтому вы должны сделать резервную копию журналов транзакций на первичной БД:
COPY_ONLY
Опция должна использоваться. Это гарантирует, что журналы не усекаются в конце резервной копии журнала.Однако вы не можете восстановить резервную копию журнала в одиночку, то есть без цепочки резервных копий (см. Также ответ Kin). Это означает, что резервное копирование журнала транзакций должно выполняться после полного резервного копирования базы данных (+ необязательный дифференциал, если необходимо).
Поскольку
COPY_ONLY
опция не разрывает цепочку резервного копирования, она также не создает цепочку резервного копирования. ЭтотCOPY_ONLY
параметр нельзя использовать для резервного копирования базы данных.Резервные копии по порядку:
COPY_ONLY
опцииCOPY_ONLY
опциейЗатем резервная копия базы данных должна быть восстановлена (+ разностная) на вторичном.
Он должен быть восстановлен с помощью этой
NORECOVERY
опции, потому что вы также хотите восстановить резервную копию журналов после восстановления полной резервной копии.Наконец, вы восстановите резервную копию журнала. Вам все еще нужно использовать эту
NORECOVERY
опцию, потому что зеркало будет продолжать восстанавливать транзакции, как только они появятся.NORECOVERY
опциейNORECOVERY
опцииNORECOVERY
опциейНа основном сервере запустите:
На Вторичном сервере запустите:
Затем вы можете продолжить добавление новой вторичной БД в группу доступности ...
источник