MSDTC в всегда в группах доступности
Компания, в которой я работаю, хотела бы использовать архитектуру групп доступности всегда в нашем приложении, поддерживаемом SQL Server. У нас есть 3 базы данных сразу после установки, и одна из них разделена по конфигурации, в настоящее время мы используем MSDTC для координации транзакций между ними, т. е. если фиксация в базах данных A и B и фиксация A завершаются успешно, сбой на B означает откат на А и В, а не просто Б.
Мы столкнулись с проблемой, когда увидели эту статью
Насколько я понимаю, это в основном означает, что MSDTC не поддерживается в режиме группы Всегда в наличии. Я не мог найти замену этому в SQL Server 2012
Итак, мои вопросы:
- Какие у нас есть варианты (изменение продукта / кода на полке или с открытым исходным кодом)?
- Как конкретно влияет запуск MSDTC в этом параметре (полные сбои / пропущенные транзакции)?
Заранее спасибо, ваша помощь очень ценится. жук
1 ответ
Недавно я задавал похожий вопрос по адресу: https://dba.stackexchange.com/questions/47108/alwayson-ag-dtc-with-failover
> Какие у нас есть варианты (изменение продукта / кода на полке или с открытым исходным кодом)?
Я думаю, у вас есть два варианта:
- Измените свое приложение так, чтобы оно не нуждалось в DTC.
- Измените настройки базы данных, чтобы она не использовала группы доступности.
В моих обстоятельствах мы используем коммерческое приложение, поэтому вариант 1 нежизнеспособен. В настоящее время мы используем зеркалирование базы данных и, основываясь на недавних исследованиях, теперь я понимаю, что это также не поддерживается.
Мой вывод заключается в том, что это возможно, чтобы это работало. Но это не просто сделать, и это ставит вас в неподдерживаемую ситуацию, что для нас неприемлемо. Поэтому я планирую посмотреть на использование доставки журналов и перейти от горячего резервирования (с зеркалированием) или горячего резервирования (с доставкой журналов).
Как конкретно влияет запуск MSDTC в этом параметре (полные сбои / пропущенные транзакции)?
Если вы решите использовать DTC с группами доступности или зеркалированием, вы рискуете получить поврежденные / несогласованные данные в сценарии отработки отказа. Статья, которую вы цитировали, дает хороший пример того, как это может произойти.
Следует признать, что с доставкой журналов может возникнуть та же проблема. Аргумент, который я планирую выдвинуть, заключается в том, что с доставкой журналов у нас будет возможность перейти к определенному моменту времени, и мы можем быть уверены, что мы перейдем только к моменту времени, когда мы знаем, что все согласовано.
Коммерческое приложение, которое мы используем, не поддерживает высокую доступность. Это наша попытка сделать его очень доступным.