Como copiar backup SQL Server para um container no Docker Linux

Fala pessoal, nesse post vou mostrar como podemos copiar um arquivo de backup de um banco de dados SQL Server que esta no github, por exemplo, para dentro de um container SQL e restaurar o arquivo na instância.


Se você não sabe o que é docker, container, ou se já sabe mas quer aprofundar um pouco mais no assunto (voltado ao SQL Server) eu fiz um post bem completo, você pode conferir clicando aqui.


Quando falamos de container, temos que lembrar que existem algumas camadas as quais precisam "trocar arquivos". É bem comum que o host onde esta o docker seja uma VM, nesse caso, você precisa trazer o arquivo para o host e depois colocá-lo dentro do container.


Vamos por a mão na massa!


No meu git eu tenho um backup da base AdventureWorks (base disponibilizada pela própria Microsoft para estudo, eu apaguei várias coisas nesse backup apenas para usar como exemplo).


Eu já tenho um ambiente Linux, com docker instalado e configurado com um container chamado SQL3 rodando. Esse container é uma imagem do SQL Server 2019.


O 1º passo é mapear(clonar) o repositório do github no meu host.

Comando executado:

git clone https://github.com/NomeConta/NomeProjeto.git


Feito o clone, acesso o container e crio uma pasta dentro dele para receber a cópia do backup (nesse caso crio a pasta backup dentro da estrutura padrão de pastas do SQL Server).

docker exec -it sql3 /bin/bash

mkdir /var/opt/mssql/backup


Conferindo se a pasta foi criada corretamente.


Saia do contexto do container novamente para o host.

exit


Acesse o caminho do clone do git no seu host (criado no 1º passo) e a seguir execute a copia do arquivo do host para a pasta criada dentro do container (em nosso exemplo a pasta backup).

cd Docker-SQL

docker cp AdventureWorks.bak sql3:/var/opt/mssql/backup/AdventureWorks.bak


Confirmando se o arquivo foi copiado (acesso o contexto do container novamente, navego até a pasta criada e verifico o que tem dentro).


Agora que o arquivo esta disponível dentro do meu container, basta acessar o SQL Server (usando o mssql-cli ou pode ser pelo management studio e realizar o restore do arquivo, na sequência eu apenas confirmo se o banco foi restaurado).

mssql-cli -S 'localhost,11633' -U sa -P MinhaSenha

RESTORE DATABASE [AdventureWorks] FROM DISK = N'/var/opt/mssql/backup/AdventureWorks.bak'

WITH FILE = 1,

MOVE N'AdventureWorks' TO N'/var/opt/mssql/backup/AdventureWorks.mdf',

MOVE N'test1dat1' TO N'/var/opt/mssql/data/aworks.ndf',

MOVE N'AdventureWorks_log' TO N'/var/opt/mssql/data/AdventureWorks_log.LDF',

NOUNLOAD, STATS = 5

GO

*Quando você utiliza o mssql-cli (ou sqlcmd) para que o comando seja executado você precisa colocar o GO no final.


Conferindo pelo management studio, a base foi restaurada normalmente e esta disponível para uso.


Trabalhar com container é desafiador e ao mesmo tempo muito bacana, o conceito muda um pouco do que estamos acostumados a trabalhar quando se fala de SQL Server, na minha visão o DBA passa a aprender mais também sobre Linux principalmente para ter a base para administrar o SQL Server em container.


Gostou do post? Deixe o seu comentário!


Nos acompanhe em nossas redes sociais!

Grupo VIP Telegram: DBA On boarding

Youtube(vídeos novos todas as quartas): DBA On boarding

Face & Instagram(conteúdo diário): DBA On boarding


Até a próxima, tchau!

115 visualizações0 comentário