sexta-feira, 13 de outubro de 2017

Netbackup - Problema com Restore de Banco SQL

Olá pessoal,
Muitos assuntos para falar de NBU, mas quero abordar um problema que ocorrido recentemente (hoje!) ao tentar executar um restore de uma base SQL que tinha sido deletada de uma instance. Antes do erro, como está configurado o ambiente.

Master → Linux com NBU 7.7.3
Media → Appliance 5230 com NBU 7.7.3
SQL Client → 7.7.3

SQLServer 2008 montado em um cluster Windows 2012 com 06 DB Instances, ou seja, 06 clusters groups. Basicamente o restore era de uma base de uma dessas instances.

O primeiro passo é abrir a interface gráfica do NBUClient e preencher as informações de HOST/Instance. Reparem que o Client foi aberto com meu usuário, portanto 'carregado' com as permissões pertinentes a ele.

O primeiro erro:
Ao dar Ok, veio a primeira mensagem de erro conforme abaixo.

Aí lembrei que todos os serviços do NBU estão amarrados a um usuário de serviço com permissão no banco. Preenchi as infos de Userid/Pass deste usuário e ainda assim não funcionou. Verificado posteriormente que este usuário de serviço estava com login interativo desabilitado.

A ação realizada então, foi o DBA liberar meu usuário com permissão sysadmin somente na Instance que iremos trabalhar.

Dica: Quando for abrir o NBU SQLClient, right-click e abra-o com a opção "Run as administrator".



Sigamos. Com o client já aberto e autenticado na Instance, utilizar a opção File Restore.

O segundo erro:
Esse erro indica falta de permissão para carregar as imagens de backup gravada.


Isso ocorre, pois apesar do meu usuário ter permissão na instance, devemos lembrar que o backup foi gravado com outro usuário.

Esse foi simples de resolver. Fomos no masterserver e dentro do altnames, criamos um arquivo chamado "No.Restrictions", o que em termos práticos, libera a bagunça, ou seja, pode-se fazer restore de um lado para outro sem nenhuma restrição e com usuário diferente do que o usado para o backup. Podemos explorar mais esse parâmetro em outra oportunidade. 



Dica: Não esquecer de remover o "No.Restrictions" depois

Com tudo liberado, feito uma nova tentativa e agora sim, as imagens de backup apareceram.

Selecionado a imagem necessária.




Aqui algumas opções interessantes e cabe um post somente para restore de SQL mais pra frente.

- Restore do objeto selecionado
- Opção de replace setada, pois tinha a confirmação que poderia fazê-lo (sempre confirme com o cliente e/ou DBA). Não saia sobrescrevendo bancos por aí.
- Recovery - Essa opção faz o recover do banco ao final do restore, aplica os logs necessários e deixa o banco já online e acessível.


Deixado a opção "Lauch Immediately" e Restore.

Do lado do NBU SQL Client, apertando "F9", é possível acompanhar o restore.


Do lado do NBU Master Server também dá.


E do lado do SQL Visual Studio também. Reparem que durante o processo de restore, a base fica com status "Restoring"



 Restore finalizado com sucesso. Base liberada para o cliente.




Abraços

quinta-feira, 31 de agosto de 2017

Bem vindo Netbackup

Olá pessoal,
Os últimos anos foram complicados para escrever. Muitas coisas acontecendo, muitas mudanças. Mas enfim, vamos tentar voltar aos poucos a escrever e agora com uma novidade chamada Veritas Netbackup.

Isso aí.. trocamos o software de backup e estamos agora nos adaptando ainda a ferramenta. Coisas boas vindo, coisas não tão boas... Mas aos poucos vamos aprendendo e a idéia é continuar o que fizemos nas últimas postagens de TSM: Dicas de problemas que passamos e na prática, como foi resolvido.

E para isso, mudamos de nome. Agora somos tsm-netbackup-napratica.blogspot.com.

Um abraço e vamos em frente.
Sasso

terça-feira, 21 de maio de 2013

TSM 5.5 - Reorg DB

Olá pessoal,
Esses dias na empresa executamos um reorg em um banco do TSM 5.5. Sim é quase backlevel. Sim, já podíamos ter migrado para 6, mas não deu. O mesmo atingiu impressionantes 543GB e 100% de uso.

Para quem custa acreditar que o TSM 5.5 chegasse a esse tamanho.:






Após deleção de nodes antigos e exports de outros, o banco ficou altamente fragmentado e a execução do reorg foi inevitável pois nem mesmo alguns selects estavam rodando, pois estavam apresentando mensagens de "SQL temporary table storage has been exhausted".


Abaixo está o passo-a-passo do procedimento executado.

1- Após finalização da janela de backup, foi desabilitado todas as sessões para que nada novo entrasse.:




2- Migration de todos os diskpools para fita.:






3- Validação se todos os diskpools estavam zerados.:










4- Execução de um backup full do DB do TSM.:





 





5- Validação da execução do backup do DB.:








6- Criação de uma deviceclass do tipo FILE com o Directory apontando para o path onde será gerado o dump.:














7- Excesso de zelo. Backup do devconfig e volhist.:











8- Excesso de zelo. Listar volumes dos DB e LOG atuais.:






















 9- Agora sim. Efetue halt e prossiga com o unloaddb.:








Obs.: Aqui uma observação. O erro estava ocorrendo durante a leitura o dsmserv.dsk. Após algum tempo analisando percebemos que como temos mais de uma instância ativa no mesmo servidor, por algum motivo, mesmo tempo exportado todas as variáveis da instância correta, ele tava buscando um dsmserv.dsk de outro caminho.

10- Optamos por utilizar o parâmetro -k e passando o nome do Server da instância, no caso Server4. Com isso ele carregou todas as variáveis corretas e passou.












Obs.: Reparem que nesse momento o TSM emite um Warning de que está rodando em modo Standalone e logo abaixo o dump sendo gerado no caminho que você passou quando criou a deviceclass.:

 



 






11- Validação do término do processo de unloaddb.:










12- Após o processo de unloaddb, é necessário rodar o comando de loadformat para formatação dos novos volumes de DB e LOG.









Obs.: O comando precisa passar parâmetro sobre a quantidade e o nome dos logvolumes e dos dbvolumes. Uma dica aqui é que não encontrei na documentação oficial desse comando que logo após o nome do logv/dbv é necessário passar o tamanho em MB que será criado esses volumes. Foi feita uma tentativa sem passar o tamanho e tava dando erro, mas nada como uma pesquisa boa na net para encontrar a resposta.

13- Reparem que logo após a formatação dos logvolumes, o processo começa a formatação dos dbvolumes.:











14- Valide se finalizou com sucesso. Reparem que no final a log informa que o DB está pronto para ser dado load.:









15- Agora é o momento de efetuar loaddb. Reparem no comando que é necessário informar o caminho e o nome do dump que foi gerado no processo de unloaddb.:








Obs.: Vejam que logo no começo do processo a log informa que o dump está consistente e que ao final não será necessário efetuar auditdb.:




16- Validem se finalizou com sucesso e vejam que ao final vem a mesma mensagem onde informa que não é necessário efetuar o auditdb.:










17- Aqui, apenas uma validação do DB subindo-o em modo foreground.:













18- Com a validação Ok, basta dar halt e subir o banco em modo background normalmente. Aqui a validação do DB como ficou após o processo.:

 





Obs.: Uma dica aqui é não esquecer de dar um update server entre a librarymanager e a libraryclient com o forcesync, senão fica dando erro de autenticação entre as duas.

Resumindo.:
Tínhamos um banco de 543GB e 100%
Ao final do processo ficamos com um banco de 80GB e 78% de uso, ou seja, efetivamente um banco de 62,4GB.


Espero que tenham curtido. Qualquer dúvida, sugestão ou correção sobre o que foi escrito aqui ou em outros posts, escreva para tsmnapratica@gmail.com ou publiquem na área de comentários.

Caso queiram compartilhar a solução de algum problema que tiveram, escreva também que faço a publicação.

Abraços.

quarta-feira, 26 de dezembro de 2012

TSM Database Backup

Pessoal, tudo bem?

Recebi algumas perguntas sobre o backup do DB e pelo teor dessas perguntas, é possível concluir que principalmente novos "desbravadores" dessa poderosa ferramenta possui algumas dúvidas sobre como lidar com ele.

Eu considero, basicamente o backup do DB do TSM o backup mais importante do nosso ambiente, uma vez que é nele que estão todos os apontamentos, informações a respeito de todo ambiente de backup, desde informações de server e clients, até informações sobre o gerenciamento dos dados armazenados.

E por que o backup do DB é o mais importante? Se o servidor do TSM sofrer um crash e houver corrupção do DB, será necessário fazer restore dele. Se você não possuir um backup atualizado, o banco voltará com a posição do último backup e dessa forma perderá todas as informações gravadas e armazenadas desde a data do último backup até o crash.

Exemplo (verídico).:
O ambiente TSM foi implementado em 01/MAR/2012 e o último backup do DB foi executado nessa data. Infelizmente, hoje 26/DEZ/2012, caos o DB seja corrompido, será necessário fazer o restore com base no último backup full, ou seja, se o último backup do DB foi no dia 01/MAR, todos os backups gravados entre 01/MAR e 26/DEZ foram definitivamente perdidos. Isso ocorre porque, todos os dados gravados nas fitas de lá para cá, ao voltar o restore é como se esses dados não existissem, já que o TSM voltará com data de 01/MAR.

Para verificar quando foi o último backup do DB, utilize o comando.: q volhist t=dbb ou t=dbs

Tipo de Backup
Full - Executa o backup full do banco do TSM.
Incremental - Executa um backup incremental de todos os dados do DB que foram modificados desde o último backup full executado com sucesso.
DBSnapshot - Executa um backup full (image) do banco do TSM sem interromper o ciclo de execução dos backups fulls e incrementais. Normalmetne utilizado para ambientes com DRM configurado, já que essas cópias, são as que vão para cofre externo (offsite).

Executar o backup do DB é um processo administrativo. Com um schedule t=a é possível agendar sua execução, e da mesma forma que o backup é agendado é possível checar sua execução com um simples query event.

Execução
A execução do backup do DB é simples e lembre-se que na dúvida de executar algum comando, na própria console é possível chamar o HELP que mostrará todos os parâmetros necessários.

Exemplo de Backup Full (DBB).
backup db devc=device_class_name type=full scratch=yes wait=yes

Exemplo de Backup Incremental
backup db devc=device_class_name type=incremental scratch=yes wait=yes

Exemplo de Backup Snapshot (DBS)
backup db devc=device_class_name type=dbs scratch=yes wait=yes

Criando um schedule administrativo para o backup do DB.:
def sched backup_db t=a cmd='backup db t=full devc=lto scratch=yes wait=yes' active=yes startt=09:00 startd=today per=1 peru=day day=any

O resultado desse comando é a criação de um schedule chamado BACKUP_DB que executará um backup full todos os dias as 09:00hs

Para checar a execução do schedule.: q event backup_db t=a
Ou você pode checar diretamente o volhistory.: q volhist t=dbb

Um abraço e um excelente 2013 a todos os colegas, principalmente aqueles que estarão de plantão nessa virada!

quarta-feira, 29 de agosto de 2012

Atraso em respostas!!!

Pessoal, boa tarde,
Peço desculpas por demorar em responder aos emails que recebo. Estou passando por alguns momentos turbulentos na empresa onde acabei me distanciando dos posts e dos emails.

Estou respondendo na medida do possível, já que a lista não é muito pequena...rs ainda bem

Em paralelo a isso, convido a todos a escreverem artigos ou dicas sobre alguns problemas que passaram e como fizeram para resolver. Mande para o email tsmnapratica@gmail.com que assim que possível, será publicado.

Um abraço

sexta-feira, 18 de maio de 2012

Dica sobre Include

Oi pessoal, desculpem a demora, ando meio atribulado com alguns assuntos na empresa.

Recebi uma dúvida essa semana de um colega sobre um problema que ele estava tendo com INCLUDE. Basicamente o problema consistia que o backup somente gravava diretórios, sem levar os arquivos e como solução (paleativa), era necessário colocar include para cada subdiretório que existia.

O INCLUDE que ele estava passando era.:
Include "C:\XPTO\*"     MgmtClass

A sugestão que passei foi utilizar esse INCLUDE.:
Include "C:\XPTO\...\*.*" MgmtClass

A idéia é porque o \... entende que pode haver de 0 a n diretórios abaixo da pasta raiz XPTO, portanto o *.* irá incluir todos os arquivos encontrados.

Recebi depois feedback do colega dizendo que funcionou!! 

A lista de possibilidades para trabalhar com Includes e Excludes é enorme. Qualquer dia vamos escrever mais a respeito.

Qualquer problema, dúvida, sugestões ou correções, mande um email para tsmnapratica@gmail.com ou poste um comentário como fez nosso colega Cartola.

Um ótimo dia a todos!