Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 баг ли это  [new]
STsarionov
Member

Откуда:
Сообщений: 105
Добрый день.
Сервер sql 2012 sp1 cu5
база в зеркале (асинхронное). Периодически наблюдаю ситуацию - непримененный размер лога на зеркале 50-60гб, база в режиме Sinhronized. Когда такое происходит, скорость применения транзакций на зеркале падает до 5-10мб/сек. Почему сервер переводит базу в режим "синхронизировано", когда еще такое количество непримененного лога имеется? Причем как я понял, лог на основной базе не очищается, пока транзакции не применены на зеркале, т.к.
select log_reuse_wait_desc, name from sys.databases
это выдает такое ожидание: DATABASE_MIRRORING.
Вопросы:
-баг ли это?
-как заставить его перейти в режим синхронизации? (пока делаю паузу и потом запуск зеркала, он начинает синхронизировать весь лог с нуля)
спасибо.
30 окт 13, 11:14    [15051233]     Ответить | Цитировать Сообщить модератору
 Re: баг ли это  [new]
STsarionov
Member

Откуда:
Сообщений: 105
ап
30 окт 13, 17:14    [15054484]     Ответить | Цитировать Сообщить модератору
 Re: баг ли это  [new]
STsarionov
Member

Откуда:
Сообщений: 105
ап
31 окт 13, 08:50    [15056572]     Ответить | Цитировать Сообщить модератору
 Re: баг ли это  [new]
gang
Member

Откуда:
Сообщений: 1394
STsarionov
Добрый день.
Сервер sql 2012 sp1 cu5
база в зеркале (асинхронное). Периодически наблюдаю ситуацию - непримененный размер лога на зеркале 50-60гб, база в режиме Sinhronized. Когда такое происходит, скорость применения транзакций на зеркале падает до 5-10мб/сек. Почему сервер переводит базу в режим "синхронизировано", когда еще такое количество непримененного лога имеется?

Потому, что сервер переводит БД в Sinhronized после того как завершится процесс инициализации зеркала и оставляет БД в таком статусе пока процесс передачи и применения лога работает и не прерывается. У вас процесс хоть и замедлен, но не прерывается. Причин выводить БД из Sinhronized у сервера нет. Состояния зеркала.
STsarionov
Причем как я понял, лог на основной базе не очищается, пока транзакции не применены на зеркале, т.к.
select log_reuse_wait_desc, name from sys.databases
это выдает такое ожидание: DATABASE_MIRRORING.

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

Баг сиквела? Вряд ли.
Кстати откуда у Вас генерится столько лога? Это реиндекс или какая-то массовая вставка\модификация данных?
STsarionov
-как заставить его перейти в режим синхронизации? (пока делаю паузу и потом запуск зеркала, он начинает синхронизировать весь лог с нуля)
спасибо.

И что происходит? Скорость доставки повышается?
31 окт 13, 09:34    [15056657]     Ответить | Цитировать Сообщить модератору
 Re: баг ли это  [new]
STsarionov
Member

Откуда:
Сообщений: 105
Потому, что сервер переводит БД в Sinhronized после того как завершится процесс инициализации зеркала и оставляет БД в таком статусе пока процесс передачи и применения лога работает и не прерывается. У вас процесс хоть и замедлен, но не прерывается. Причин выводить БД из Sinhronized у сервера нет. Состояния зеркала.

На счет процесса инициализации зеркала не скажу, не умею смотреть инициализировано ли зеркало полностью или нет, кроме как по статусу зеркала. Но, как объяснить отставание зеркала на 800гб за 2 дня, я не знаю. Переход зеркала в статус "синхронизировано" при остатках(таких огромных) непримененного лога, объяснить не могу, за полгода работы зеркала - это нетипичное для него поведение.
Причем судя по монитору зеркалирования, передача транзакций идет частями, т.е. послалось 50-60гб лога на зеркало и потом идет задержка пока эти 50-60 не применятся, потом снова посылка части транзакций. Между серверами оптоволокно, время отклика не выше 1-2мс, пропускная способность 100мб/сек, потому грешить на сеть не могу.
Обычно у нас в день формируется около 300-400гб лога ( это обычная работа системы, без ребилда индексов и т.д.)
Буквально сегодня наблюдал такую картину: лог базы очистился после бэкапа только после полного применения на зеркале тех самых отстающих 800гб, после этого передал новые 600гб, что успело наколбаситься пока зеркало догоняло и только после этого лог очистился бэкапом. Может есть какой-то буфер зеркалирования, который у нас переполняется и держит логи.
Причем важное дополнение: в синхронном режиме, падение производительности не наблюдается, зеркало не отстает, но такой режим нам не подходит, т.к. в будущем такого хорошего канала между серверами возможно не будет.
31 окт 13, 09:58    [15056724]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить