Minha organização está planejando adotar os Grupos de Disponibilidade do SQL Server 2012 e estou tentando entender qual impacto (se houver) isso terá no processo de atualização de aplicativos.
Lançamos atualizações de aplicativos em um ciclo de 8 semanas e qualquer versão pode incluir alterações de esquema e / ou migrações de dados.
O que estou tentando entender é se a solução HA / DR lida ou não com as alterações do esquema de forma transparente (novas colunas, índices são adicionados aos secundários) ou se é necessária uma intervenção manual para criar o esquema em cada instância e ativar o Always On novamente.
A parte da migração de dados que suponho ser tratada de forma transparente, mas gostaria de confirmar isso também.
Acho que também estou assumindo que não há diferença nesses comportamentos com base na configuração dos Grupos de Disponibilidade, o que também pode ser falso. Por favor deixe-me saber.
Em poucas palavras; Em qualquer versão do meu aplicativo, posso alterar uma tabela muito grande (10s a 100s de milhões de registros) adicionando colunas a ela. Algumas colunas podem ser "novas em rede" para que possam usar a funcionalidade de alteração de esquema do Enterprise Online. Outras colunas podem ser uma refatoração de uma coluna existente (FullName é dividido em Nome e Sobrenome) e uma migração será executada para cada linha da tabela para preencher esses campos. Algum desses comportamentos exige que os DBAs alterem a configuração AlwaysOn ou isso é tratado por padrão e todos os secundários obtêm as instruções DDL e DML "de graça"?
Obrigado por qualquer clareza que você pode fornecer.
fonte
Respostas:
Alterações de esquema e alterações de dados são essencialmente as mesmas. Hoje, funciona como o espelhamento tradicional: o que aconteceu no log no primário acontece no secundário. Nem tudo o que acontece em Las Vegas precisa ficar em Las Vegas. :-)
O local em que você pode querer ter cuidado é quando você tem um aplicativo que aponta para o primário e o atualiza para corresponder às alterações de esquema. Mas você pode ter um aplicativo diferente que aponte para o secundário (por exemplo, com intenção somente leitura), e essa alteração de aplicativo também precisará ser sincronizada.
Outra possível pegada é quando o banco de dados que faz parte de um grupo de disponibilidade tem referências a objetos em outros bancos de dados (por exemplo, uma tabela de pesquisa estática que é armazenada em um banco de dados utilitário). Se essas alterações e o AG dependerem desses objetos, você precisará enviar essas alterações manualmente. O mesmo vale para trabalhos, logins no nível do servidor, servidores vinculados etc. - qualquer coisa que esteja fora do banco de dados e / ou não seja transacionável. Os usuários do banco de dados podem ficar órfãos (usuários independentes de lado). Eu sei que isso é provavelmente óbvio, mas queria listá-lo explicitamente quanto à integridade.
fonte
Mais respostas aqui do Remus, os usuários estão solicitando a remoção de consultas na réplica secundária e a verificação do status do tamanho da fila de refazer na tabela: sys.dm_hadr_database_replica_states AlwaysOn DDL and Schema Changes
fonte