Notas sobre o Release


|9.1 Capítulo 8. Recuperando um Banco de Dados

|9.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 ]