Como migramos mais de 50TB de dados On Premises – Parte 2

Essa é a segunda parte da série sobre como migramos mais de 50TB, nessa postagem vou explicar quais formas utilizamos para migrar as databases e as TempDB do SQL Server.

Para a migração das databases foi utilizado duas formas, backup/restore e detach/attach, logo abaixo vou detalhar sobre os dois:

Método Detach/Attach

O modelo Detach/Attach possui um tempo maior de indisponibilidade da database, sugiro esse procedimento para as databases que possuem menor impacto (um exemplo são bases históricas, e que não tem tanta consulta).

Vamos iniciar fazendo o detach da database que pode ser feito manualmente pelo SSMS ou utilizando o comando:

USE [master]
GO
ALTER DATABASE [databasename] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N'databasename'
GO
  • Copie os arquivos .mdf, .ndf e .ldf para o novo disco (recomendo utilizar o ROBOCOPY, conforme falamos neste post).

Com o término da copia dos arquivos, pode ser feito o Attach, manualmente ou com o comando:

USE [master]
GO
CREATE DATABASE [databasename] ON
( FILENAME = N'G:\Dados\databasename.mdf' ),
( FILENAME = N'G:\Dados2\databasename_2.ndf' ),
( FILENAME = N'G:\Logs\databasename.ldf' )
FOR ATTACH
GO

Após isso o banco já vai estar online e no novo diretório.

Método Backup/Restore

A metodologia de backup/restore consegue reduzir muito o tempo de indisponibilidade, recomendo essa forma para databases muito grandes e principalmente para os de maior criticidade, em que a cópia após um detach vai ser demorada. A database deve estar com o Recovery Model FULL e após o restore do backup full ir restaurando os transactions logs.

Procedimentos:

  1. Realizar um backup full da database;
  2. Restaurar o backup full apontando para o novo diretório e utilizando um novo nome (EX: MeuDatabase_New), não pode esquecer de deixar a opção NO RECOVERY habilitada ou setada no comando de restore;
  3. Vai restaurando os backups de logs até o último disponível, sempre com a opção NO RECOVERY habilitada;
  4. Alterar a database atual para read-only e realize mais um backup de log;
  5. Agora você vai fazer um detach na database atual;
  6. Restaure o backup de log que foi feito após setar a base read-only utilizando a opção WITH RECOVERY ou utilize o comando RESTORE DATABASE [MeuDatabase] WITH RECOVERY.
  7. Agora é só renomear a sua database para o nome original.

Com todas as bases restauradas, é preciso alterar o local do TEMPDB, utilize a query abaixo (se seu tempdb tiver mais arquivos é só incrementar no script).

use master
go
alter database tempdb modify file (name = tempdev, filename = 'E:\Tempdb\tempdb.mdf')
go
alter database tempdb modify file (name = templog, filename = 'E:\Tempdb\templog.ldf')
go

Com a alteração do Tempdb, é necessário um restart do serviço para que o apontamento dele funcione.

Após restartar o SQL o procedimento de migração de toda sua instância está completo, incluindo system databases, databases e instalação do SQL Server.

Não é um procedimento muito complexo, porém exige muita atenção na hora de realizar devido à sua criticidade e riscos.

Sendo assim finalizamos a segunda parte sobre como migrar mais de 50TB de dados em um ambiente On Premises!

Caso possuam alguma dúvida sinta-se à vontade para entrar em contato comigo!

Abraços!

Uma ideia sobre “Como migramos mais de 50TB de dados On Premises – Parte 2

  1. Pingback: Como migramos mais de 50TB de dados On Premises – Parte Final | Leonardo Fonseca

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s