As alterações de esquema "interrompem" os Grupos de Disponibilidade ou são tratadas de forma transparente?

11

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.

Matt O'Brien
fonte
Mais informações aqui de Remus, dba.stackexchange.com/questions/179402/…

Respostas:

9

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.

Aaron Bertrand
fonte
Logins contidos devem ser carregados com o banco de dados, correto? (Eu suponho que você significou logins do servidor.)
Jon Seigel
11
@ JonSeigel continha usuários, sim. Não existem logins contidos. Não sendo exigente, só quero ter certeza de que a expectativa está correta. Obviamente, isso exige que todos os nós contenham a autenticação do banco de dados ativada e que os bancos de dados sejam, de fato, definidos como CONTAINMENT = PARTIAL.
Aaron Bertrand
Ah, eu vejo agora . Obrigado, não trabalhei muito com os novos presentes de 2012.
21812 Jon Seigel
@JonSeigel Atualizei a resposta para chamar isso explicitamente.
Aaron Bertrand
Obrigado Aaron. Algumas preocupações foram levantadas sobre alterações no esquema que quebram a replicação e eu queria confirmar que o AlwaysOn (espelhamento como você descreveu) não exibe esse comportamento. Suponho que isso seja um mal-entendido ou relacionado especificamente à replicação.
22812 Matt O'Brien
0

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