Backup

Fala aee pessoal, espero que estejam todos ótimos !!

Continuando com os posts sobre backups, e agora que entendemos a diferença do Recovery Full e Recovery Simple. Vamos entender como funciona o backup, e como executá-lo.


Tipos de Backup

Antes de tudo precisamos nos atentar aos tipos de backups que podemos realizar em nosso ambiente:

Os principais modelos de backup são:

Backup Full

Backup Diferencial

Backup do Log.

Backup Full: Como o próprio nome já diz, ele efetua o backup da sua base por completo.

*Importante: Na execução do backup full, o SQL consegue salvar todas as transações que ocorrem durante a execução do mesmo.

Ainda segundo o link  https://social.technet.microsoft.com/wiki/pt-br/contents/articles/13799.tipos-de-backup-no-sql-server.aspx

Têm como propósito realizar o backup de todos os dados armazenados em um banco. Este tipo de backup leva todas as características e atributos do objeto do banco de dados. ”

Backup Diferencial: O backup diferencial, funciona a partir do backup full, salvando todas as informações do último backup full até a execução do backup diferencial.

Segundo o https://social.technet.microsoft.com/wiki/pt-br/contents/articles/13799.tipos-de-backup-no-sql-server.aspx , “o maior propósito de um backup diferencial é reduzir o número de transactions log’s backups que precisam ser restaurados em um processo de restore.

Backup do Log:  Este tipo de backup é obrigatório, quando o Recovery model estiver configurado como Full ou Bulk Logged.

Como vimos no post anterior, quando nossa base está configurada com o Recovery Model FULL, toda transação que executamos (Insert – Update – Delete), primeiramente o SQL “registra” isso no arquivo LDF (Log Database File), para depois aplicar essas transações no arquivo MDF (Master Data File).

E é justamente isso que o backup do LOG nos auxilia, efetuando o backup dessas transações e depois limpando o arquivo LDF, evitando assim, que este arquivo cresça muito, e ocupe muito espaço do disco.

Recomendo a leitura desse artigo.

https://docs.microsoft.com/pt-br/sql/relational-databases/backup-restore/transaction-log-backups-sql-server?view=sql-server-ver15


Vamos colocar a mão na massa

Agora que entendemos os tipos de backups, e já sabemos que a origem de nosso backup sempre será a partir de um backup full.

Executaremos o backup full.

Quando criamos a nossa base de Estudos, ainda não conhecíamos o Recovery Model, consequentemente, a mesma buscou da base model, no meu caso estava como Simple, vamos alterar para Full.

ALTER DATABASE Estudos SET RECOVERY FULL

“Após alterar o recovery model de simple para full, o sql só consegue aplicar esta alteração após a realização do backup full”  https://docs.microsoft.com/pt-br/sql/relational-databases/backup-restore/view-or-change-the-recovery-model-of-a-database-sql-server?view=sql-server-ver15

BACKUP DATABASE Estudos  --- Definindo a base em que iremos efetuar o backup
TO DISK = 'D:\Backups\Estudos_Dados.bak' --- Definindo o caminho onde será salvo o backup (Certifique-se que o caminho exista)
WITH INIT, CHECKSUM, STATS = 10 
--- with init: definirá se o backup será sobrescrito, ou se acumulará varios backups em um mesmo arquivo
--- init não acumula, noinit acumula, default do sql é acumular.
---stats = 10 é uma exibição do percentual do andamento do backup 

Coloquei no script um comentário de cada linha, para que fique claro o que cada comando executou.

CHECKSUM: Esse carinha merece um post, devido à importância. Mas como não é nosso foco, vou deixar um artigo da Microsoft explicando sobre o tema, via de regra sempre use. https://docs.microsoft.com/pt-br/sql/relational-databases/policy-based-management/set-the-page-verify-database-option-to-checksum?view=sql-server-ver15 .

Este script retorna o page verify de cada base do seu ambiente.

SELECT name, page_verify_option_desc
FROM sys.databases

Ou ainda se preferir, basta clicar com o botão direito na base, Properties, Options, no grid, procure a opção Recovery, e analise seu Page Verify

Quero deixar uma ressalva aqui, que estou usando o SQL EXPRESS e, portanto, não tenho alguns recursos, como o COMPRESSION.

Agora vamos executar um backup diferencial.

BACKUP DATABASE Estudos  
TO DISK = 'D:\Backups\Estudos_Dados_diff.bak' 
WITH DIFFERENTIAL, INIT, CHECKSUM, STATS = 10 

O que mudou na sintaxe, entre um script e outro foi apenas a inclusão do “DIFFERENTIAL”.

Vejam o tamanho dos dois arquivos.

Agora por fim, vamos executar o backup do Log

BACKUP LOG Estudos
TO DISK = 'D:\Backups\Estudos_Dados_Log_1.bak'
WITH INIT, CHECKSUM, STATS = 10

No GitHub do Fabricio Lima https://github.com/soupowertuning/SQLScripts, encontrei um script fantástico que verifica o histórico dos backups realizados:

SELECT	
	database_name, name, backup_start_date, backup_finish_date, datediff(mi, backup_start_date, backup_finish_date) [tempo (min)],
	position, first_lsn, last_lsn, server_name, recovery_model, isnull(logical_device_name, ' ') logical_device_name, device_type,
	type, cast(backup_size/1024/1024 as numeric(15,2)) [Tamanho (MB)], B.is_copy_only
FROM msdb.dbo.backupset B
INNER JOIN msdb.dbo.backupmediafamily BF ON B.media_set_id = BF.media_set_id
where backup_start_date >=  dateadd(hh, -24 ,getdate())
	and type in ('D','I','L')
	and database_name = 'Estudos'
order by backup_start_date desc 

Podemos percebe que estamos filtrando o type por (‘D’,’I’,’L’), D, significal Full, I, significa Diferencial, e L significa Log.

No próximo post, vamos conversar sobre o Restore.

Espero que tenham gostado.

Um abraço!!

E até a próxima!!!

2 comentários

  1. Bom dia

    Muito interessante, não sabia que tinha tantas opções de BK, até então eu só havia utilizado Backup Full e mesmo assim por default.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *