Моя организация планирует принять группы доступности SQL Server 2012, и я пытаюсь понять, как это повлияет (если таковые имеются) на процесс обновления нашего приложения.
Мы выпускаем обновления приложений с 8-недельным циклом, и любой выпуск может включать изменения схемы и / или перенос данных.
Я пытаюсь понять, является ли решение HA / DR прозрачно обрабатывает изменения схемы (новые столбцы, индексы добавляются во вторичные) или требуется ручное вмешательство для создания схемы в каждом экземпляре, а затем снова включить Always On.
Я предполагаю, что часть переноса данных обрабатывается прозрачно, но я также хотел бы подтвердить это.
Я предполагаю, что я также делаю общее предположение, что нет никакой разницы в этих поведениях на основе конфигурации групп доступности, которая также может быть ложной. Пожалуйста, дайте мне знать.
В двух словах; В любом выпуске моего приложения я могу изменить очень большую таблицу (от 10 до 100 миллионов записей), добавив в нее столбцы. Некоторые столбцы могут быть «совершенно новыми», поэтому они могут использовать функцию изменения схемы Enterprise Online. Другие столбцы могут быть рефакторингом существующего столбца (FullName разделяется на FirstName и LastName), и для каждой строки таблицы будет выполняться миграция для заполнения этих полей. Требует ли какой-либо из этих вариантов поведения администраторы баз данных для изменения конфигурации AlwaysOn, или это обрабатывается по умолчанию, и все вторичные серверы получают операторы DDL и DML «бесплатно»?
Спасибо за любую ясность, которую вы можете предоставить.
источник
Ответы:
Изменения схемы и изменения данных по сути одинаковы. Сегодня это работает как традиционное зеркалирование: то, что произошло в журнале на первичном сервере, происходит на вторичном. Не все, что происходит в Вегасе, должно оставаться в Вегасе. :-)
Вы можете быть осторожны, когда у вас есть приложение, которое указывает на основное, и вы обновляете его, чтобы соответствовать изменениям схемы. Но у вас может быть другое приложение, которое указывает на вторичное устройство (например, с намерением только для чтения), и это изменение приложения также должно быть синхронизировано.
Другая потенциальная ошибка - когда ваша база данных, которая является частью группы доступности, имеет ссылки на объекты в других базах данных (например, статическая таблица поиска, которая хранится в базе данных утилит). Если они меняются, и AG зависит от этих объектов, вам нужно будет нажать эти изменения вручную. То же самое верно для заданий, входов в систему на уровне сервера, связанных серверов и т. Д. - всего, что находится за пределами базы данных и / или не поддерживает транзакции. Пользователи базы данных могут стать осиротевшими (содержащиеся в стороне пользователи). Я знаю, что это, вероятно, очевидно, но хотел бы перечислить это явно для полноты.
источник
Больше ответов здесь от Remus, пользователи просят, возможно, удалить запросы к вторичной реплике и проверить состояние размера очереди повторов в таблице: sys.dm_hadr_database_replica_states AlwaysOn DDL и изменения схемы
источник