Estou tentando entender o conceito de bifurcações de recuperação no SQL Server, principalmente em relação à visualização sys.database_recovery_status. A documentação menciona diversas colunas relacionadas aos forks de recuperação, como:
- recuperação_fork_guid
- first_recovery_fork_guid
- fork_point_lsn
No entanto, estou lutando para encontrar explicações claras sobre o que isso significa e seu significado. Minhas perguntas específicas são:
- O que exatamente é um fork de recuperação no SQL Server?
- Como os garfos de recuperação se relacionam com os processos de recuperação de banco de dados?
- Quais cenários normalmente levam à criação de uma bifurcação de recuperação?
Pesquisei online, mas parece haver poucos artigos que introduzam ou expliquem esse conceito em profundidade. Quaisquer insights ou explicações serão muito apreciados, bem como indicações para quaisquer recursos abrangentes sobre este tópico.
Pelas informações que reuni, entendo que esses GUID são uma espécie de DNA do banco de dados e não importa o quão longe na linha de parentesco o banco de dados esteja, ele compartilha informações para identificar a si mesmo e ao primeiro ancestral.
O artigo de Stuart Moore contém algumas informações relacionadas a forks e backups de recuperação:
Fiz alguns testes que me trouxeram algum entendimento sobre o assunto. Este laboratório pode ajudar você a entender o uso de garfos de recuperação:
Ele cria nosso banco de dados LabRecoveryFork e mostra informações sobre
database_guid
,family_guid
erecovery_fork_guid
. Observe quefamily_guid
erecovery_fork_guid
são iguais, significa que esse é o banco de dados original, é o primeiro dessa "linhagem".O documento sys.database_recovery_status diz algo sobre
database_guid
:Você verá que
database_guid
,family_guid
são iguais a antes, masrecovery_fork_guid
são diferentes, e agora temos algumas informações novas:last_log_backup_lsn
,first_recovery_fork_guid
efork_point_lsn
.Agora temos um diferente
database_guid
já que o banco de dados restaurado não existia antes (como dizia a documentação), masfamily_guid
ainda é o mesmo, pois indica de qual banco de dados este foi originado. Além disso,last_log_backup_lsn
,first_recovery_fork_guid
efork_point_lsn
são os mesmos de antes, pois esse banco de dados foi originado do mesmo backup. Novamente, temos um arquivo diferenterecovery_fork_guid
.Finalmente, criamos o terceiro banco de dados a partir de um backup do segundo, em vez do backup original:
Neste último caso todas as informações foram alteradas, exceto
family_guid
. Aqui está o resultado que obtive desta etapa final:Com essas informações, você pode emitir um
RESTORE HEADERONLY
para descobrir como um backup se relaciona com o banco de dados:Você pode comparar informações relacionadas a recovery_fork e LSN para verificar com qual bifurcação esse backup está relacionado (e pode ser usado).
Este artigo responde de alguma forma a algumas de suas perguntas - embora indiretamente: https://stuart-moore.com/please-clean-down-your-sql-server-backup-history/
Se você entender o modelo de Backup e Recuperação para SQL Server, entenderá melhor os forks de recuperação - é basicamente apenas uma maneira do SQL Server garantir que o método/ordem de recuperação seja mantido (por exemplo: que o backup mais recente do log de transações que você está tentando restaurar é consistente para o momento do banco de dados que você está tentando recuperar). Uma bifurcação de recuperação começa no ponto de uma restauração completa ou criação de um banco de dados e alguns outros cenários relacionados ao cluster (acredito que quando você faz um failover completo em um cluster, o SQL Server iniciará uma nova bifurcação de recuperação).
Aparentemente, respostas de IA não são permitidas no DBA Stack Exchange - mas encontrei as melhores respostas para suas perguntas no ChatGPT - então, se você tiver acesso, sugiro que use essa ferramenta. Não sou um fã muito entusiasmado de IA - mas ela pode ser valiosa para resumir conhecimentos como suas perguntas - coloquei suas perguntas (conforme apresentadas) no ChatGPT 4o e ele deu respostas melhores e mais compreensíveis do que qualquer outro lugar que eu pudesse encontrar diretamente no a teia.