Parte integrante da apostila Segurança em Banco de Dados Instituto AVM – Pós-graduação em Banco de Dados Autor Max Bianchi Godoy Técnicas de Backup e Recovery O backup refere-se à técnica de realização de cópia de segurança dos dados de um dispositivo de armazenamento para outro com o objetivo de que posteriormente, esses dados possam ser recuperados (recovery) no caso de algum problema ou por uma necessidade específica. A origem da palavra backup vem da chamada “era industrial” e foi utilizada para identificar as peças de reposição dos carros que saiam das linhas de montagem e das máquinas e equipamentos sobressalentes que as substituíam, em caso de defeito. Assim, da mesma forma, realizar um backup é fazer uma cópia de segurança de determinado trabalho, arquivo, banco de dados ou sistema, a fim de que, no caso de uma eventualidade que impeça o seu uso ou leitura, estes possam ser rapidamente recuperados, minimizando, assim, os prejuízos e permitindo a continuidade dos serviços. Portanto, de uma forma geral, o backup corresponde a uma tarefa essencial para todos os que utilizam computadores e outros dispositivos informatizados. Atualmente, os mais conhecidos dispositivos de gravação para os backups são: as fitas magnéticas ou DAT, os CD-ROMs, os DVDs, o Blue-Ray e os discos rígidos externos. Além destes, existem inúmeros softwares que podem ser utilizados para criação de backups e para posterior recuperação dos dados (recovery). Basicamente, a importância dos backups é assegurar a integridade dos dados contra possíveis problemas que possam eventualmente ocorrer nos sistemas, mais equipamentos ou nas unidades de armazenamento utilizadas. Além disso, devem assegurar a recuperação de arquivos dos usuários que possam ser apagados ou corrompidos acidentalmente ou algum tipo de vírus ou outras pragas virtuais. Dessa forma, a fim de ser caracterizada a realização de um backup contingencial (para ser usado em caso de contingências), o usuário deve utilizar um outro meio de armazenamento, que não esteja diretamente vinculado aos equipamentos de uso ou à utilização normal do equipamento em que se encontram os arquivos e dados que estão sendo utilizados. Portanto, nesses casos, o ideal é a utilização de alguma mídia removível, após a efetivação dos procedimentos de backup e sua guarda realizada em local seguro e, se possível, distante do local das atividades normais. Tal cuidado é muito importante, pois na eventual ocorrência de um dano ao local onde está o equipamento ou mesmo de algum problema no Banco de Dados o backup anteriormente realizado deverá estar em local seguro e, de preferência, longe e isolado do problema que levou à indisponibilidade daquela informação, a fim de que possa ser baixado (recovery) e, no menor tempo possível, as atividades operacionais retornarem à normalidade. Assim, a realização de backups e sua administração são os mecanismos determinantes da reversibilidade dos efeitos e dos danos provocados por falhas. Ocorrido um problema ou uma falha, e reinicializado o Banco de Dados, o sistema gerenciador de Banco de Dados deverá ser capaz de verificar se o encerramento anormal ocorreu, portanto, é fundamental que esse possua ferramentas capazes de determinar as providências cabíveis e as tomar no menor tempo possível. Tais providências correspondem, normalmente, a decidir se o backup deve ser restaurado ou não, determinar quantas e quais as transações devem ser desfeitas e se é necessário verificar ou rolar o log de transações. Disciplina Banco de Dados comerciais – Professor Rinaldo Demétrio Além disso, há a necessidade de backups operacionais, isto é, a realização de cópias de segurança, efetivadas durante a execução das atividades operacionais, que ficam bem próximas ou dentro do mesmo ambiente de trabalho, devido à fragilidade dos equipamentos ou necessidade premente da informação. Nesses casos, além das técnicas já vistas, de acordo com a necessidade, podem ser requeridas outras técnicas de backups, as quais veremos a seguir. Uma das técnicas mais conhecidas de realização de backup de Banco de Dados é chamada de Stand by, que se utiliza do recurso de um Servidor de Backup. Contudo, nessa técnica, no momento em que ocorrer a sua utilização, será necessário um auxílio externo para que esse dispositivo possa ficar disponível para utilização. Segundo Molina (1990), há uma técnica conhecida em que os backups realizados ocorrem remotamente: existem dois tipos específicos de backups remotos, sendo um conhecido como “1safe” e, o outro, como “2-safe”. Dessa forma, no modelo “1-safe”, a grande maioria das transações realizadas no Banco de Dados principal são automaticamente propagadas para o Servidor de Backup e, logo após, aplicadas. Tal operação representa que, em caso de algum tipo de desastre, algumas transações que haviam sido executadas e não geraram os logs poderão ser perdidas. Já no modelo “2-safe”, o Servidor Principal e o de Backup executam as atualizações em duas fases, para certificar que as transações serão aplicadas em ambos os Servidores. Tal opção diminui a performance do Banco de Dados, uma vez que, em cada transação efetivada, seria necessário esperar o retorno do Servidor de Backup, sinalizando o êxito da execução. Nesses processos, segundo King (1991), os Servidores de Banco de Dados podem apresentar-se em três estados (modos) diferentes chamados de produção, em que se realiza a operação normal, em modo de backup ou em situação de “recuperação”. Assim, apenas quando o servidor de Banco de Dados estiver em produção é que poderão ser realizadas as operações normais, ou seja, o Banco de Dados está disponível para receber dados ou realizar o processamento das transações e essas irão gerar os logs para o Servidor de Backup. Tipos de Backup Backups Completo (Full) O backup conhecido como completo ou Full consiste em realizar o backup de todos os arquivos de um determinado local ou sistema para a mídia de backup, lembrando que os dados serão uma fotografia estática do momento em que foram copiados (não são alterados até o próximo backup). Assim, um backup completo não verifica se o arquivo foi alterado desde o último backup, pois realiza uma cópia de todas as informações solicitadas para a mídia de backup; mesmo que os arquivos fontes tenham modificações, essas só serão transferidas junto com os demais arquivos que não foram modificados no próximo Full. Dessa forma, verificamos porque os backups completos não são realizados com muita frequência, uma vez que todos os arquivos seriam gravados na mídia de backup, sendo que, na maioria das vezes, apenas poucos desses arquivos teriam sido alterados ou atualizados. Dessa maneira, como vantagem, apresenta o fato de os arquivos serem mais fáceis de localizar porque estão todos na mídia de backup, requerendo apenas uma mídia ou um mesmo conjunto de mídias para a recuperação dos arquivos. Contudo, como desvantagem há o fato de ser, normalmente, bem mais demorado que os outros tipos e, se os arquivos forem atualizados/alterados com pouca frequência, os arquivos gravados nos backups serão muito semelhantes. Backups Incrementais 2 Os backups incrementais, de forma diferente dos completos, primeiro verificam se o horário de alteração gravado de um arquivo foi mais recente que o do último backup e, caso o arquivo não tenha sido modificado desde o último backup realizado, este será ignorado na relação de arquivos a fazerem parte do backup. Contudo, se as datas de modificação dos arquivos forem mais recentes do que a data registrada como sendo do último backup, isto é, se houve modificações, este será incluído no backup a ser realizado. Quanto à sua utilização, normalmente os backups incrementais trabalham em conjunto com os backup completos como, por exemplo, realizando um backup completo (Full) semanal e, depois, diariamente, backups incrementais frequentes ou diários. Nesse caso, para se reconstituir todo o Banco de Dados, numa eventual necessidade, é obrigatório baixar, realizar o recovery (inicialmente do Full) seguido de todos os incrementais até a data da ocorrência do problema que danificou a base. Como vantagem principal, há o fato de os backups incrementais serem realizados bem mais rápido que os backups completos; como principal desvantagem, o fato de, para ser restaurado determinado arquivo, é necessário procurar em diversos backups incrementais até que este seja encontrado, além do fato exemplificado que é o de, para ser restaurado um sistema ou base de dados completa, seria necessário restaurar o último backup completo e todos os backups incrementais subsequentes. A fim de minimizar a necessidade da procura em todos os backups incrementais quando da procura de determinados arquivos, foi implementada uma tática ligeiramente diferente, conhecida como backup diferencial. Backups Diferenciais Os backups diferenciais de certa forma são similares aos incrementais, uma vez que os dois realizam cópias de segurança somente dos arquivos modificados, porém os backups diferenciais apresentam a característica de serem acumulativos. Em um backup diferencial, uma vez que os arquivos são alterados, continuam a ser incluídos em todos os backups diferenciais até que seja realizado outro backup completo. Dessa forma, cada backup diferencial apresentará todos os arquivos modificados desde o último backup completo realizado, bastando, para executar uma restauração completa, apenas o último backup completo associado à baixa do último backup diferencial. Como estratégia de utilização, os backups incrementais agem em conjunto com os completos (Full), ou seja, periodicamente é realizado um backup completo e, até que o próximo ocorra, são feitos backups diferenciais. Contudo, uma das desvantagens desse tipo de backup é o fato de que, como acumulam os arquivos alterados desde o último backup Full, a cada um deles o seu tamanho vai crescendo ao longo do tempo, se mais arquivos forem modificados, como normalmente acontece. Tal fato faz com que os backups diferenciais, em termos de estratégia, fiquem entre os backups incrementais e os completos em termos de utilização de mídias de armazenamento e, também, velocidade. Contudo, como grande vantagem, está o fato de se utilizar um menor número de backups a serem restaurados e, por essa característica, normalmente, é o mais utilizado quando o volume de dados atualizados não for tão grande em quantidade ou em volume. Apresenta como vantagem a recuperação apenas dos últimos backups normal e diferencial. Contudo, como desvantagem está o fato de que uma restauração completa do sistema poderia levar mais tempo do que se forem utilizadas outras formas de backup; no caso de ocorrerem diversas alterações nos dados, estes podem levar mais tempo do que backups do tipo incremental. Alguns autores citam essas formas de backup apresentadas anteriormente como estratégias, uma vez que prescindem de análise para sua utilização. Contudo, tais autores acrescentam, como sendo espécies de backup, os seguintes. Backups Operacionais 3 • Representam as cópia de segurança realizadas das atividades operacionais e ficam acondicionadas próximas ou dentro do Ambiente de Trabalho, pois podem ser requeridas com certa urgência para continuar as atividades operacionais. Backups Contingenciais • São cópias guardadas fora do Ambiente de Trabalho a fim de serem utilizadas para resolver Situações de Contingência. Backups Legais • Constituem-se das cópias de segurança realizadas para fins de manutenção de Registros Históricos, Fiscais ou para Auditoria, uma vez que podem ser solicitadas para esclarecimentos ou por solicitações legais ou fiscais. Recuperação Completa e Parcial de Banco de Dados A recuperação completa dos Bancos de Dados é, via de regra, para os usuários, uma tarefa simples. Contudo devemos lembrar que, normalmente, dependendo do tamanho do banco de dados, é algo bem demorado devendo ser realizado em horários de janela de processamento, em que o sistema não seja utilizado. Devemos lembrar que ao ser baixado integralmente o backup completo todos os dados anteriores presentes no backup serão substituídos pelos do backup, ao ser feito o recovery. Às vezes, porém, além do Banco de Dados principal, outras tabelas ou arquivos, que não apresentaram problemas e estão mais atualizadas que as do backup realizado, poderiam representar problemas se fossem substituídas por versões mais antigas. Assim, a recuperação completa dos dados, operacionalmente, deve requerer uma análise detalhada e um cuidado em seu planejamento e realização, uma vez que, como vimos, ao ser recuperado completamente, o Banco de Dados irá substituir o anterior integralmente. Dessa forma, a fim de evitar as perdas de alguns dados que foram atualizados no período de “janela” (espaço) entre um backup e outro, podem ser utilizadas algumas estratégias para minimizar os problemas. Para tanto, é necessário que os usuários sejam informados de como são realizados os procedimentos e possam tentar verificar se existem dados e arquivos em bom estado, com datas de atualização posteriores às da realização dos últimos backups, os quais podem ser, pelo próprio usuário, copiados para outras áreas ou mídias de armazenamento e, depois da restauração, sobrepor alguns dos dados restaurados. Uma das formas de minimizar tais problemas é a utilização de rotinas que contenham a utilização de comandos de comparação de valores e de arquivos, que variam de acordo com o Sistema de Recovery ou SGBD utilizados, em que a restauração de todos os arquivos poderá ser realizada em outra pasta/diretório que não os de uso e tais rotinas verificarão, por exemplo, se os arquivos são idênticos, significando que o arquivo não precisa ser substituído e que está bom, ou se a data do arquivo que está no backup é anterior ao do arquivo presente no diretório e, se este estiver em boas condições, não será trocado. A restauração parcial de backups implica, basicamente, as especificidades dos softwares utilizados para realizar os backups. Como a maioria destes apresenta registros de log internos bem detalhados, é possível permitir aos usuários responsáveis a escolha específica do que se quer restaurar, fornecendo um estado operacional consistente e utilizável. Contudo, esse processo de escolha pode ser normalmente, um pouco complicado, uma vez que pode depender de intervenção manual ou da confecção de rotinas. 4