Приостановка базы данных доступности (SQL Server)
Область применения:SQL Server
В группах доступности AlwaysOn базу данных доступности можно приостановить с помощью SQL Server Management Studio, Transact-SQL или PowerShell в SQL Server. Обратите внимание, что команда приостановки должна выполняться на экземпляре сервера, содержащем базу данных, которая приостанавливается или возобновляется.
Результат выполнения команды приостановки зависит от того, над какой базой данных она выполняется: вторичной базой данных или основной базой данных.
Приостановленная база данных | Эффект команды приостановки |
---|---|
вторичная база данных | Приостанавливается только локальная вторичная база данных, и ее состояние синхронизации изменяется на НЕ СИНХРОНИЗИРУЕТСЯ. Другие вторичные базы данных не затрагиваются. Приостановленная база данных перестает получать и применять данные (записи журнала) и начинает отставать от основной базы данных. Существующие соединения в предназначенной для чтения вторичной реплике остаются применимыми. Новые соединения с приостановленной базой данных в предназначенной только для чтения вторичной реплике не допускаются, пока движение данных не будет возобновлено. Это поведение применяется, только если подключения открыты с помощью прослушивателя и маршрутизации только для чтения. Основная база данных остается доступной. Если приостановить каждую из вторичных баз данных, база данных-источник будет работать без защиты. ** Важно. ** Пока вторичная база данных приостановлена, в очереди отправки соответствующей первичной базы данных накапливаются неотправленные записи журнала транзакций. Соединения с вторичной репликой возвращают данные, которые были доступными ко времени приостановки движения данных. |
База данных-источник | Основная база данных останавливает передачу данных всем подключенным вторичным базам данных. Основная база данных продолжает работать в уязвимом режиме. Основная база данных остается доступной для клиентов, существующие соединения с читаемой резервной базой данных продолжают работать, и можно устанавливать новые соединения. |
Примечание.
Приостановка вторичной базы данных AlwaysOn непосредственно не влияет на доступность базы данных-источника. Однако приостановка вторичной базы данных может повлиять на избыточность и возможности отказоустойчивости основной базы данных. В этом состоит отличие от зеркального отображения базы данных, где состояние зеркального отображения приостанавливается как в зеркальной базе данных, так и в основной базе данных. Приостановка базы данных-источника AlwaysOn приостанавливает перемещение данных для всех соответствующих баз данных-получателей, а функции избыточности и отработки отказа для этой базы данных не работают до тех пор, пока работа базы данных-источника не будет возобновлена.
Перед началом:
Для приостановки базы данных используется:
Дальнейшие действия.Избегайте полного журнала транзакций
Перед началом
Ограничения
Команда SUSPEND возвращается сразу после принятия репликой, в которой размещена целевая база данных, но фактическая приостановка базы данных происходит асинхронно.
Предварительные условия
Необходимо иметь соединение с экземпляром сервера, на котором размещена приостанавливаемая база данных. Чтобы приостановить работу первичной базы данных и соответствующих вторичных баз данных, подключитесь к экземпляру сервера, на котором размещена первичная реплика. Чтобы приостановить вторичную базу данных, оставляя основную базу данных доступной, подключитесь ко вторичной реплике.
Рекомендации
При возникновении узких мест в процессе краткая приостановка одной или нескольких вторичных баз данных может временно повысить производительность на первичной реплике. Пока вторичная база данных находится в состоянии приостановки, журнал транзакций соответствующей основной базы данных не может быть усечен. Это приводит к накоплению записей журнала в базе данных-источнике. Поэтому мы рекомендуем быстро возобновить или удалить приостановленную вторичную базу данных. Дополнительные сведения см. ниже в разделе Дальнейшие действия. Избежание переполнения журнала транзакций.
Безопасность
Разрешения
Необходимо разрешение ALTER в базе данных.
Необходимо разрешение ALTER AVAILABILITY GROUP для группы доступности, разрешение CONTROL AVAILABILITY GROUP, разрешение ALTER ANY AVAILABILITY GROUP или разрешение CONTROL SERVER.
Использование среды SQL Server Management Studio
Приостановка базы данных
В обозревателе объектов подключитесь к экземпляру сервера, на котором размещена реплика доступности, базу данных на которой нужно приостановить, и разверните дерево сервера. Дополнительные сведения см. в подразделе Предварительные условияранее в этом разделе.
Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .
Расширьте группу доступности.
Разверните узел Базы данных доступности , щелкните правой кнопкой мыши базу данных и выберите пункт Приостановить перемещение данных.
В диалоговом окне Приостановка перемещения данных нажмите кнопку ОК.
В обозревателе объектов отображается, что база данных приостановлена путем изменения значка базы данных на знак паузы.
Примечание.
Чтобы приостановить дополнительные базы данных в расположении данной реплики, повторите шаги 4 и 5 для каждой базы данных.
Использование Transact-SQL
Приостановка базы данных
Подключитесь к экземпляру сервера, на котором размещена реплика, базу данных которой нужно приостановить. Дополнительные сведения см. в подразделе Предварительные условияранее в этом разделе.
Приостановите базу данных с помощью следующей инструкции ALTER DATABASE:
ALTER DATABASE имя_базы_данных SET HADR SUSPEND;
Использование PowerShell
Приостановка базы данных
Перейдите в каталог (cd) экземпляра сервера, на котором размещена реплика, базу данных которой нужно приостановить. Дополнительные сведения см. в подразделе Предварительные условияранее в этом разделе.
Для приостановки группы доступности воспользуйтесь командлетом Suspend-SqlAvailabilityDatabase .
Например, следующая команда приостанавливает синхронизацию данных для базы данных доступности
MyDb3
в группе доступностиMyAg
на экземпляре сервера под именемComputer\Instance
.Suspend-SqlAvailabilityDatabase ` -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb3
Примечание.
Чтобы просмотреть синтаксис командлета, используйте командлет Get-Help в среде SQL Server PowerShell. Дополнительные сведения см. в разделе Get Help SQL Server PowerShell.
Настройка и использование поставщика SQL Server PowerShell
Дальнейшие действия. Избежание переполнения журнала транзакций
Обычно при выполнении автоматической контрольной точки в базе данных журнал транзакций усекается до этой контрольной точки после следующего резервного копирования. Однако пока вторичная база данных приостановлена, все текущие записи журнала остаются активными в основной базе данных. Если журнал транзакций заполняется до конца (достигается максимальный размер, или на экземпляре сервера не хватает пространства), база данных не позволяет обновить данные.
Во избежание этой проблемы следует предпринять одно из приведенных ниже действий.
Увеличить пространство для журналов для основной базы данных.
Возобновите вторичную базу данных, пока журнал не заполнится. Дополнительные сведения см. в статье Возобновление базы данных доступности (SQL Server).
Удалите вторичную базу данных. Чтобы получить дополнительную информацию, см. статью Удаление вторичной базы данных из группы доступности (SQL Server).
Устранение неполадок при переполнении журнала транзакций
Связанные задачи
См. также
Обзор групп доступности Always On (SQL Server)
Возобновление базы данных доступности (SQL Server)