Notas sobre o Release


10.1 Capítulo 8. Recuperando um Banco de Dados

10.1.1 Como Utilizar E/S Suspensas

No Capítulo 8."Recuperando um Banco de Dados", a seguinte seção sobre a utilização da função E/S suspensas foi incluída e atualizada:

Nota:
As informações abaixo sobre o utilitário db2inidb substituem as informações do manual O Que Há de Novo na Versão 7.2.

db2inidb é uma nova ferramenta enviada com o DB2 que pode fazer a recuperação de falha e pôr um banco de dados em estado de avanço pendente.

E/S Suspensas suporta disponibilidade contínua de sistema por proporcionar implementação integral para tratamento de espelhamento dividido online, ou seja, dividir um espelhamento sem desligar o banco de dados. Se um cliente não tem condições de fazer backups online ou offline em um grande banco de dados, backups ou cópias de sistema podem ser feitas a partir de um espelhamento utilizando-se E/S suspensas e espelhamento dividido.

E/S suspensas evita que o disco grave para assegurar que o espelhamento dividido de um banco de dados seja consistente. Todas as operações de bancos de dados, além de restaurarem e fazerem backup online, devem funcionar normalmente enquanto o banco de dados está suspenso. Entretanto, algumas operações podem interromper-se durante a tentativa de apagar páginas sujas do conjunto de buffers ou acrescentar buffers ao registro. Essas operações devem reiniciar normalmente assim que as E/S do banco de dados forem reiniciadas. É importante que as E/S do banco de dados sejam reiniciadas a partir da mesma conexão de que elas foram originalmente suspensas. Caso contrário, uma tentativa subseqüente de conexão pode interromper-se se exigir a limpeza de páginas sujas do conjunto de buffers para o disco.

O espelhamento de um banco de dados envolve principalmente copiar o conteúdo integral do diretório do banco de dados. É também necessário copiar o diretório de registro e quaisquer contêineres de área de tabela, se não estiverem localizados no diretório do banco de dados. Como o banco de dados espelhado é dependente desses caminhos de diretório, os caminhos para os quais esses diretórios são copiados devem ser idênticos aos do sistema principal. Isso implica que a instância deve também ser a mesma. Como resultado dessa dependência, não é possível espelhar um banco de dados no mesmo sistema que o principal, a não ser que a nova opção "relocate" da ferramenta db2inidb seja utilizada.

O propósito da opção "relocate" é realocar um banco de dados em um determinado sistema, utilizando a arquivo de configuração especificado. Isso pode envolver alterar o diretório interno do banco de dados, nomes do diretório de contêiner e do diretório de registro, alterar o nome da instância e alterar o nome do banco de dados. Assumindo-se que o diretório do banco de dados, diretórios de contêiner e diretório de registro foram espelhados com sucesso nos diferentes caminhos de diretório no mesmo sistema que o banco de dados principal, a ferramenta db2inidb pode ser utilizada juntamente com a opção "relocate" para atualizar os caminhos internos do banco de dados espelhado. Um cenário de utilização com essa opção pode ser encontrado abaixo.

Dependendo de como os dispositivos de armazenamento estão sendo espelhados, as utilizações de db2inidb irão variar. As seguintes utilizações assumem que todo o banco de dados está espelhado, consistentemente através do sistema de armazenamento.

Em um ambiente com vários nós, a ferramenta db2inidb deve ser executada em cada partição antes que a imagem dividida possa ser utilizada a partir de qualquer uma das partições. A ferramenta db2inidb pode ser executada em todas as partições simultaneamente.

  1. Clonando um Banco de Dados

    O objetivo aqui é ter um clone do banco de dados principal para ser utilizado somente para leitura. O seguinte procedimento descreve como um banco de dados clone pode ser feito:

    1. Suspenda gravações de E/S no banco de dados principal, digitando o seguinte comando:
           db2 set write suspend for database
      
    2. Utilize comandos de nível de sistema operacional para dividir o espelhamento do banco de dados principal.
    3. Reinicie gravações de E/S no banco de dados principal, digitando o seguinte comando:
           db2 set write resume for database
      

      Após executar o comando, o banco de dados principal deve voltar ao estado normal.

    4. Monte o espelhamento dividido do banco de dados a partir de outro sistema.
    5. Inicie a instância do banco de dados digitando o seguinte comando:
             db2start
      
    6. Inicie a recuperação de falha do DB2 digitando o seguinte comando:
      db2inidb database_name AS  SNAPSHOT
      
      Nota:
      Esse comando removerá o estado de gravação suspensa e retomará as alterações feitas por transações que estavam em ação no momento da divisão.

    Você também pode utilizar esse processo para fazer um backup offline, mas se restaurado no banco de dados principal, esse backup não pode ser utilizado para avançar, porque a cadeia de registros não será igual.

  2. Utilizando o Espelhamento Dividido como Banco de Dados de Espera

    Como o banco de dados espelhado (em espera) está continuamente avançando através dos registros, novos registros que estejam sendo criados pelo banco de dados principal estão constantemente sendo recuperados do sistema principal. O seguinte procedimento descreve como um espelhamento dividido pode ser utilizado como um banco de dados de espera:

    1. Suspenda gravações de E/S no banco de dados principal.
      	db2 set write suspend for database
      
    2. Utilize comandos de nível de sistema operacional para dividir o espelhamento a partir do banco de dados principal.
    3. Reinicie as gravações de E/S no banco de dados principal de modo que ele retorne ao processamento normal.
      	db2 set write resume for database
      
    4. Monte o espelhamento dividido do banco de dados para outro sistema.
    5. Posicione o espelhamento em avanço pendente e avance o espelhamento.
      	db2inidb database_name AS STANDBY
      

      Nota:
      Esse comando removerá o estado de gravação suspensa e posicionará o banco de dados espelhado em estado de avanço pendente.
    6. Copie os logs configurando um programa de saída de usuário para recuperar arquivos de registro a partir de um sistema principal para assegurar que os registros mais recentes estejam disponíveis para esse banco de dados espelhado.
    7. Avance o banco de dados para o final dos logs.
    8. Retorne à etapa f e repita esse processo até que o banco de dados principal esteja inativo.

  3. Utilizando o Espelhamento Dividido Como uma Imagem de Backup

    O seguinte procedimento descreve como utilizar o banco de dados espelhado como uma imagem de backup para restaurar no banco de dados principal:

    1. Utilize comandos de sistema operacional para copiar os dados espelhados e registros sobre o banco de dados principal.
    2. Inicie a instância do banco de dados digitando o seguinte comando:
             db2start
      
    3. Execute o seguinte comando para posicionar o banco de dados espelhado em um estado de avanço pendente e remover o estado de gravação suspensa.
      db2inidb database_name AS MIRROR
      
    4. Avance o banco de dados para o final dos logs.
  4. Dividindo um Espelhamento no Mesmo Sistema que o Banco de Dados Principal

    O seguinte procedimento descreve como utilizar a opção "relocate" da ferramenta db2inidb para espelhar um banco de dados no mesmo sistema que um banco de dados principal. O exemplo assume que o banco de dados será utilizado sob uma nova instância.

    1. Crie uma nova instância no sistema atual.
    2. Suspenda gravações de E/S no banco de dados principal.
      	db2 set write suspend for database
      
    3. Utilize comandos de nível de sistema operacional para dividir o espelhamento a partir do banco de dados principal.
      Nota:
      O diretório de banco de dados, os diretórios de contêiner e o diretório de registro devem ser copiados para diferentes diretórios. Se os diretórios de contêiner ou o diretório de registro existirem sob o diretório de banco de dados, somente o diretório de banco de dados precisa ser copiado.
    4. Reinicie gravações de E/S no banco de dados principal de modo que ele retorne ao processamento normal.
      	db2 set write resume for database
      
    5. Crie um arquivo de configuração com as seguintes informações:
      	DB_NAME=<name>,<optional new name>
      	DB_PATH=<primary db dir path>,<mirrored db dir path>
      	INSTANCE=<primary instance>,<mirror instance>
      	LOG_DIR=<primary db log dir>,<mirrored db log dir>
      	CONT_PATH=<primary db container #1 path>,<mirrored db container #1 path>
      	...
      	CONT_PATH=<primary db container #n path>,<mirrored db container #n path>
      	NODENUM=<node #>
      

      Nota:
      Os campos LOG_DIR e CONT_PATH são obrigatórios somente se o diretório de registro e os diretórios de contêiner existirem fora do diretório do banco de dados. Todos os outros campos são obrigatórios, com exceção de NODENUM que assumirá o valor de zero como padrão se nada for especificado.
    6. Inicie o banco de dados a partir da instância recém-criada.
      	db2start
      
    7. Realoque o banco de dados espelhado, remova o estado suspenso e posicione o espelhamento em estado de avanço pendente:
      	db2inidb database_name as STANDBY relocate using config_file
      
    8. Copie os logs configurando um programa de saída de usuário para recuperar arquivos de registro a partir de um sistema principal, assegurando que os logs mais recentes estarão disponíveis para esse banco de dados espelhado.
    9. Avance o banco de dados para o final dos logs.
    10. Retorne à etapa h e repita esse processo até que o banco de dados principal esteja inativo.


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]