quarta-feira, 18 de abril de 2012

Guia do Iniciante para HDR no IDS 11.50

Conceitos e Beneficios do HDR

  • HDR permite  que todos os dados em uma instancia IDS seja copiada em um outro servidor em uma rede;
  • É uma “instace level”, tecnologia de replicação para fornecer copias de seus dados para outros servidores Informix.
  • Não tem restrições, como exigir chaves primarias em suas tabelas, etc. Exige que seus bancos de dados sejam “logged”,  no entento, sua tecnologia é baseada nos registros de logs. Isso não replica dados BLOBspaces.
  • Sistemas Operacionais subjacentes e versão do IDS deve ser identica nos servidores envolvidos o HDR.
  • Beneficios em caso de desastres: Servidores e Dados são redundantes minimizando o downtime
  • Pode-se criar um Servidor de relatorios com o servidor secundario, tendo o beneficio da performance: descarregamentos de algumas atividades, queries no servidor secundario. Melhor performance.
  • Dados locais para usuarios remotos, melhor performance.

HDR antes da versão 11

  • Primario: Este é o servidor que os usuários normalmente se conectam. Permite atualizações de dados, como de costume.  Este é a fonte de dados copiado para o secundario.
  • Secundario: Um servidor de backup somente leitura que recebe atualizações do primario.

HDR (IDS 11.50)

  • Primario: Este é o servidor que os usuários normalmente se concectam. Permite atualizações de dados  como de costume. Este é a fonte de dados copiado para o secundario.
    Uma das melhorias mais importantes em HDR a partir da versão 11.10 é que agora você pode ter multiplos servidores secundarios, ates você estava limitado a somente um servidor secundario. Alem disso, existem diferentes tipos de servidores secundarios que lhe permite uma configuração adequada para suas necessidades empresarias.
  • Secundario: Servidor de backup que recebe os dados do servidor primario. Ele também permite UPDATEs usando o “redirect writes” (ex, as atualizações  são realmente enviadas para o servidor primario e, em seguida recebidos através de replicação.
  • Checkpoints entre o servidor Primario e o HDR secundario são sempre sincronizados.
  • Commits entre o servidor Primario e o servidor secundario pode ou não ser sincronizados (depende da sua configuração).
  • Servidor secundario Standalone remoto (RSS): Um novo tipo  de servidor secundario foi introduzido na versão 11.10 o que é atualizado em modo assincrono e tem mais conectividade mais flexivel com o servidor primário.
  • Adequado para usar como um servidor de relatorios e tambem locais distantes geograficamente e em redes de baixa velocidade, para fazer balanceamento de CPU, memoria, e tambem como um rápido  e facil failover se o servidor primario falhar.
  • Requer indexação em paginas de logging.
  • Shared Disk Secondary (SDS): Um novo tipo de servidor secundario introduzido na versão 11.10. Tal como o nome implica, ele não tem sua própria  copia separada do espaços de disco. Discos compartilhados com o servidor primario.
  • Normalmente usado com arrays de discos ou SAN shared

HDR no IDS 11.50

  • Os servidores que participam do HDR são servidores IDS regulares, colocado em um papel especifico ( primario, HDR, secundario, RSS, SDS) usando o comando onmode.
  • Pode haver um servidor primario, zero ou um HDR secundario, e zero, um multiplos servidores RSS e SDS em um clauster MACH 11 ( MACH = Multi node Active Cluster for High availability)
  • Servidores RSS/SDS pode ser seus unicos servidores secundarios, ou eles podem ser utilizados com um HDR secundario.
  • HDR é inicialmente configurado com um backup nivel zero e um physical restore (execto para servidores SDS).
  • Após a configuração inicial, os dados entre os servidores são mantidos em sincronia usando os logical logs.

hdr

  • DRINTERVAL – parametro onconfig que controla se a replicação ocorre de maneira assincrona ou sincrona.
  • DRINTERVAL –1 – (sincrono, ex. servidor primario aguarda por notificação vindo do servidor secundario antes de descarregar o logical-log buffer, como um commit)
  • DRINTERVAL outro valor exeto –1 ( assincrono – exemplo 30 segundos)
  • HDR Threads
    • drprsend: (primario) envia buffers
    • drsecrecv: (secundario) recebe buffers
    • drprping: (primario) checa a conectividade
    • drsecping: (secundario) checa a conectividade
    • drsecapply: (secundario) recepção da copia do buffer para o recuperação do buffer
    • logrecvr: (secundario) recuperação logica – atualização dos dbspaces
    • RSS_send: usa uma comunicação full duplex ( ex. sem aguardar o recebimento de uma notificação), esse thread envia paginas de logs para um servidor RSS. (roda no servidor primario)
    • RSS_recv: recebe paginas de logs vinda do servidor primario. (roda no servidor RSS)
    • RSS_apply: copia o conteudo do buffer de recepção para o buffer de recuperação. (roda no RSS server)
  • Atualizando o servidor secundario através do Redirected Writes
    • uma das melhorias mais significantes na versão HDR 11.50
    • Servidores secundarios (todos os tipos) agora permitem atualizações de dados.
    • As atualizações são transferidas para o servidor primario e então propagadas de volta para o servidor secundario
    • Inserts, updates e deletes para a maioria dos tipos de dados são suportados.
    • Usando as novas caracteristicas de controle de versões do IDS faz escritas redirecionadas  trabalhando com maior eficiencia.
  • Gerencimaneto de conectividade
    • Novo componente de software que gerencia os pedidos de conexões a partir das aplicações clientes.
    • Permite você definir niveis de serviços (SLAs) e configuração automatica failover.
    • Monitora todos os servidores dentro do clauster.
    • Pode decidir sobre o servidor mais adequado para a conexão da aplicação cliente.
  • Planejar um servidor HDR é obrigação
  • Requisitos de negocios ( ex. planejamento de recuperação de desastre, capacidade adicional de comunicação, dados locais) conduz a configuração técnica.
  • Com base nos requisitos de negocios, hardware/software disponiveis e redes disponiveis, você decidira sobre o tipo  e o numero de secundários.
  • Sistema Operacional e versão do Informix tem que ser identica.
  • Layouts dos chunks deve ser identico ( mas espelhamentos de chunks não há necessidade)
  • Banco de dados devem ser logged.

Planejamento e configuração do HDR

DRAUTO

0 (OFF) – significa não mudar automaticamente o tipo de servidor.
1 (RETAIN_TYPE) – significa mudar automaticamente do secundario para o padrao se a replicação falhar, volta para o secundario  quando o HDR reinicializar.
2 (REVERSE_TYPE) – significa mudar automaticamente do secundario para o padrao numa falha, para o primario quando o HDR reinicializar.

DRIDXAUTO

0 (off) significa que não há replicação automatica de indices para o secundario caso esteja corrompido.
1 (on) significa replicação automatica dos indices  para o servidor secundario se os indices estiverem corrompidos.  A configuração habilitada é requerida para servidores RSS.

DRINTERVAL

Interalo maximo, em segundos, entre a descarga do buffer de replição.
Valores aceitos –1, 0 e valores positivos inteiros
Valor padrão é de 30 segundos o que significa que se pode levar até 30 segundos para que as alterações do servidores primarios seja replicado para o servidor secundario.
-1 – significa configuração sincrona.

DRLOSTFOUND

Caminho para os arquivos lost&found da replicação.
Quando a replicação assincrona é utilizada e em caso de falha, isso possibilita que algumas transações sejam comitadas no servidor primario mas não no servidor secundario. Essas transações são armazenadas em um arquivo em lost&found.

DRTIMEOUT

Periodo de tempo, em segundos, que o servidor primario aguarda para receber uma notificação vinda do servidor secundario.
Após este periodo de tempo decorrido e sem notificação de recebimento, o Informix reconhece que houve uma falha.
Default é 30 segundos.

Passo a passo:

Requisitos e planejamento são completos e seguindo um cenário tipico é selecionado:

passo

Primeiro passo:

Assegurar que todos os servidores tem o TCP/IP necessário configurados como por exemplo /etc/hosts.

vishnu server

vishnu:~ # cat /etc/hosts
#
# hosts         This file describes a number of hostname-to-address
#               mappings for the TCP/IP subsystem.  It is mostly
#               used at boot time, when no name servers are running.
#               On small systems, this file can be used instead of a
#               "named" name server.
# Syntax:
#
# IP-Address  Full-Qualified-Hostname  Short-Hostname
#

127.0.0.1       localhost


10.0.1.5        vishnu.ajmsolutions vishnu
10.0.1.9        isis.ajmsolutions isis
vishnu:~ #

isis server

isis:~ # cat /etc/hosts
#
# hosts         This file describes a number of hostname-to-address
#               mappings for the TCP/IP subsystem.  It is mostly
#               used at boot time, when no name servers are running.
#               On small systems, this file can be used instead of a
#               "named" name server.
# Syntax:
#
# IP-Address  Full-Qualified-Hostname  Short-Hostname
#

127.0.0.1       localhost

10.0.1.9        isis.ajmsolutions isis
10.0.1.5        vishnu.ajmsolutions vishnu
127.0.0.2      isis.ajmsolutions isis
isis:~ #

Segundo passo:

Assegurar que todos os servidores estão em modo de confiança entre si (“trust mode”) -  /etc/hosts.equiv

vishnu server

vishnu:~ # cat /etc/hosts.equiv
#
# hosts.equiv   This file describes the names of the hosts which are
#               to be considered "equivalent", i.e. which are to be
#               trusted enough for allowing rsh(1) commands.
#
# hostname
isis
vishnu:~ #

isis server

isis:~ # cat /etc/hosts.equiv
#
# hosts.equiv   This file describes the names of the hosts which are
#               to be considered "equivalent", i.e. which are to be
#               trusted enough for allowing rsh(1) commands.
#
# hostname

vishnu
isis:~ #

Terceiro Passo:

Verifique se o serviço do informix (ports) de cada servidor não esta bloqueado e esta sendo reconhecido em cada servidor (/etc/services)

vishnu server

vishnu:~ # cat /etc/services |egrep "prdsrv|tstsrv"
prdsrv          1540/tcp
tstsrv           1550/tcp
vishnu:~ #

isis server

isis:~ # cat /etc/services |egrep "prdsrv|tstsrv"
prdsrv          1540/tcp
tstsrv          1550/tcp
isis:~ #

Quarto Passo:

Garantir que cada servidor tem entradas dos outros servidores em seus arquivos sqlhosts do Informix. Você deve usar uma conexão TCP/IP e não conexões de memorias compartilhadas  para configuração do HDR.

vishnu server

informix@vishnu:/> cat $INFORMIXDIR/etc/sqlhosts
#**************************************************************************
#
#  Licensed Material - Property Of IBM
#
#  "Restricted Materials of IBM"
#
#  IBM Informix Dynamic Server
#  (c) Copyright IBM Corporation 1996, 2004 All rights reserved.
#
#   Title:      sqlhosts.demo
#   Description:
#               Default sqlhosts file for running demos.
#
#**************************************************************************
# IANA (www.iana.org) assigned port number/service names for Informix:
# sqlexec 9088/tcp
# sqlexec-ssl 9089/tcp

prd        onipcshm     vishnu    prd
prdsoc  onsoctcp       vishnu   prdsrv
tstsoc   onsoctcp       isis         tstsrv

informix@vishnu:/>

isis server

informix@isis:~> cat $INFORMIXDIR/etc/sqlhosts
#**************************************************************************
#
#  Licensed Material - Property Of IBM
#
#  "Restricted Materials of IBM"
#
#  IBM Informix Dynamic Server
#  Copyright IBM Corporation 1996, 2009
#
#   Title:           sqlhosts.demo
#   Description:     Default sqlhosts file for running demos.
#
#**************************************************************************
# The connectivity information for each database server includes four fields
# of required information and one optional field. You can also configure
# database server groups.
#
# The format for the five fields of connectivity information for a database
# server is one line in the UNIX  sqlhosts file, as follows:
#
# <dbservename> <nettype> <hostname> <servicename> <options>
#
# dbservername is the name of a database server on the network.
#
# nettype is an 8-character string specifying the protocol in this format:
#
# ddiiippp
#
# where
#   dd  =  Database product [|ol|on|dr]
#   iii =  Interface type [ipc|soc|tli|sql]
#   ppp =  Protocol [imc|nmp|shm|spx|str|tcp|ssl|mux]
#
# hostname is the name of the computer where the database server resides.
#
# servicename is a service name entry from the services file.
#
# options in the fifth field:

#
#   b=<connection buffer size>
#   c=<connection redirection>
#   g=<group name>
#   i=<group identifier>
#   e=<end of group>
#   m=<multiplexed connection>
#   k=<keep alive setting>
#   r=<client security setting>
#   s=<server security setting>
#   csm=<communication support module>
#
# To create an entry for a group, put a group name in the dbservername field,
# the word group in the nettype field, a hyphen in both the hostname and the
# servicename fileds, and i=<group identifier> in the options field.
#
# For additional information on the parameters, see the IBM Informix
# Administrator's Guide.
#**************************************************************************
# IANA (www.iana.org) assigned port number/service names for Informix:
# sqlexec 9088/tcp
# sqlexec-ssl 9089/tcp


tst         onipcshm        isis               tst
tstsoc   onsoctcp          isis               tstsrv
prdsoc  onsoctcp          vishnu          prdsrv
informix@isis:~>

Quinto Passo:

Assegure-se que os seguintes valores do ONCONFIG estejam identicos entre os servidores.

ROOTNAME, ROOTPATH, ROOTOFFSET, ROOTSIZE
PHYSDBS, PHYSFILE
TAPEBLK, TAPESIZE, LTAPEBLK, LTAPESIZE
LOGFILES, LOGSIZE
DRAUTO, DRINTERVAL, DRTIMEOUT

Sexto Passo:

Pegue um archive nivel 0 do servidor primario (vamos utilizar mais adiante)

Setima Passo:

Configurar o servidor primario para iniciar como um primario ligando ao servidor secundario

informix@vishnu:~/etc> onmode -d primary tstsoc

Oitavo Passo

Restaurar o archive nivel 0 como uma restauração fisica no HDR secundario.

informix@isis:~> ontape -p
Restore will use level 0 archive file /ontapeDir/archiveDir/isis_0_L0. Press Return to continue ...


Archive Tape Information

Tape type:      Archive Backup Tape
Online version: IBM Informix Dynamic Server Version 11.50.FC8GE
Archive date:   Wed Apr 18 11:58:18 2012
User id:        informix
Terminal id:    /dev/pts/0
Archive level:  0
Tape device:    /ontapeDir/archiveDir/
Tape blocksize (in k): 32
Tape size (in k): system defined for directory
Tape number in series: 1

Spaces to restore:1 [rootdbs                                                                                                                         ]
2 [dbsphyslog                                                                                                                      ]
3 [dbslog                                                                                                                          ]
4 [dbsnfe                                                                                                                          ]
5 [prd                                                                                                                             ]
6 [dbscrm                                                                                                                          ]

Archive Information

IBM Informix Dynamic Server Copyright 2001, 2010  IBM Corporation.
Initialization Time       07/17/2011 00:47:09
System Page Size          2048
Version                   18
Index Page Logging        OFF
Archive CheckPoint Time   04/18/2012 11:58:17

Dbspaces
number   flags    fchunk   nchunks  flags    owner                            name
1        40001    1        1        N  B     informix                         rootdbs                                                        
2        40001    2        1        N  B     informix                         dbsphyslog                                                     
3        40001    3        1        N  B     informix                         dbslog                                                         
4        42001    4        1        N TB     informix                         dbstmp1                                                        
5        42001    5        1        N TB     informix                         dbstmp2                                                        
6        42001    6        1        N TB     informix                         dbstmp3                                                        
7        40001    7        1        N  B     informix                         dbsnfe                                                         
8        40001    8        8        N  B     informix                         prd                                                            
9        40001    16       1        N  B     informix                         dbscrm         

Chunks
chk/dbs offset   size     free     bpages   flags pathname
1   1   0        150000   114833            PO-B  /dbroot/rootdbs
2   2   0        500053   0                 PO-B  /dblogs/physlog/dbsphyslog
3   3   0        1750053  0                 PO-B  /dblogs/logs/dbslog
4   4   0        200053   199527            PO-B  /dbtmp/dbstmp.1
5   5   0        200053   199750            PO-B  /dbtmp/dbstmp.2
6   6   0        200053   199644            PO-B  /dbtmp/dbstmp.3
7   7   0        1500053  1145313           PO-B  /dbnfe/dbsnfe
8   8   0        1500053  63                PO-B  /dblogix/prd.1
9   8   0        1500003  16                PO-B  /dblogix/prd.2
10  8   0        1500003  18                PO-B  /dblogix/prd.3
11  8   0        1500003  175               PO-B  /dblogix/prd.4
12  8   0        1500003  284               PO-B  /dblogix/prd.5
13  8   0        1500003  86187             PO-B  /dblogix/prd.6
14  8   0        1500003  1500000           PO-B  /dblogix/prd.7
15  8   0        1500003  1500000           PO-B  /dblogix/prd.8
16  9   0        1000053  697460            PO-B  /dblogix/crm.1

Continue restore? (y/n)y
Do you want to back up the logs? (y/n)y
File created: /ontapeDir/logicalLogs/isis_0_Log0000000007
File created: /ontapeDir/logicalLogs/isis_0_Log0000000008
Log salvage is complete, continuing restore of archive.
Restore a level 1 archive (y/n) n

Nono Passo:

Configure o servidor HDR secundario para inicializar como secundario ligando ao servidor primario

informix@isis:~/etc> onmode –d secondary prdsoc

Décimo Passo:

Verifique se agora você tem um HDR pariado

vishnu server

informix@vishnu:~> onstat -g dri

IBM Informix Dynamic Server Version 11.50.FC8GE -- On-Line (Prim) -- Up 03:04:24 -- 2857436 Kbytes

Data Replication at 0xd4caf028:
  Type           State        Paired server        Last DR CKPT (id/pg)    Supports Proxy Writes
  primary        on          tstsoc                       -1 / -1         NA

  DRINTERVAL   30
  DRTIMEOUT    30
  DRAUTO       0
  DRLOSTFOUND  /usr/informix/etc/dr.lostfound
  DRIDXAUTO    0
  ENCRYPT_HDR  0
  Backlog      0

informix@vishnu:~>

isis server

informix@isis:~> onstat -g dri

IBM Informix Dynamic Server Version 11.50.FC8GE -- Fast Recovery (Sec) -- Up 01:03:41 -- 2889780 Kbytes

Data Replication at 0xf320f028:
  Type           State        Paired server        Last DR CKPT (id/pg)    Supports Proxy Writes
  HDR Secondary  on          prdsoc                       -1 / -1         N

  DRINTERVAL   30
  DRTIMEOUT    30
  DRAUTO       0
  DRLOSTFOUND  /usr/informix/etc/dr.lostfound
  DRIDXAUTO    0
  ENCRYPT_HDR  0
  Backlog      0

informix@isis:~>

Um comentário:

  1. Muito bom, procurei outros tutoriais sobre HDR na internet e estava meio complicado, utilizei o seu e funcionou perfeitamente.

    Parabéns

    ResponderExcluir