Tutorial Parte 5 - Restaurando um backup (ontape)
No tutorial anterior demonstrei vários meios de gerar o backup do Informix utilizando a ferramenta ontape. Agora vou demonstrar a parte mais importante, restaurar estes backups!
- Visão geral do ambiente que será restaurado
- Simulando uma parada não programada
- Restaurando o Banco de Dados
Visão geral do ambiente que será restaurado
Já foi demonstrado como gerar o backup para: Fita, STDIO, Diretório e Arquivo
Aqui irei trabalhar apenas com a configuração de diretório. Mas não se preocupe porque a restauração a partir de outra configuração é praticamente igual.
O ambiente que utilizei para gerar o backup é o mesmo descrito no Tutorial Parte 3 - Montando uma base de teste onde as características da instancia e do ambiente são:
- Uma única tabela, com 260.474 registros e ocupando um espaço de 340 MBytes em disco.
- Somando os demais dados (sysmaster, sysadmin, etc) a massa de dados da Instancia totaliza 350 MBytes.
- O backup é gerado para diretório
- O backup é gerado com utilização de filtro : compactação com gzip
- Foi gerado o backup fisico nos Niveis 0, 1 e 2
- Foi gerado o backup lógico dos logical logs.
- Entre os backups fisicos e lógicos foram alterados vários dados.
Abaixo está alguns outputs de comandos que lista a situação do ambiente após os backups fisico e lógico.
# O comando abaixo foi a geração do backup fisico Nivel 2, nele é informado # o numero do logical log utilizado no momento do backup e que será necessário na # restauração $ ontape -s -L 2 Using the backup and restore filter /usr/bin/gzip -c. 100 percent done. File created: /ifmxdados/physbkp/note-cim_1_L2 Please label this tape as number 1 in the arc tape sequence. This tape contains the following logical logs: 76 Program over. # Neste comando é exibido os Niveis de backup realizados, data e # logical log no momento do backup. $ onstat -g arc IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:00:14 -- 984904 Kbytes num DBSpace Q Size Q Len Buffer partnum size scanner Dbspaces - Archive Status name number level date log log-position rootdbs 1 0 07/29/2009.15:49 74 0x4c7018 1 07/29/2009.16:41 76 0x3a1124 2 07/29/2009.16:48 76 0x86709c llog 2 0 07/29/2009.15:49 74 0x4c7018 1 07/29/2009.16:41 76 0x3a1124 2 07/29/2009.16:48 76 0x86709c plog 3 0 07/29/2009.15:49 74 0x4c7018 1 07/29/2009.16:41 76 0x3a1124 2 07/29/2009.16:48 76 0x86709c dados1 5 0 07/29/2009.15:49 74 0x4c7018 1 07/29/2009.16:41 76 0x3a1124 2 07/29/2009.16:48 76 0x86709c dados2 6 0 07/29/2009.15:49 74 0x4c7018 1 07/29/2009.16:41 76 0x3a1124 2 07/29/2009.16:48 76 0x86709c # Na geração do ultimo backup fisico (Nivel 2) o logical log estava # posicionado no número 76. Após isso executei mais alguns updates # que fizeram avançar o logical log para a posiçào 78. # Arquivos de backup fisicos , Nivel 0, 1 e 2. /ifmxdados/physbkp$ ls -oh total 22M -rw-rw---- 1 informix 13M 2009-07-29 15:49 note-cim_1_L0 -rw-rw---- 1 informix 7.0M 2009-07-29 16:42 note-cim_1_L1 -rw-rw---- 1 informix 1.5M 2009-07-29 16:48 note-cim_1_L2 # Arquivos de backup lógicos, até o log 77 (ultimo log backupeado). /ifmxdados/llogbkp$ ls -oh total 6.2M -rw-r----- 1 informix 1.4M 2009-07-29 17:29 note-cim_1_Log0000000073 -rw-r----- 1 informix 1.2M 2009-07-29 17:29 note-cim_1_Log0000000074 -rw-r----- 1 informix 1.3M 2009-07-29 17:29 note-cim_1_Log0000000075 -rw-r----- 1 informix 1.2M 2009-07-29 17:29 note-cim_1_Log0000000076 -rw-r----- 1 informix 1.1M 2009-07-29 17:29 note-cim_1_Log0000000077 # Estes são os chunks utilizados $ onstat -d Chunks address chunk/dbs offset size free bpages flags pathname 70a86968 1 1 0 100000 83035 PO-B- /ifmxdados/rootdbs.ch1 70b89910 2 2 0 40000 4947 PO-B- /ifmxdados/llog.ch1 70b89ae8 3 3 0 75000 4947 PO-B- /ifmxdados/plog.ch1 70b89cc0 4 4 0 35000 34947 PO-B- /ifmxdados/temp1.ch1 713f0018 5 5 0 75000 73335 PO-B- /ifmxdados/dados1.ch1 713f01f0 6 6 0 100000 13099 PO-B- /ifmxdados/dados2.ch1 # Estes são os arquivos dos chunks /ifmxdados$ ls -oh *ch* -rw-rw---- 1 informix 147M 2009-06-18 16:23 dados1.ch1 -rw-rw---- 1 informix 391M 2009-07-29 17:26 dados2.ch1 -rw-rw---- 1 informix 79M 2009-07-29 22:34 llog.ch1 -rw-rw---- 1 informix 147M 2009-07-29 22:34 plog.ch1 -rw-rw---- 1 informix 196M 2009-07-29 22:34 rootdbs.ch1 -rw-rw---- 1 informix 69M 2009-07-29 22:19 temp1.ch1 # Estes arquivos são os arquivos e diretórios que copiei para uma # maquina remota. São os dados necessários para restaurar o meu ambiente. # Os diretórios physbkp e llogbkp contém os arquivos de backup fisico e lógico. # Observação: Se for perdido todos os arquivos de configuração, ainda há como # restaurar o banco de dados, porém você terá um certo trabalho para recuperar # o ONCONFIG a partir do backup fisico e reescrever manualmente todas as configurações. $ cd /maquina.remota $ ls -oh total 564K -rwxr-x--- 1 informix 20K 2009-07-29 22:38 alarmprogram.sh -rwxr-x--- 1 informix 4.6K 2009-07-31 11:17 env.idstitan drwxrwx--- 2 informix 4.0K 2009-07-29 17:29 llogbkp -rw-r----- 1 informix 52K 2009-07-29 22:38 onconfig.idstitan -rw-r----- 1 informix 461K 2009-07-29 22:39 online.log drwxrwx--- 2 informix 4.0K 2009-07-29 23:07 physbkp -rw-r----- 1 informix 648 2009-07-29 22:38 sqlhosts.idstitan
Simulando uma parada não programada
Agora vou *simular* uma parada não programada onde a maquina seria totalmente perdida.
Para esta simulação irei realizar os seguintes passos:
- Matar os processos do banco (kill)
- Desalocar a memória - shared memory) - (ipcrm)
- Remover todos os arquivos de chunks (rm)
- Remover toda a instalação do informix (rm)
- Remover todos demais arquivos relacionados ao Informix (rm)
# Com o usuário root , executo os comandos abaixo # ps -fC oninit UID PID PPID C STIME TTY TIME CMD informix 5251 1 0 22:19 ? 00:00:01 oninit root 5252 5251 0 22:19 ? 00:00:00 oninit root 5287 5252 0 22:19 ? 00:00:00 oninit root 5289 5252 0 22:19 ? 00:00:00 oninit root 5290 5252 0 22:19 ? 00:00:00 oninit root 5291 5252 0 22:19 ? 00:00:00 oninit root 5292 5252 0 22:19 ? 00:00:00 oninit root 5309 5252 0 22:19 ? 00:00:00 oninit root 5329 5252 0 22:19 ? 00:00:00 oninit root 5330 5252 0 22:19 ? 00:00:00 oninit root 5331 5252 0 22:19 ? 00:00:00 oninit root 5332 5252 0 22:19 ? 00:00:00 oninit # pkill -9 oninit # ps --no-headers -fC oninit | wc -l 0 # ipcs -p ------ Shared Memory Creator/Last-op -------- shmid owner cpid lpid 327680 cmartins 4735 4735 425985 root 5251 5251 458754 root 5251 5251 ------ Message Queues PIDs -------- msqid owner lspid lrpid # Utilizando o PID do processo que matei, identifico a memória # que era alocada para ele. # ipcrm -m 425985 -m 458754 # ipcs -p ------ Shared Memory Creator/Last-op -------- shmid owner cpid lpid 327680 cmartins 4735 4735 ------ Message Queues PIDs -------- msqid owner lspid lrpid # Apago todos os chunks # cd /ifmxdados # rm -v *ch* removed `dados1.ch1' removed `dados2.ch1' removed `llog.ch1' removed `plog.ch1' removed `rootdbs.ch1' removed `temp1.ch1' # Apago o diretório de instalação do Informix # ls -ld /dados/IBM/ids1150uc4de drwxr-xr-x 26 informix informix 4096 2009-06-10 14:10 /dados/IBM/ids1150uc4de # rm -rf /dados/IBM/ids1150uc4de # Apago o diretório de parametros de segurança # ls -ld /etc/informix dr-xr-xr-x 2 root root 4096 2009-06-11 16:03 /etc/informix # rm -rf /etc/informix # Pronto, removemos todo os arquivos do Informix e arquivos relacioados aos dados.
Restaurando o Banco de Dados
Para realizar a restauração em um ambiente que foi todo perdido você terá que se preocupar com os seguintes itens:
- A arquitetura (RISC, CISC, x86, etc) da maquina onde a instancia será restaurada precisa ser mantida
- A versão do sistema operacional precisa ser a mesma utilizada anteriormente
- A versão da instalação do Informix precisa ser a mesma.
- Possuir cópia dos arquivos de configurações, scripts (update statistics, etc) e logs
- Ter identificação de quais logs possui salvo e quais logs irá precisar restaurar.
- Criação de grupo/usuários
- Reconfigurações de sistema operacional: Parâmetros de kernel.
Itens que não serão um problema, desde que você saiba como administra-los
- Local de armazenamento do dados (chunks) não precisa ser no mesmo tipo de dispositivo
Por exemplo: se você utilizava RAW devices, pode restaurar em file system sem problemas. - Configuração na quantidade de CPUs e memória não precisa ser a mesma.
- A configuração de conectividade (IPs,SOCTCP,IPCSHM,IPCSTR) não precisa ser a mesma
- A instalação do produto não precisa ser no mesmo diretório
Mas se trocado o diretório é preciso rever todas as referências feitas a ele - Os IDs internos do usuário e grupo informix não precisam ser os mesmos de antes.
- Se antes era utilizado Role Separation, não é necessário configurar na restauração
- O path dos arquivos de backup não precisam ser o mesmo, Pode alterar os parametros TAPEDEV e LTAPEDEV no ONCONFIG.
Para realizar a restauração de um backup em um ambiente novo, você deverá:
- Criar o grupo e usuário informix.
- Instalar o produto Informix
- Copiar de volta os arquivos de configuração do ambiente
ONCONFIG, SQLHOSTS, alarmprogram, etc. - Recuperar ou recriar as shells que definem as variáveis de ambiente
- Recriar , reconfigurar arquivos/paths dos chunks
- Verificar se tudo que é necessário está ok.
- Iniciar restauração com o comando ontape
# Neste ponto já realizei a instalação do produto # Copio de volta os arquivos de configurações e shell de variáveis $ cp /maquina.remota/{onconfig.idstitan,sqlhosts.idstitan,alarmprogram.sh} /dados/IBM/ids1150uc4de/etc $ cp /maquina.remota/env.idstitan /usr/local/bin # Abaixo estou recriando os arquivos arquivos de chunks # Executando com root recrio o diretório onde os chunks estavam alocados. # mkdir /ifmxdados # chown informix:informix /ifmxdados # exit $ cd /ifmxdados $ > dados1.ch1 $ > dados2.ch1 $ > llog.ch1 $ > plog.ch1 $ > rootdbs.ch1 $ > temp1.ch1 $ chmod 660 *ch* $ ls -oh *ch* -rw-rw---- 1 informix 0 2009-07-30 22:54 dados1.ch1 -rw-rw---- 1 informix 0 2009-07-30 22:54 dados2.ch1 -rw-rw---- 1 informix 0 2009-07-30 22:54 llog.ch1 -rw-rw---- 1 informix 0 2009-07-30 22:54 plog.ch1 -rw-rw---- 1 informix 0 2009-07-30 22:54 rootdbs.ch1 -rw-rw---- 1 informix 0 2009-07-30 22:55 temp1.ch1 # Recrio a estrutura de diretório onde os backups eram gerados # e copio eles de volta. # Observação: Verificar o owner e permissões, os arquivos # precisam pertencer ao usuário/grupo informix e ter permissão de # leitura apenas para o owner e grupo $ mkdir /ifmxdados/physbkp $ mkdir /ifmxdados/llogbkp $ chmod 770 /ifmxdados/{physbkp,llogbkp} $ cp /maquina.remota/physbkp/* /ifmxdados/physbkp $ cp /maquina.remota/llogbkp/* /ifmxdados/llogbkp $ chmod 440 /ifmxdados/{physbkp,llogbkp}/* $ cd /ifmxdados/physbkp $ ls -oh total 22M -r--r----- 1 informix 13M 2009-08-01 10:10 note-cim_1_L0 -r--r----- 1 informix 7.0M 2009-08-01 10:10 note-cim_1_L1 -r--r----- 1 informix 1.5M 2009-08-01 10:10 note-cim_1_L2 $ cd /ifmxdados/llogbkp $ ls -oh total 6.2M -r--r----- 1 informix 1.4M 2009-08-01 10:11 note-cim_1_Log0000000073 -r--r----- 1 informix 1.2M 2009-08-01 10:11 note-cim_1_Log0000000074 -r--r----- 1 informix 1.3M 2009-08-01 10:11 note-cim_1_Log0000000075 -r--r----- 1 informix 1.2M 2009-08-01 10:11 note-cim_1_Log0000000076 -r--r----- 1 informix 1.1M 2009-08-01 10:11 note-cim_1_Log0000000077 # Defino as váriaveis de ambiente $ . env.idstitan # Verifico se as configurações básicas para a restauração estão ok. # Aqui verifico as variaveis de ambiente $ env |grep INFORMIX INFORMIXDIR=/dados/IBM/ids1150uc4de INFORMIXTERM=terminfo INFORMIXCONTIME=10 INFORMIXSERVER=idstitan INFORMIXSQLHOSTS=/dados/IBM/ids1150uc4de/etc/sqlhosts.idstitan INFORMIXCONRETRY=3 # Observação: Mesmo com a instancia off-line, os comandos "onstat -c" e "onstat -m" # funcionam . $ onstat -c |egrep "^Configuration|^L?TAPE|^DBSERVER" Configuration File: /dados/IBM/ids1150uc4de/etc/onconfig.idstitan DBSERVERNAME idstitan DBSERVERALIASES TAPEDEV /ifmxdados/physbkp TAPEBLK 32 TAPESIZE 10000 LTAPEDEV /ifmxdados/llogbkp LTAPEBLK 32 LTAPESIZE 100000 # Verifico se a parte de conectividade está ok $ grep $INFORMIXSERVER $INFORMIXSQLHOSTS idstitan onsoctcp note-cim 9088 $ grep note-cim /etc/hosts 172.30.252.207 note-cim note-cim $ /sbin/ifconfig |grep 172.30.252.207 inet addr:172.30.252.207 Bcast:172.30.255.255 Mask:255.255.0.0
Após toda "infra" do banco ter sido restaurada, iniciamos a restauração efetiva dos dados.
# Para iniciar a restauração , utilize o comando ontape: # Sintaxe: ontape [-r] [-p|-l] # -r : Realiza restauração FULL, fisica + logica em um único processos. # -p : Realiza restauração fisica. Ao final do procesos o banco irá ficar # em "Fast Recovery" onde você poderá dar continuidade com a restauração # lógica ou colocar o banco online com o comando "onmode -m" # -l : Realiza restauração lógica. # No nosso caso não há motivos para realizar a restauração fisica e lógica separadamente, # portanto irei executar o comando com o parametro -r. $ ontape -r Restore will use level 0 archive file /ifmxdados/physbkp/note-cim_1_L0. Press Return to continue ... Using the backup and restore filter /usr/bin/gzip -cd. Archive Tape Information Tape type: Archive Backup Tape Online version: IBM Informix Dynamic Server Version 11.50.UC4DE Archive date: Wed Jul 29 15:49:01 2009 User id: informix Terminal id: /dev/pts/4 Archive level: 0 Tape device: /ifmxdados/physbkp/ Tape blocksize (in k): 32 Tape size (in k): system defined for directory Tape number in series: 1 Backup filter: /usr/bin/gzip -c Spaces to restore:1 [rootdbs ] 2 [llog ] 3 [plog ] 4 [dados1 ] 5 [dados2 ] Archive Information IBM Informix Dynamic Server Copyright 2001, 2009 IBM Corporation. Initialization Time 06/12/2009 09:52:45 System Page Size 2048 Version 16 Index Page Logging OFF Archive CheckPoint Time 07/29/2009 15:49:01 Dbspaces number flags fchunk nchunks flags owner name 1 40001 1 1 N B informix rootdbs 2 40001 2 1 N B informix llog 3 40001 3 1 N B informix plog 4 42001 4 1 N TB informix temp1 5 40001 5 1 N B informix dados1 6 40001 6 1 N B informix dados2 Chunks chk/dbs offset size free bpages flags pathname 1 1 0 100000 83063 PO-B /ifmxdados/rootdbs.ch1 2 2 0 40000 4947 PO-B /ifmxdados/llog.ch1 3 3 0 75000 4947 PO-B /ifmxdados/plog.ch1 4 4 0 35000 34947 PO-B /ifmxdados/temp1.ch1 5 5 0 75000 73335 PO-B /ifmxdados/dados1.ch1 6 6 0 200000 26198 PO-B /ifmxdados/dados2.ch1 # Verifique os dados dos chunks e confirme Continue restore? (y/n)y # Não é necessário realizar o backup dos logical logs, Isso só deve ser # feito em situações de recuperar backup com a instancia on-line (warm restore). # ou em que todo o ambiente não foi perdido e os logical logs não foram # préviamente backupeados. Do you want to back up the logs? (y/n)n Using the backup and restore filter /usr/bin/gzip -cd. # Ao finalizar a restauração do nivel 0, será questionado se deseja # restaurar o Nivel 1 Restore a level 1 archive (y/n) y Ready for level 1 tape Restore will use level 1 archive file /ifmxdados/physbkp/note-cim_1_L1. Press Return to continue ... Using the backup and restore filter /usr/bin/gzip -cd. Archive Tape Information Tape type: Archive Backup Tape Online version: IBM Informix Dynamic Server Version 11.50.UC4DE Archive date: Wed Jul 29 16:41:42 2009 User id: informix Terminal id: /dev/pts/6 Archive level: 1 Tape device: /ifmxdados/physbkp/ Tape blocksize (in k): 32 Tape size (in k): system defined for directory Tape number in series: 1 Backup filter: /usr/bin/gzip -c # Ao finalizar a restauração do nivel 1, será questionado se deseja # restaurar o Nivel 2 Restore a level 2 archive (y/n) y Ready for level 2 tape Restore will use level 2 archive file /ifmxdados/physbkp/note-cim_1_L2. Press Return to continue ... Using the backup and restore filter /usr/bin/gzip -cd. Archive Tape Information Tape type: Archive Backup Tape Online version: IBM Informix Dynamic Server Version 11.50.UC4DE Archive date: Wed Jul 29 16:48:22 2009 User id: informix Terminal id: /dev/pts/6 Archive level: 2 Tape device: /ifmxdados/physbkp/ Tape blocksize (in k): 32 Tape size (in k): system defined for directory Tape number in series: 1 Backup filter: /usr/bin/gzip -c # Ao finalizar a restauração do nivel 2, será questionado se deseja # restaurar os Logical Logs. Do you want to restore log tapes? (y/n)y Roll forward should start with log number 76 Restore will use log backup file /ifmxdados/llogbkp/note-cim_1_Log0000000076. Press Return to continue ... Using the backup and restore filter /usr/bin/gzip -cd. Rollforward log file /ifmxdados/llogbkp/note-cim_1_Log0000000076 ... Using the backup and restore filter /usr/bin/gzip -cd. Rollforward log file /ifmxdados/llogbkp/note-cim_1_Log0000000077 ... Program over. # Pronto, o backup está restaurado # Analise o log do banco e verifique se tudo está ok. Ao final da # restauração lógica, você irá encontrar no log as informações das # ultimas transações restauradas. $ onstat -m .... 11:12:34 Logical Recovery Complete. 247 Committed, 1 Rolled Back, 0 Open, 0 Bad Locks 11:12:34 Logical Recovery Complete. # O banco de dados estará em modo de manutenção (Quiscent). # Para torna-lo imediamente disponível aos usuários basta coloca-lo # em on-line: $ onstat - IBM Informix Dynamic Server Version 11.50.UC4DE -- Quiescent -- Up 00:20:20 -- 984904 Kbytes $ onmode -m $ onstat - IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:22:38 -- 984904 Kbytes
Pronto! Backup restaurado!
Mas sempre tome muito cuidado com seu ambiente, há muitas outras situações onde muitos outros arquivos de configuraçòes precisam ser salvos para que no caso de uma restauração você não tenha que perder tempo reescrevendo tudo.
- 830 leituras





Comentar