Migrando Bancos de Dados com Dbatools

Um blog sobre banco de dados

Migrando Bancos de Dados com Dbatools

Tempo de Leitura: 6 minutos

Introdução

Fala galera.

Hoje estou escrevendo o primeiro post do blog e resolvi iniciar falando sobre migração de bancos de dados utilizando o Dbatools, um módulo do PowerShell que eu já sabia da existência, mas particularmente comecei a utilizar a pouco tempo.

O Dbatools é ideal para realizar manutenções e outras tarefas trabalhosas de forma simples e consequentemente economizar tempo, que sabemos que no nosso dia a dia é algo valioso.

Como gostei bastante da praticidade de executar procedimentos complexos em poucos passos e com ótimos resultados, vou mostrar uma das atividades que realizei a pouco tempo, que é a migração de bancos de dados e que considerei muito simples de se fazer.

Para inciar precisamos entender o que é o Dbatools, que resumidamente é um módulo do PowerShell gratuito que pode ser utilizado para realizar atividades de administração, desenvolvimento e migração do SQL Server.

Como o foco desse post não é explicar detalhadamente o que é o Dbatools e sim mostrar a utilização de um dos seus procedimentos, caso queiram mais informações a respeito, é possível encontrar no site do módulo acessando o seguinte link:

https://dbatools.io

Instalação do Dbatools

Requisitos Mínimos 

Servidor
  • SQL Server 2000
  • Powershell 2.0
Estação de trabalho
  • Windows 7 com PowerShell 3
  • Linux ou macOS com PowerShell 6.1

Instalação

Então vamos à instalação do Dbatools para começar a demonstração.

Como instalar o módulo no PowerShell:

1 – Executar o PowerShell como administrador.
2 – Digitar o comando Install-Module dbatools no PowerShell conforme abaixo: 

3 – Digitar o comando Get-Module dbatools -ListAvailable para verificar se o módulo foi instalado e já está disponível para uso conforme abaixo:

Após a execução do comando recebemos a seguinte mensagem que nos mostra que o módulo foi instalado:

Pronto! Simples assim.

Migração dos bancos de dados utilizando Detach e Attach

Agora com o Dbatools instalado podemos partir para o ponto focal deste post que é migrar bancos de dados de uma instância para outra de maneira mais ágil e simples do que realizar todos os procedimentos envolvidos em uma migração convencional.

NOTA: Isso não elimina a necessidade de realizar as atividades de precaução para executar uma migração, tais como backup dos bancos de dados e outros procedimentos pertinentes a cada cenário. Planeje bem a migração e tenha todas as garantias de que se algo der errado você tem como recuperar seus bancos de dados.

Então vamos lá.

O método que utilizei para realizar este laboratório é de migração através do detach e attach (desanexar e anexar), ou seja, desanexar na origem, copiar e anexar no destino os arquivos de dados dos bancos de dados de uma instância para outra.

Nenhum arquivo é excluído da origem, mas é bom lembrar que o procedimento de desanexar e anexar novamente o banco de dados gera indisponibilidade temporária enquanto cada arquivo de dados é manipulado. É indicado que esse procedimento seja realizado em caso de migração onde o ambiente esteja parado para realizar a manutenção.

Existe também a possibilidade de realizar o procedimento através de backup e restore, que será tratado em um outro post.

Dando continuidade vamos conhecer o cenário.

Será realizada a migração da instância DESKTOP-1V28U1 para a instância DESKTOP-1V218U1\MSSQLSERVER1. A primeira instância já possui alguns bancos de dados criados e a segunda ainda não possui nenhum banco de dados conforme imagem abaixo:

Migração de um banco de dados

Agora vamos para o PowerShell realizar primeiramente a migração de um banco de dados.

O comando para realizar a migração entre as duas instâncias é o seguinte:

Onde -Source indica a instância de origem, -Destination a instância de destino e -Database o banco de dados que desejamos migrar.

NOTA: Se as instâncias estiverem em servidores diferentes é importante verificar se os mesmos estão se comunicando para que seja possível realizar esse procedimento. Além disso, devem ser trocados os nomes das instâncias e do banco de dados para os nomes correspondentes ao ambiente onde o script será executado.

Após o comando ser executado, recebemos a seguinte mensagem:



Podemos observar que o banco de dados foi criado na instância destino com sucesso:

Migração de Vários Bancos de Dados

Agora será realizado o procedimento de copiar todos os bancos de dados da instância origem para a instância destino. Observem que os bancos de dados de sistemas (master, model, msdb e tempdb) serão desconsiderados.

A única diferença entre o comando para migrar apenas um banco de dados e o comando para migrar todos os bancos de dados é que dessa vez será especificada a opção -AllDatabases.

Após o comando ser executado, recebemos a seguinte mensagem:

Podemos observar que todos os bancos de dados foram criados na instância de destino com sucesso:

Comparativo

Após os procedimentos realizei um comparativo entre o tamanho que ficaria cada script T-SQL e o tamanho dos scripts PowerShell que foram executados na migração e o resultado é o seguinte:

Um banco de dados

 

 

 

 

Quatro bancos de dados(quantidade utilizada na demonstração)

 

 

 

 

Conclusão 

A ideia desse post é apresentar uma possibilidade bem simples do que se pode fazer utilizando o módulo do Dbatools e difundir a sua utilização que pode ajudar muito nas tarefas do dia a dia de um DBA.

Recomendo o acesso ao site (https://dbatools.io) para um melhor entendimento de todas as atividades que são oferecidas pelo módulo.

É isso pessoal.

Qualquer dúvida ou sugestão deixem nos comentários que irei responder o mais rápido possível.

Agradeço a todos que tiveram o interesse de ler esse primeiro post e conhecer o blog. Espero de agora em diante contribuir bastante com a comunidade de dados.

Até a próxima!!!

Referências:

 

5 3 votos
Article Rating
Inscrever-se
Notificar de
guest

8 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários
Felipe Portela

Muito bom artigo! Parabéns pela iniciativa.

Pedro Magalhães

Muito bom meu amigo!!!!
Vou acompanhar aqui direto.

Edson

A ferramenta tem que está instalada na instância primária , ou seja , a que vai fazer a transferência ?

Gustavo Larocca

Parabéns pelo post Anderson. O DBA Tools sem duvidas é uma caixa de ferramentas que ajuda em uma gama de possibilidades na vida de um DBA!! Continue assim meu parceiro!