Dicas AG – Falha ao sincronizar bancos de dados com automatic-seeding (Secondary database is not joined)


A partir do SQL Server 2016, o Always On Availability Groups possui um recurso chamado Automatic Seeding como mais uma opção para sincronização inicial ao configurar réplicas e bancos de AG.

Basicamente, tal como mirroring, o sincronismo inicial depende de um backup e restore, e o que o automating seeding da forma mais simples faz é, bem, backup e restore, teoricamente sem intervenção alguma do DBA (você pode fazer de forma híbrida também backup+restore+automatic_seeding se quiser). Basta marcar essa opção durante a configuração, sair pra passear e esperar os servidores SQL das réplicas primárias e secundárias tocarem o trabalho.

Bem, sabemos que às vezes coisas estranhas acontecem. Ocorreu que utilizei o automatic seeding pra sincronizar uma réplica assíncrona de um AG com cinco bancos. Quando fui conferir, dos cinco (5) bancos, dois (2) tiveram falhas de sincronização, indicando que não foi possível ingressar o banco de dados:

 

Mais informações:

  • As duas bases problemáticas não estavam sendo visualizadas na listagem de banco de dados;
  • Explorei o diretório das bases e descobri que tanto o .mdf e o .ldf dos dois bancos problemáticos já estavam criados;

 

O ERRORLOG já “cantou a pedra”:

Não é muito intuitivo, mas aqui está a resposta:

“Necessário conceder permissão para criação de banco para o AG”.

ALTER AVAILABILITY GROUP AGMeuNomeFicticio01 GRANT CREATE ANY DATABASE

Depois disso bastou resumir a sincronia dos dois bancos envolvidos, podendo fazer isso via interface ou através do comando:


ALTER DATABASE DBMeubanco1 SET HADR RESUME
GO
ALTER DATABASE DBMeubanco2 SET HADR RESUME

Resumindo o banco, ele realiza backup e restore se necessário e se resolve normalmente depois de algum tempo:

Espero ter ajudado.

[]’s

, ,

Leave a Reply

Your email address will not be published. Required fields are marked *