Temos um servidor SQL Server 2016 (v13 SP3) Enterprise Edition hospedado em um cluster de failover do Windows/grupo de disponibilidade SQL com dois nós (primário e secundário). Os dois nós estão sendo executados em instâncias AWS EC2 executando o Windows Server 2012 R2 de 64 bits (NT 6.3).
No início desta semana, o servidor começou a responder com este erro:
Could not allocate space for object 'dbo.Batches'.'pk_Batches_BatchID' in database 'XXX' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.
No início, isso parecia bastante simples: percebemos que tínhamos sido descuidados e permitido que os dados e/ou arquivos de log ficassem muito grandes. Os arquivos estavam definitivamente cheios, sem nenhum espaço não alocado neles. Achamos que só precisávamos aumentar a unidade do Windows (NTFS) (apoiada pelo AWS EBS nos bastidores). O banco de dados 'XXX' possui um arquivo de log e dois arquivos de dados - os arquivos de dados são configurados para crescimento ilimitado (embora apenas 64 MB por vez) e o banco de dados possui apenas o grupo de arquivos 'PRIMARY' padrão, nenhum outro grupo de arquivos envolvido. Os arquivos de dados estão na unidade ‘D:’.
Mas a unidade ‘D:’ tem mais de 400 GB livres, então por que os arquivos de dados não estão crescendo?
Passamos muito tempo analisando o cluster do Windows e os grupos de disponibilidade do SQL, pois também víamos muitos erros sobre o status do AG indo para "Recuperando" e a função de cluster não sendo aplicada/sincronizada corretamente. Algumas alterações permitiram que o nó primário voltasse a funcionar por alguns minutos, mas depois travava novamente. (Por causa disso, nossa capacidade de inspecionar o próprio banco de dados 'XXX' era limitada.) Verificamos se o EBS estava tendo algum tipo de problema ou interrupção, mas não encontramos erros.
Percebemos que os servidores estão antigos e desatualizados. Percebemos que alguns diriam que usar/confiar no crescimento automático é uma má prática. Mas esta questão não é sobre práticas recomendadas - é como colocar esse servidor de produção atualmente inativo de volta em funcionamento?