Prévia do material em texto
Livro Eletrônico Aula 10 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos 1 64 Gerenciamento de concorrência e carga (WLM), otimização de planos de acesso, ajuste de performance (ferramentas e metodologia), ajuste de uso de memória. ............................ 2 Gerenciamento de concorrência e carga (WLM) ............................................................................... 2 Otimização de planos de acesso......................................................................................................... 7 Ajuste de performance (ferramentas e metodologia) ..................................................................... 14 Ajuste de uso de memória ................................................................................................................ 16 Alta disponibilidade e recuperação de desastre (HADR), recuperação de dados, integração com Tivoli Storage Manager (TSM). ................................................................................ 19 HADR ................................................................................................................................................. 19 DB2 pureScale ................................................................................................................................... 32 Recuperação de dados ...................................................................................................................... 41 Integração com Tivoli Storage Manager .......................................................................................... 44 Monitoração de eventos ................................................................................................ 48 Tipos de Monitoramento .................................................................................................................. 50 Monitoramento de rotina ................................................................................................................. 50 Monitoramento de eventos em tempo real/on-line ........................................................................ 51 Monitoramento de exceções ............................................................................................................ 52 Questões comentadas ................................................................................................... 53 Considerações finais ...................................................................................................... 64 Referências ................................................................................................................... 64 Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 2 64 GERENCIAMENTO DE CONCORRÊNCIA E CARGA (WLM), OTIMIZAÇÃO DE PLANOS DE ACESSO, AJUSTE DE PERFORMANCE (FERRAMENTAS E METODOLOGIA), AJUSTE DE USO DE MEMÓRIA. GERENCIAMENTO DE CONCORRÊNCIA E CARGA (WLM) A sigla WLM significa WORKLOAD MANAGEMENT. É uma abordagem adoptada para fornecer um gerenciamento de carga robusto. Para tal, devemos forcar primeiramente na criação de um ambiente de execução. Um ambiente de execução é simplesmente uma área onde as atividades de banco de dados podem ser executadas, como uma "sandbox" na qual as requisições podem ser executadas. Com o conceito de ambiente de execução definido, e depois do estabelecimento dos objetivos de negócio, as etapas restantes do gerenciamento de carga são: Identificação - Na fase de identificação, você se concentra na atribuição das atividades de banco de dados para um ambiente de execução, onde as atividades de banco de dados são mapeadas nas atividades que você construiu ao no contexto de cada objetivo de negócio. Gestão - Nesta etapa, o foco é sobre os controles táticos que rastreiam e modificam o fluxo de execução de atividades de banco de dados, a fim de atender aos objetivos de negócios. Monitoramento - Esta etapa dá acesso ao estado de atividades no ambiente de execução, bem como uma indicação sobre se as metas de negócios estão sendo atendidas. Há uma série de problemas de negócios comuns do DB2 que podem ser abordados através de uma implementação eficaz do gerenciamento de carga de trabalho. Estes problemas incluem: Proteger o sistema de consultas suspeitas – Atividades que utilizam uma grande quantidade de recursos (consultas complexas, por exemplo) podem ser um grande obstáculo ao desempenho da carga de trabalho do servidor de dados. Às vezes, as atividades são perfeitamente válidas, mas, na maioria das vezes, eles são consultas simplesmente mal escritas com muitas atividades caras ou custosas em execução ao mesmo tempo. Manter tempos de resposta consistentes para as atividades - É fundamental manter consultas transacionais curtas na execução de um ambiente de armazenamento a um ritmo consistente e previsível. Muitas vezes, essas atividades podem ser isoladas e pode facilmente ter tempos de resposta impactados por cargas de trabalho inesperadas. Proteger o servidor de dados por meio de um sistema de slowdown durante períodos de pico de atividade de banco de dados - Normalmente há períodos durante todos os dias (ou semanas, ou meses), onde um grande número de atividades de banco de dados pode ser executado ao mesmo tempo. Não surpreendentemente, isso muitas vezes resulta em contenção de recursos e lentidão no sistema. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 3 64 Fornecimento de controle de recurso explícito - A alocação e contenção de recursos pode ser um problema real na máquina do servidor de dados. Os clientes precisam de maneiras para alocar de forma justa os recursos em ambientes de execução e limitar o consumo de recursos em excesso. Objetivos de Service Level Agreement (SLA) - Acordos de Nível de Serviço, muitas vezes, introduzem metas de tempo de resposta explícito para as atividades de banco de dados. É possível controlar as cargas de trabalho e utilizar as informações do monitor para determinar como o servidor de dados é acompanhado no cumprimento desses objetivos. O monitoramento das atividades da base de dados pode se dar em diferentes granularidades, isto gera a capacidade de controlar todo o ciclo de vida da atividade, bem como a distribuição do agregado. Muitas vezes, uma visão global da atividade do servidor de dados é informação suficiente para determinar a saúde geral da distribuição de atividades. Às vezes a informação detalhada é necessário para determinação de problemas e análise histórica. Conceitos do DB2 Workload Manager No ambiente de negócios competitivo de hoje, a busca por aumentar a produtividade do negócio cria uma necessidade crescente para fazer mais com menos recursos, de forma rápida, e com o menor custo possível. Um cenário típico para um armazém de dados utilizando o DB2 teríamos múltiplos Jobs de Extract, Transform and Load (ETL), várias consultas, e relatórios com informações de diferentes fontes de dados de Business Intelligence (BI) em execução durante todo o dia, bem como trabalhos em lotes e serviços diários de utilitários de DBA que funcionam durante toda a noite. E olhe que não estamos levando em conta mudanças repentinas nas prioridades, devido às necessidades do negócio e, talvez, a necessidade de executar vários relatórios ao mesmo tempo, criando cargas de trabalho que trazem picos de operação sobre a base de dados. Às vezes, uma consulta complexa e pesada pode ser executada durante o horário de pico, causando lentidão no sistema comoum todo. Algumas empresas irão adquirir mais recursos de hardware para resolver o problema. Outras empresas vão encerrar as consultas com uso intensivo de recursos. Outros ainda podem escolher ajustar o desempenho do sistema para recuperar a capacidade plena de produção, ou criar uma abordagem mais rígida para enviar cargas de trabalho ao sistema de banco de dados DB2 de produção. O uso do Query Patroller e do DB2 Governor ajudam consideravelmente na gestão dessas cargas de trabalho no ambiente DB2. Para ampliar e expandir as capacidades de gestão do trabalho além dos oferecidos por essas ferramentas, um novo conjunto de recursos foi projetado e introduzido no motor do DB2 9.5 sob a forma do DB2 Workload Manager (WLM). O DB2 WLM é uma solução poderosa que aborda estas várias questões. Ele permite que o usuário para tratar diferentes cargas de trabalho (aplicações, usuários e assim por diante) de forma diferente, e proporcionar-lhes ambientes de execução diferentes ou caixas de areia (sandbox) para a execução das tarefas. A metodologia rápida, flexível e robusta oferecida pelo WLM pode ajudar a identificar, gerenciar e controlar suas cargas de trabalho para maximizar o rendimento do servidor de banco de dados e utilização de recursos. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 4 64 A arquitetura do DB2 WLM é composta principalmente dos seguintes componentes: classes de serviço, cargas de trabalho, limites (thersholds), conjuntos de ações de trabalho e conjuntos de classes de trabalho. A arquitetura do DB2 WLM gira em torno da definição de ambientes de execução para as atividades e atribuição de recursos para os ambientes de execução. A implementação DB2 começa com a CPU e a gestão de recursos de E/S para cargas de trabalho do DB2, incluindo perguntas como: é possível o compartilhamento de recursos ser feito de forma eficaz? Ou, a forma de compartilhamento de recursos é feita para garantir a estabilidade e para lidar com mudanças de prioridades e cargas flutuantes sobre a sistema? Arquitetura A arquitetura do DB2 Workload Manager integra todos os objetos gerenciados pelas cargas de trabalho em um conjunto coerente de tarefas, a fim de torná-los mais fáceis de identificar, gerenciar e monitorar o volume de trabalho no banco de dados DB2. A carga de trabalho sobre o sistema pode ser analisada para determinar como o sistema pode ser projetado para lidar com a carga de trabalho atual e futura. O monitoramento de desempenho utilizando o DB2 WLM pode acompanhar o comportamento do sistema, em um nível granular e/ou durante um longo período de tempo. A principal vantagem, porém, é a capacidade de compreender as características da carga de trabalho. Esse conhecimento permite gerir e manter os tempos de resposta e a vazão (throughput) desejados para o sistema. Além disso, alguns dos problemas mais complicados em um ambiente de banco de dados como consultas pesadas e agentes de contenção, podem ser tratadas mais eficazmente com as funcionalidades do WLM. O processo de utilização do DB2 WLM começa efetivamente com a análise da carga de trabalho através da identificação dos tipos e frequência de cargas de trabalho, e então partimos para a criação de classes de serviço, a fim de classificar a carga de trabalho em grupos gerenciáveis. O diagrama na figura abaixo ilustra as inter-relações dos principais componentes da arquitetura do DB2 WLM. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 5 64 Vamos agora, entender o passo-a-passo do fluxo de execução que tem início no usuário. Um usuário faz uma conexão ao banco de dados e lhe é atribuída uma carga de trabalho. Todas as atividades que funcionam no âmbito de uma carga de trabalho são mapeadas para uma classe de serviço. Na figura acima, os usuários atribuídos a carga de trabalho são mapeados para uma superclasse, SUPERCLASS1, por meio da palavra-chave UNDER SERVICE CLASS. A conexão pertence ao serviço da superclasse, mas todas as atividades de emissão da conexão são mapeadas automaticamente para q subclasse de serviço 1A. Os usuários atribuídos as cargas de trabalho B e C são mapeado para serem atendidos pela superclasse 2, SUPERCLASS2. Qualquer trabalho apresentado para as cargas de trabalho pertencentes a cargas de trabalho B e C podem ser mapeados para os serviços de subclasses 2A e 2B. Todas as atividades que são mapeados para a superclasse 2 são executadas pelo conjunto de ações de trabalho 2 que é uma instanciação dos conjuntos de classes de trabalho X. Vejam que existe uma atividade de mapeamento, MAP ATIVITITY, que faz a interação entre as subclasses de trabalho com o conjunto de ações de trabalho. Uma ação de trabalho pode ser definida para cada banco de dados ou para uma superclasse de serviço. No diagrama, as ações de trabalho 1A e 1B pertencem ao conjunto de ações de trabalho 1, e são definidas para um banco de dados. As ações de trabalho 1A e 1 B pode ser qualquer uma das seguintes ações: Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 6 64 • A threshold1 - CREATE THERHOLD é um comando específico que aparece em alguns banco de dados, o DB2 permite a declaração que pode ser incorporado em um programa ou emitida através do uso de instruções SQL dinâmicas. • PREVENT EXECUTION – para impedir a execução, especifica que nenhuma das atividades de banco de dados associadas à classe trabalho para a qual esta ação de trabalho é definida terá permissão para executar (SQLSTATE 5U033). • COLLECT ACTIVITY DATA - especifica que os dados de cada atividade associada com a classe trabalho para o qual esta ação trabalho é definida são enviados para um dos monitores de eventos ativos quando a atividade for concluída. • COUNT ACTIVITY - especifica que todas as atividades de base de dados associadas com a classe de trabalho que serão executadas e que a cada execução, o contador para a classe de trabalho será incrementado. As ações de trabalho 2A e 2B pertencem ao conjunto de ações de trabalho 2, e eles são definidos para superclasse de serviço 2. As ações de trabalho 2A e 2B podem executar qualquer uma das seguintes ações: • Uma ação de mapeamento de uma atividade para qualquer subclasse de serviço pertencente a superclasse 2, com exceção da subclasse de serviço padrão. • PREVENT EXECUTION (veja acima) • COLLECT ACTIVITY DATA (veja acima) • COUNT ACTIVITY (veja acima) • COLLECT AGGREGATE ACTIVITY DATA – especifica que os dados agregados de atividade devem ser capturados para atividades que estão associada com a classe de trabalho e enviados para as estatísticas do monitor de eventos, se uma estiver ativo. Os usuários atribuídos a carga de trabalho D são mapeados para uma superclasse de serviço 3 que não tem uma subclasse de serviço definida pelo usuário. Neste caso, as conexões são mapeadas para a subclasse de por meio do atributo padrão SYSDEFAULTSUBCLASS da superclasse de serviço 3. Conexões que não são mapeadas para uma carga de trabalho definida pelo usuário são mapeados para a carga de trabalho padrão, conhecida como SYSDEFAULTUSERWORKLOAD, que, por sua vez, é mapeado para a superclasse de serviço padrão para solicitações de usuários, SYSDEFAULTUSERCLASS. As conexões internas de sistema do DB2 são mapeadas para a superclasse de serviço padrão nas conexões internas do DB2, por meio do SYSDEFAULTSYSTEMCLASS. As conexões de manutenção internas do DB2 são mapeadas para a superclasse de serviçopadrão para solicitações de manutenção, SYSDEFAULTMAINTENANCECLASS. 1 Valor mínimo ou máximo (estabelecido para um atributo, característica ou parâmetro), que serve como referência para comparação ou orientação. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 7 64 Como ilustrado na figura vista anteriormente, os thresholds do DB2 WLM podem ser definidos em qualquer um ou todos os seguintes componentes: banco de dados, conjunto de ações de trabalho, superclasse de serviço, subclasse de serviço e carga de trabalho. O desempenho refere-se à maneira como um sistema de computador se comporta em resposta à uma carga de trabalho específica. O desempenho é medido em termos de tempo de resposta do sistema, taxa de transferência e utilização de recursos. O desempenho pode ainda ser afetado por: • A disponibilidade dos recursos no sistema. • Quão bem os recursos são utilizados e compartilhados Em geral, você vai ajustar seu sistema para melhorar a sua relação custo- benefício. Alguns objetivos específicos incluem: • Cargas de trabalho com processamento maior ou uma demanda maior, sem aumento dos custos de processamento. • Obtenção de tempos de resposta do sistema mais rápidos, ou uma maior vazão, sem aumento dos custos de processamento. • Redução dos custos de processamento sem degradar o serviço para os usuários. O DB2 WLM contribui de diversas formas para o desempenho do seu sistema de banco de dados. Alguns benefícios do ajuste de desempenho, como a utilização mais eficiente dos recursos e a capacidade de adicionar mais usuários ao sistema, são tangíveis. Outros benefícios, como uma maior satisfação do usuário por causa de um tempo de resposta mais rápido são intangíveis. Falaremos um pouco sobre otimização e ajustes nos próximos tópicos desta aula. OTIMIZAÇÃO DE PLANOS DE ACESSO Os planos de acesso podem ser otimizados em uma tentativa de melhorar o desempenho da consulta. O grau de melhoria depende do tipo de otimização escolhida. Otimizar planos de acesso é uma das melhores maneiras de garantir que o compilador de consulta se comporte da maneira que você espera. Concentrador de instrução (Statement concentrator) O concentrador de instrução modifica dinamicamente instruções SQL no servidor de banco de dados de modo que instruções similares possam compartilhar o mesmo plano de acesso, melhorando, assim, o desempenho. No processamento de transações online (OLTP), comandos simples podem ser gerados repetidamente com diferentes valores literais. Em tais cargas de trabalho, o custo de recompilar as declarações pode gerar um aumento significativo do uso de memória. O concentrador de instrução evita o uso de memória, permitindo que as declarações compiladas sejam reutilizadas, independentemente dos valores literais passados como parâmetro. O uso de memória associado a novas instruções SQL ou comandos modificados para uma carga de trabalho OLTP é pequeno para o Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 8 64 concentrador de instrução, quando comparado com a economia obtida reutilizando comandos que estão no cache. O concentrador de instrução é por padrão desabilitado no DB2. Você pode habilitá-lo para todas as instruções dinâmicas em um banco de dados, definindo o parâmetro de configuração de banco de dados stmt_conc para LITERALS. Se uma instrução dinâmica é modificada, tanto a declaração original quanto a declaração modificada são exibidos na saída do comando EXPLAIN. O evento monitorar elementos lógicos e saída a partir da função de tabela MON_GET_ACTIVITY_DETAILS a mostra a declaração original se o concentrador de instrução modificou o texto da instrução original. Outras interfaces de monitoramento mostram apenas o texto da instrução modificada. Reutilização do plano de acesso Você pode solicitar que os planos de acesso que foram escolhidos para instruções SQL estáticas em um pacote permaneçam os mesmos, ou sejam bem semelhantes aos planos de acesso existentes quando tivermos necessidade de operações de ligação (bind ou rebind). A ideia aqui é que você possa reutilizar o plano de acesso mudando apenas as variáveis associadas caso as consultas possuam um alto grau de similaridade. A reutilização de plano pode impedir que alterações significativas ocorram sem sua aprovação explícita. Isso pode significar que embora suas consultas não se beneficiam de melhorias potenciais do plano de acesso, o controle sobre a reutilização do plano de acesso fornece a capacidade de testar e implementar melhorias. Até então, você pode continuar a usar planos de acesso existentes juntamente com o desempenho estável e previsível. A reutilização do plano de acesso é também referida como plano de bloqueio (lockdown plan). Para ativar a reutilização do plano de acesso use a instrução ALTER PACKAGE, ou a opção APREUSE dos comandos BIND, REBIND ou PRECOMPILE. Pacotes que estão sujeitos a reutilização do plano de acesso tem o valor de Y na coluna APREUSE da visão do catálogo SYSCAT.PACKAGES. O procedimento ALTER_ROUTINE_PACKAGE é uma forma conveniente de permitir o a reutilização dos planos acesso para objetos SQL compilados. No entanto, os planos de acesso não podem ser reutilizados durante revalidação do objeto compilado. Isso acontece, pois, o objeto é descartado antes de ser recompilado. Neste caso, o APREUSE só terá efeito na próxima vez que o pacote for carregado. A reutilização do plano de acesso é mais eficaz quando as mudanças no esquema e no ambiente de compilação são mínimas. Se forem feitas alterações significativas, não será possível recriar o plano de acesso anterior. Exemplos de mudanças significativas incluem a remoção de um índice que está sendo usado em um plano de acesso, ou recompilar uma instrução SQL em um nível de otimização diferente. Você pode combinar a reutilização do plano de acesso com diretrizes de otimização. Uma diretriz no nível de instrução tem precedência sobre a reutilização do plano de acesso para a instrução SQL estática. Isso significa que se você definir um critério de otimização na consulta que se contraponha ao definido no plano de acesso teremos que compilar essa consulta para se adequar a definição do comando. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 9 64 Os planos de acesso para instruções estáticas que não têm essas diretrizes de nível de instrução podem ser reutilizados se eles não entrarem em conflito com alguma das diretrizes de otimização especificada. Um comando de profile com uma política de otimização vazia pode ser usado para desativar o acesso a reutilização do plano sobre uma declaração específica, deixando a reutilização do plano disponível para as outras declarações estáticas no pacote. Classes de otimização Quando você compila uma instrução SQL ou XQuery, você pode especificar uma classe de otimização que determina como o otimizador de consulta escolhe o plano de acesso mais eficiente para o comando especificado. As classes de otimização diferem no número e tipo de estratégias de otimização que são consideradas durante a compilação de uma consulta. Embora você possa especificar técnicas de otimização individualmente para melhorar o desempenho do tempo de execução para uma determinada consulta, quanto mais técnicas de otimização você especificar, maior serão o tempo e os recursos do sistema necessários para a compilação da consulta. Destaforma, um conjunto de classes forma criadas para ajudá-lo na definição do conjunto de regras de otimização. Você pode especificar uma das seguintes classes de otimização quando você compila uma instrução SQL ou XQuery: 0 - Esta classe direciona o otimizador a usar a otimização mínima ao gerar um plano de acesso, e tem as seguintes características: • As estatísticas de frequência do valor não são consideradas pelo otimizador. • Apenas as regras básicas de reescrita de consulta são aplicadas. • A enumeração de junção de Greedy2 é usada. • Apenas os métodos de acesso de loop aninhado e varredura de índice são habilitados. • A lista de prefetch não é usada na geração de métodos de acesso. • A estratégia da star-join não é considerada. Esta classe só deve ser usada em circunstâncias nas quais a menor sobrecarga de compilação de consulta possível é um requisito. A classe de otimização de consulta 0 é adequada para uma aplicação que consiste inteiramente de comandos SQL ou XQuery simples que acessam tabelas bem- indexados. 1 - Esta classe de otimização tem as seguintes Características: • As estatísticas de frequência do valor não são consideradas pelo otimizador. • Apenas um subconjunto de regras de reescrita de consulta são aplicadas. • A enumeração de junção de Greedy é usada. 2 O algoritmo guloso de junção seleciona apenas um método de junção em uma direção, o que significa que o método join selecionada não será alterada durante a otimização. É um método heurístico, que não garante a escolha do melhor plano. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 10 64 • A lista de prefetch não é usada na geração de métodos de acesso. A classe de otimização 1 é semelhante à classe 0, exceto que as funções de merge scan join e table scans também estão disponíveis. 2 - Esta classe direciona o otimizador a usar um grau de otimização que é significativamente maior do que o da classe 1, mantendo os custos de compilação para consultas complexas significativamente menor do que o da classe 3 ou superior. Esta classe de otimização tem as seguintes características: • Todas as estatísticas disponíveis, incluindo frequência de valores e as estatísticas de quantis, são usados. • Todas as regras de reescrita de consulta são aplicados, com exceção de regras computacionalmente intensivas • A enumeração de junção de Greedy é usada. • Uma ampla gama de métodos de acesso é considerada, incluindo a lista de prefetch e roteamento para MQT. A estratégia de junção estrela é considerada, se for o caso. A classe 2 é recomendada para consultas muito complexas de apoio à decisão ou OLAP. Nesses ambientes, uma consulta específica não é repetida exatamente da mesma maneira, de modo que é improvável para um plano de acesso que ele permaneça no cache até a próxima ocorrência da consulta. 3 - Esta classe representa uma quantidade moderada de otimização, e chega próximo das características de otimização de consulta do DB2. Esta classe optimização tem as seguintes características: • Estatísticas de valor frequentes são usadas, se disponível. • A maioria das regras de reescrita de consulta são aplicadas, incluindo transformações de subconsultas em junções. • A programação dinâmica join enumeração é usada, com: o Uso limitado de composição internas entre tabelas. o Uso limitado de produtos cartesianos para esquemas estrela que envolvem tabelas de lookup. • Uma ampla gama de métodos de acesso é considerada, incluindo a lista de prefetch, o índice de AND, e junção estrela. Esta classe é adequada para uma ampla gama de aplicações e melhora planos de acesso para consultas com quatro ou mais operações de junção. 5 - Esta classe dirige o otimizador para usar uma quantidade significativa de otimização para gerar um plano de acesso, e tem as seguintes características: Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 11 64 • Todas as estatísticas disponíveis, incluindo frequência dos valores e as estatísticas dos quantis, são usadas. • Todas as regras de reescrita de consulta (incluindo roteamento MQT) são aplicados, com exceção regras computacionalmente intensivas que são aplicáveis somente em casos muito raros. • A programação dinâmica na enumeração dos join é usada, com: o Uso limitado de composições entre tabelas internas (inner tables) o Uso limitado de produtos cartesianos para esquemas estrela que envolvem tabelas de lookup. • Uma ampla gama de métodos de acesso é considerada, incluindo a lista de prefetch, o índice de AND, e o roteamento MQT. A classe de otimização 5 (o padrão) é uma excelente escolha para um ambiente misto com tanto processamento de transações e consultas complexas. Esta classe de optimização foi concebida para aplicar a mais valiosas transformações de consulta e outras técnicas de optimização de uma maneira eficiente. Se o otimizador de detectar que recursos adicionais e tempo de processamento de instruções dinâmicas complexas de SQL ou XQuery não são garantidos, a otimização é reduzida. A extensão da redução depende do tamanho da máquina e o número de predicados da consulta. Quando o otimizador reduz o percentual de otimização de consultas, continua a aplicar todas as regras de reescrita de consulta que normalmente seriam aplicadas. No entanto, ele usa enumeração greevy join e reduz o número de combinações do plano de acesso que são consideradas. 7 - Esta classe direciona o otimizador a usar uma quantidade significativa de tempo/esforço de otimização para gerar um plano de acesso. É semelhante a classe de otimização 5, exceto que, neste caso, o otimizador não considera reduzir o percentual de otimização de consulta para instruções dinâmicas complexas de SQL ou XQuery. 9 - Esta classe direciona o otimizador a usar todas as técnicas de otimização disponíveis. Esses incluem: • Todas as estatísticas disponíveis. • Todas as regras de reescrita de consulta. • Todas as possibilidades para de enumeração de junção, incluindo produtos cartesianos e composições ilimitadas de inner joins. • Todos os métodos de acesso Esta classe aumenta o número de possíveis planos de acesso que são considerados pelo otimizador. Você pode usar esta classe para determinar se a otimização mais abrangente geraria um plano de acesso melhor para consultas muito complexas ou muito longa duração que usam tabelas grandes. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 12 64 Use explicar e medições de desempenho para verificar se um plano melhor, na verdade, foi encontrado. Perfis de otimização e diretrizes Um perfil de otimização é um documento XML que pode conter diretrizes de otimização para uma ou mais instruções SQL. A correspondência entre cada instrução SQL e suas diretrizes de otimização associadas é estabelecida utilizando o texto SQL e outras informações que são necessárias para identificar inequivocamente uma instrução SQL. O otimizador do DB2 é um dos otimizadores mais sofisticados baseado em custo disponíveis no mercado. No entanto, em casos raros, o otimizador pode selecionar um plano de execução não ideal. Um DBA familiarizado com o banco de dados pode usar utilitários como db2advis, runstats e db2expln, bem como a definição de classe de otimização para ajudá-lo ajustar o otimizador para um melhor desempenho do banco de dados. Se o DBA não receber os resultados esperados depoisque todas as opções de ajuste forem esgotadas, ele pode fornecer diretrizes de otimização explícitas ao otimizador do DB2. Por exemplo, suponha que, mesmo depois de ter atualizado as estatísticas de banco de dados e executado todos os outros passos do ajuste, o otimizador ainda não escolheu o índice I_SUPPKEY para acessar a tabela SUPPLIERS na seguinte consulta: Neste caso, uma diretriz de otimização explícita pode ser usada para influenciar o otimizador. Por exemplo: As diretrizes de otimização são especificadas usando uma descrição em XML simples. Cada elemento dentro do elemento OPTGUIDELINES é interpretado como uma diretriz de otimização pelo otimizador DB2. Existe um elemento de orientação optimização no exemplo anterior. O elemento IXSCAN solicita que o otimizador utilize índice para acesso aos dados. O atributo TABLE do elemento IXSCAN indica a referência para tabela (usando o nome exposto na referência de tabela) e o atributo INDEX especifica o índice. O exemplo a seguir é baseado na consulta anterior, e mostra como uma diretriz de otimização pode ser passada para o otimizador do DB2 usando um perfil de otimização. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 13 64 Cada elemento do STMTPROFILE fornece um conjunto de diretrizes de otimização para um comando de aplicação. A declaração alvo é identificada pelo subelemento STMTKEY. Ao perfil de otimização é então dado um nome qualificado pelo SCHEMA e inserido no banco de dados. O perfil de otimização é posto em prática pela declaração desse nome no comando BIND ou PRECOMPILE. Os perfis de otimização permitem diretrizes de otimização que serão fornecidas para o otimizador de consultas sem alterações nos aplicativos ou na configuração de banco de dados. Você simplesmente compõe um documento XML simples, insere no banco de dados e especifica o nome do perfil de otimização no comando BIND ou PRECOMPILE. O otimizador combina automaticamente diretrizes de otimização para a instrução apropriada. As diretrizes de otimização não precisam ser abrangentes, mas devem ser direcionadas para um plano de execução desejado. O otimizador do DB2 considera ainda outros planos de acesso possíveis que utilizam os métodos baseados nos custos existentes. As diretrizes de otimização especificam as referências que não podem substituir as configurações gerais de otimização. Por exemplo, uma diretriz de otimização especificando a mesclagem entre as tabelas A e B não é válido na classe de otimização 0. O otimizador ignora diretrizes de otimização inválidas ou inaplicáveis. Se quaisquer diretrizes de otimização forem ignoradas, um plano de execução é criado e um SQL0437W (desempenho desta consulta complexa pode ser abaixo do ideal) com o código de razão 13 é retornado. Em seguida, você pode usar a instrução EXPLAIN para obter informações de diagnóstico detalhadas sobre processamento de diretrizes de otimização. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 14 64 Impacto da partição de banco de dados na otimização de consultas Em ambientes de banco de dados particionado, o otimizador reconhece e usa a localização das tabelas quando estabelece o melhor plano de acesso para uma consulta. Se as tabelas são frequentemente envolvidas em consultas de junção, devem ser divididos entre as partições de banco de dados de tal forma que as linhas de cada tabela usadas na junção se encontram na mesma partição do banco de dados. Durante a operação de junção, a colocação de dados de ambas as tabelas associadas impede o movimento de dados a partir de uma partição de banco de dados para a outra. Colocar as duas tabelas no mesmo grupo de partição de banco de dados pode garantir que os dados sejam retornados mais rapidamente. Dependendo do tamanho da tabela, quando espalhamos os dados da tabela sobre mais partições de banco de dados reduzimos o tempo estimado para executar uma consulta. O número de tabelas, a dimensão das tabelas, a localização dos dados nestas tabelas, e do tipo de consulta (por exemplo, se uma junção for necessária) todos afetam o custo da consulta. Vamos agora analisar algumas ferramentas e metodologias utilizadas no ajuste de performance. AJUSTE DE PERFORMANCE (FERRAMENTAS E METODOLOGIA) Quando falamos de ajustes de performance podemos pensar sobre o ponto de vista do monitoramento operacional de performance do sistema. A monitoramento operacional refere-se a coleta de métricas-chaves de desempenho do sistema em intervalos periódicos ao longo do tempo. Esta informação fornece dados críticos para refinar a configuração inicial ajustando às suas necessidades, e também prepara o ambiente para tratar de novos problemas que podem aparecer em atualizações de software, no aumento dos dados ou volumes de usuários, ou ainda na implantação de novos aplicativos. O utilitário governor, db2gov, monitora o comportamento de aplicativos que são executados contra uma base de dados e pode mudar esse comportamento, dependendo das regras especificadas no seu arquivo de configuração. Veja abaixo a sintaxe do comando: Monitoramento operacional da performance do Sistema Uma estratégia de monitoramento operacional deve abordar vários aspectos. Por exemplo, ela precisa ser o mais leve possível, ou seja, não deve consumir grande parte do processamento do sistema que está medindo. Ela deve ainda ser abrangente, mantendo uma capacidade de observação ampla que vá além dos potenciais problemas que podem aparecer em qualquer lugar no sistema. O fato de você planejar a coleta regular de métricas operacionais durante toda a vida útil do sistema gera uma necessidade de termos uma maneira de gerenciar todos os dados. Para muitos dos Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 15 64 possíveis usos que você venha a ter para os dados, tais como calcular a tendências de desempenho a longo prazo, você quer ser capaz de fazer comparações entre coleções arbitrárias de dados que estão distribuídas por vários meses. O DB2 facilita esse tipo de gerenciamento de dados muito bem!! A análise e comparação de dados de monitoramento se torna muito simples, e você já tem uma infraestrutura robusta para armazenamento e organização dos dados a longo prazo. Um sistema de banco de dados DB2 fornece algumas excelentes ferramentas de monitoramento de dados. Os principais são monitores de snapshot e o gerenciamento de carga (WLM) com funções de tabela para agregação de dados. Ambos se concentram na sumarização dados, onde ferramentas como contadores, temporizadores e histogramas contabilizam os dados sobre as atividades no sistema de banco de dados. Por amostragem das informações obtidas por estes elementos de monitoramento ao longo do tempo, você pode derivar a atividade média durante um intervalo. Não há nenhuma razão para limitar suas métricas a apenas as que o produto DB2 fornece. A informação contextual é fundamental para a determinação de problemas de desempenho. Os usuários, o aplicativo, o sistema operacional, o subsistema de armazenamento e a rede - todos estes podem fornecer informações valiosas sobre o desempenho do sistema. Incluindo métricas externas ao sistema de banco de dados DB2 podem ser importantes para produzir uma imagem global completa do desempenho do sistema. A tendência nos últimos lançamentos do banco de dados DB2 tem sido a de fazer mais e mais dados de monitoramento disponibilizados através de interfaces SQL.Isso torna o gerenciamento de dados de monitoramento muito simples, porque você pode facilmente redirecionar os dados das visões de administração, por exemplo, de volta para tabelas do DB2. Os dados do monitor de eventos de atividade também podem ser gravados em tabelas do DB2, proporcionando benefícios semelhantes. Com a grande maioria dos nossos dados de monitoramento tão fácil de armazenar em DB2, um pequeno investimento para que as métricas do sistema sejam também armazenadas no DB2, tais como a utilização da CPU por meio do comando vmstat, é administrável. Tipos de dados coletados pelo monitoramento operacional Vários tipos de dados são úteis para serem coletados pelo monitoramento operacional contínuo. Um conjunto básico de métricas de monitoramento de desempenho do sistema DB2: Informações de configuração DB2 Conhecer as cópias regulares do banco de dados e a configuração do gerenciador de banco de dados, as variáveis de registro DB2, e a definição do esquema ajuda a fornecer um histórico de todas as alterações que foram feitas, e pode ajudar a explicar as mudanças que surgem em dados de monitoramento. Carga total do sistema Se é permitido que a utilização da CPU ou E/S se aproximar da saturação, isto pode criar um gargalo no sistema que pode ser difícil de detectar usando apenas instantâneos (snapshot) de DB2. A melhor prática, então, é monitorar regularmente carga do sistema com vmstat e iostat (e possivelmente netstat para problemas de rede) em Linux e UNIX, e perfmon no Windows. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 16 64 Você também pode usar as visões administrativas, tais como ENV_GET_SYSTEM_RESOURCES, para recuperar informações do sistema operacional, CPU, memória e outras informações relacionadas ao sistema. Normalmente você deve olhar para as mudanças nos valores considerados normais para o seu sistema. Taxa de transferência e tempo de resposta medido no nível de negócios Uma visão do desempenho da aplicação, medida pelo DB2, no nível de lógica de negócios, tem a vantagem de ser mais relevante para o usuário final, além de que normalmente inclui tudo o que poderia criar um gargalo, tais como a lógica de apresentação, servidores de aplicações, servidores web, várias camadas da rede, e assim por diante. Estes dados podem ser vitais para o processo de criação ou verificação de um acordo de nível de serviço (SLA). Os elementos de monitoramento de desempenho do sistema DB2 e os dados de carga do sistema são compactos o suficiente para que mesmo que sejam coletadas a cada cinco a quinze minutos, o volume total de dados ao longo do tempo é irrelevante na maioria dos sistemas. Da mesma forma, a sobrecarga da coleta de dados é tipicamente na faixa de 1-3% do consumo de CPU adicional Vejam que podemos considerar pequeno o preço a pagar por uma série histórica contínua de importantes métricas do sistema. As informações de configuração mudam raramente, de modo a coleta destes dados uma vez por dia é suficiente para ser útil, sem criar uma quantidade excessiva de dados. Há centenas de métricas para escolher, mas coletar todas elas podem ser contra produtivo, devido ao grande volume de dados produzidos. Você deve procurar por métricas que sejam: Fácil de coletar - Você não quer usar ferramentas complexas ou dispendiosas para o monitoramento quotidiano, e você, também, não quer que o ato de monitorar a carga seja significativo na performance do sistema. Fácil de entender - Você não quer procurar o significado da métrica cada vez que você for visualizá-la. Tenha relevância para o seu sistema - Nem todas as métricas fornecem informações significativas em todos os ambientes. Sensível, mas não muito sensível ☺ - Uma mudança na métrica deve indicar uma mudança real no sistema. A métrica não deve flutuar por conta própria. AJUSTE DE USO DE MEMÓRIA Ter memória suficiente e corretamente configurada é fundamental para o bom desempenho do sistema. Sem a quantidade de memória adequada, o acesso aos dados que poderiam ser “bufferizdos” se transformam acesso ao disco por meio de operações de E/S, criando muitas vezes um gargalo de disco no processo. Temos ainda quantidades menores, mas importantes de memória que são usadas para armazenar os metadados e os resultados calculados, tais como planos de acesso SQL e os bloqueios de itens de dados. Sem memória suficiente para estes, o sistema deve descartar ou coletar essas informações Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 17 64 importantes e ainda recalcular ou de algum modo compensar com processamento adicional, aumentando a sobrecarga na CPU. Assim, um gargalo de memória pode realmente ser disfarçado como um problema de disco ou CPU. A tabela a seguir resume os gargalos de disco e CPU que têm memória como um potencial causa subjacente. A maioria dos gargalos de memória se manifestam com os sintomas de um gargalo de CPU ou de disco. As questões de memória dever se considerados na investigação de tais problemas. Uma análise mais aprofundada dos dados do comando vmstat indica a partir da atividade de paginação (com ou sem o uso elevado da CPU do sistema), se há pressão de memória excessiva no sistema. A arquitetura multithreaded do DB2 que foi introduzida no DB2 9.5 em todas as plataformas simplifica a configuração e otimização do uso de memória em servidores DB2. O limite global para o uso de memória é definido por um único parâmetro de configuração do gerenciador de banco de dados chamado INSTANCE_MEMORY. Em ambientes particionados, o INSTANCE_MEMORY especifica a quantidade máxima de memória que pode ser alocada para uma partição de banco de dados. O INSTANCE_MEMORY é definido como AUTOMATIC por padrão. Isto permite que a memória cresça conforme a necessidade - até um limite entre 75% e 95% da memória RAM física do servidor. Em ambientes em que outros aplicativos compartilham o mesmo servidor com o sistema DB2, estabelecer um valor específico para a variável INSTANCE_MEMORY é recomendado. A maneira mais fácil de monitorar o uso geral da memória do servidor DB2 (ou das partições em ambientes particionados) é usando o comando db2pd –dbptnmem (alternativamente, você pode consultar a função de tabela ADMIN_GET_MEM_USAGE). A saída do comando db2pd -dbptnmem lista o uso de memória atual, bem como o pico (high-water mark - HWM) da variável INSTANCE_MEMORY, bem como dos diferentes conjuntos de memória no DB2. Os conjuntos de memória mais importantes em um ambiente de servidor DB2 são: Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 18 64 1. Conjunto de memória do gerenciador de BD: A memória usada pela própria instância do DB2 (por exemplo, para o monitoramento ou auditoria do próprio DB2). 2. Conjunto de memória de banco de dados: Este conjunto de memória é geralmente o maior em um servidor DB2. Ele contém todos os consumidores de memória de banco de dados compartilhados, como os pools de buffer, a pilha classificação, a lista de bloqueio e o cache do pacote. Este conjunto de memória é controlado pelo parâmetro DATABASE_MEMORY de configuração de banco de dados (o valor padrão é AUTOMATIC). 3. Conjunto e memória de aplicação: Trata-se da memória usada para um processamento específico do aplicativo. Este conjunto é configurado com o parâmetro de configuração APPL_MEMORY do banco de dados (inicializado por padrão como AUTOMATIC). Além desses conjuntos de memória, um servidorDB2 tem dois conjuntos de memória adicionais, PRIVATE (de uso geral), FMP (para processamento de modo vedado), e FCM (Fast Communication Manager para ambientes de cluster). Além comando db2pd -dbptnmem, você pode usar a função de tabela MON_GET_MEMORY_SET para ver o tamanho dos diferentes conjuntos de memória. Para todos os grandes consumidores de memória do banco de dados definidos você pode habilitar o gerenciador de memória para auto ajuste (self-tuning memory manager - STMM). O STMM sintoniza os diferentes pools de memória como lista de bloqueio ou cache de pacotes que fazem parte do DATABSE_MEMORY. Uma maneira fácil de determinar o consumo de memória real dos diferentes pools de memória está na função de tabela MON_GET_MEMORY_POOL (alternativamente, você pode usar o comando db2pd -mempools). Os gargalos de memória ainda podem ocorrer nas seguintes condições: 1. Se o valor do INSTANCE_MEMORY foi explicitamente definido para um valor numérico (não automático) e o STMM está habilitado, o STMM vai levar o consumo de memória até o valor de INSTANCE_MEMORY se a carga de trabalho no banco de dados for alta. Se o seu sistema de banco de dados DB2 compartilha o mesmo host com outro consumidor de memória grande como o WebSphere ou uma instância central de SAP, certifique-se de definir um valor para o INSTANCE_MEMORY que deixa memória suficiente tanto para DB2 e da aplicação. 2. Um valor explícito de INSTANCE_MEMORY muito elevado para o sistema pode não ser um problema até bancos de dados adicionais serem colocados online, levando a dotação total de memória do DB2 para um patamar maior do que o sistema pode acomodar, mas ainda dentro do valor estabelecido para INSTANCE_MEMORY. Isso acontece porque o STMM é projetado para lidar com a pressão de memória, libertando memória de volta para o sistema operacional, se necessário, este cenário seria mais provável de ocorrer quando o STMM não está habilitado, ou quando a plataforma envolvida não suporta a libertação de memória de volta ao SO, ou quando as exigências de memória do banco de dados são extremamente dinâmicas (por exemplo, a criação rápida de conexões de banco de dados). 3. Se um grande número de conexões de base de dados é necessário, isto pode resultar no consumo de grande parte da memória da instância pelos agentes. Se este montante Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 19 64 for excessivo - deixando pouca memória para banco de dados fazer suas alocações de memória globais com ou sem o STMM. Isso pode ser reduzido com o uso do concentrador de conexão. ALTA DISPONIBILIDADE E RECUPERAÇÃO DE DESASTRE (HADR), RECUPERAÇÃO DE DADOS, INTEGRAÇÃO COM TIVOLI STORAGE MANAGER (TSM). Não importa a um usuário o motivo pelo qual sua solicitação ao banco de dados falhou. Se uma operação sofreu timeout por causa do mau desempenho, ou se um componente da solução falhou, ou ainda se um DBA tornou o banco de dados off-line para realizar manutenção, o resultado é sempre o mesmo para o usuário: O banco de dados não está disponível para processar seus pedidos. Existem diversas estratégias para melhorar a disponibilidade da sua solução de banco de dados que incluem: Redundância - Ter cópias secundárias de cada componente de sua solução pode levar ao processamento de uma carga de trabalho (worklaod) em caso de falha. Monitoramento do sistema - Recolher dados estatísticos sobre os componentes de sua solução para facilitar o balanceamento de carga ou detecção de quais componentes falharam. Balanceamento de carga – Consiste em Transferir parte da carga de trabalho de um componente do seu sobrecarregado para um outro componente de sua solução que tem uma carga de trabalho baixa. Failover – Transferir toda a carga de trabalho de um componente com falha para um componente secundário. Maximização de desempenho - Reduzindo a chance de que as transações levam muito tempo para concluir ou sofrer timeout. Minimizar o impacto da manutenção - Agendamento de atividades de manutenção automática e manual de manutenção atividades de forma a impactar os aplicativos de usuário tão pouco quanto possível. Nas próximas seções vamos tratar de duas funcionalidades fornecidas pelo DB2 para manter a alta disponibilidade: HADR e pureScale. HADR A funcionalidade HADR é adequada para manter um ambiente de alta disponibilidade, seja por uma falha total ou parcial no site. HADR protege seu banco de dados contra a perda de dados por meio da replicação das mudanças feitas na sua fonte de dados, conhecido como banco de dados primário, e em um ou vários bancos de destinos, conhecidos como banco de dados de standby ou espera. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 20 64 Em outras palavras, High Availability Disaster Recovery (HADR) usa os registros de log do banco de dados para replicar os dados do banco primário para um banco de standby. Algumas atividades podem levar o banco de dados de standby a reproduzir o banco de dados primário, como a transmissão dos registos de log. Algumas atividades geram tantas informações de log que a grande quantidade de arquivos de log pode causar problemas de armazenamento. Embora a replicação de dados para o banco de dados standby usando logs seja o núcleo das estratégias de alta disponibilidade, o log em si pode, potencialmente, ter um impacto negativo sobre a disponibilidade da sua solução. Projete sua estratégia de manutenção de forma inteligente, configure o sistema para minimizar o impacto negativo da utilização dos logs, e permitir que o uso dos logs possa para proteger seus dados transacionais. Uma falha parcial no site pode ser causada por uma falha hardware, rede ou software (sistema de banco de dados ou sistema operacional). Sem HADR, uma falha parcial no site requer a reinicialização do servidor do sistema de gerenciamento de banco de dados. A duração de tempo que leva para reiniciar o banco de dados e o servidor é imprevisível. É possível que demore vários minutos antes do banco de dados ser trazido de volta para um estado consistente e disponível. Com HADR, um banco de dados de espera pode assumir em segundos. Além disso, você pode redirecionar os clientes que usam o banco de dados primário original para o novo banco de dados principal usando reencaminhamento (reroute) automático de cliente ou repetição lógica (retry logic) no aplicativo. Uma falha completa no site pode ocorrer quando um desastre, como um incêndio, faz com que o site inteiro seja destruído. No entanto, como o HADR usa TCP/IP para a comunicação entre os bancos de dados primário e de espera, esses bancos de dados podem estar em locais diferentes. Por exemplo, o banco de dados principal pode estar na sede da empresa em uma cidade, e um banco de dados de espera pode estar em seu escritório de vendas em outra cidade. Se ocorrer um desastre no site primário, a disponibilidade dos dados é mantida por ter o banco de dados de standby remoto para assumir como principal com todas as funcionalidades do DB2. Depois de ocorrer uma operação de recuperação, você pode trazer o banco de dados principal original de volta e devolvê-lo à sua função de banco de dados principal, este conceito é conhecido como failback. Você pode iniciar uma operação de failback se você quiser fazer o antigo banco de dados primário consistente com o novo banco de dados principal. Depois de reintegrar o antigo banco de dados primário na configuração do HADR como um banco de dados de espera, você pode alternar os papéis dos bancos de dados para permitir que o banco de dados primário original se torne mais uma vez o banco dedados primário. As funcionalidades de um DB2 HADR incluem: o Capacidade recuperação rápida (fast failover) o Impacto insignificante no desempenho o Fácil de configurar e monitorar o Upgrades contínuos sem tempo de inatividade para aplicações em execução Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 21 64 o Failover e failback transparentes para aplicações o Fácil integração com software de clustering alta disponibilidade o Recuperação melhorada de desastres em comparação com métodos convencionais Todas as mudanças que ocorrem no servidor de banco de dados principal são escritas em registros de log. Estes registros de log são então enviados para o servidor de banco de dados secundário, onde as alterações são reproduzidas na cópia local do banco de dados. Este procedimento garante que os servidores de banco de dados primário e secundário estão em um estado sincronizado. Deste ponto em diante, o servidor de espera está em um modo de avanço contínuo e está sempre em um estado de quase prontidão (near-readiness), assim assumir o controle é bastante rápido. No DB2 10.1, também é possível utilizar a capacidade do banco de dados de espera para executar operações somente leitura no banco de dados em sua solução HADR. Operações de leitura que estão sendo executados no banco de espera não afetam o principal papel do servidor de espera que seria a replicação de logs que são enviados a partir do banco de dados primário. Usando duas portas dedicadas de comunicação TCP/IP e um monitor de pulsação (heartbeat), o primário e os bancos de dados standby rastreiam onde estão processando no momento, o estado atual da replicação, e se o banco de dados standby está atualizado com o banco de dados primário (conhecido como estado HADR Peer). Quando um registro de log está sendo escrito no disco primário, ele é enviado para o HADR para ser encaminhado ao banco de espera ao mesmo tempo. Essa descrição de eventos apresentadas até aqui, presentes na solução de HADR podem ser observadas na figura abaixo. Na alta disponibilidade para recuperação de desastres (HADR), as seguintes operações são replicadas do primário para o banco de dados de espera (standby): Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 22 64 o Linguagem de definição de dados (DDL) o Linguagem de manipulação de dados (DML) o Operações de buffer pool o Operações em tablespaces o Reorganização on-line o Reorganização off-line o Metadados para procedimentos armazenados e funções definidas pelo usuário (UDF) (mas não o objeto ou biblioteca de arquivos relacionados) O HADR não replica procedimentos armazenados e, objetos e bibliotecas de arquivos UDF. Você deve criar os arquivos em caminhos idênticos em ambos os bancos de dados primário e de espera. Se o banco de dados de standby não conseguir encontrar o objeto ou biblioteca referenciado, o procedimento armazenado ou UDF chamado irá falhar no banco de dados de espera. Topologia HADR Com HADR, você define o nível de proteção contra perda potencial de dados nas escolhas de configuração e de topologia. Algumas das escolhas importantes que você deve fazer são os seguintes: Nível de sincronização: bancos de dados de standby são sincronizados com o banco de dados primário por meio dos dados de log que são gerados no banco primário e enviados para os bancos de standby. Estes vão, constantemente, passar (roll forward) pelos arquivos de log. Você pode escolher entre quatro modos de sincronização diferentes. Na ordem da maior para a menor proteção, estes modos são: síncrono (SYNC), quase-síncrono (NEARSYNC), assíncrono (ASYNC), e super-assíncrono (SUPERASYNC). Janela de pares (peer window): o recurso de janela de pares especifica que os bancos de dados primário e de espera estão a comportar-se como se eles ainda estivessem em estado de peer por um período de tempo configurado se o banco primário perder a conexão HADR no estado de peer. Se o banco de dados primário falhar no estado de peer ou no estado "desconectado dos pares", o failover de espera tem perda de dados zero. Este recurso fornece uma maior proteção. (Falaremos sobre os estados do HADR logo em seguida) Número de banco de standby: Quando você está trabalhando com HADR você pode optar pelo modo de standby único ou múltiplo. Com múltiplos bancos de standby você pode garantir os objetivos alta disponibilidade e recuperação de desastres com uma única tecnologia. Existem algumas formas de uso para banco de dados de espera em uma solução de HADR que estão associadas com diferentes propósitos: Leitura no banco de standby: É possível usar os bancos de dados de espera para fornecer funcionalidades de leitura sem afetar as responsabilidades de alta disponibilidade e recuperação de desastres. Essa funcionalidade pode reduzir a carga de trabalho no servidor de banco de dados primário. Você precisa habilitar a leitura no banco de dados de standby para que isso aconteça. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 23 64 Reprodução adiada (delayed replay): Você pode usar o recurso de reprodução adiada para especificar que um banco de dados de espera possa permanecer em um ponto anterior no tempo em relação ao banco de dados principal, em termos de reprodução do registo de log. A funcionalidade HADR de reprodução atrasada ajuda a prevenir a perda de dados resultante de operações incorretas. Para implementar HADR delayed replay, defina o parâmetro de configuração de banco de dados hadr_replay_delay no banco de dados de espera. Avanço de versões (updates e upgrades): A configuração do HADR permite que a execução de vários tipos de upgrades e fix packs seja feita sem levar o banco para o estado de off-line. Se você tem vários nós em standby, é possível executar um upgrade mantendo a proteção provida pela solução HADR. HADR pode ser a melhor opção quando a maioria ou todos os dados do seu banco de dados precisam de proteção ou se você executar operações DDL que devem ser replicados automaticamente em um banco de dados standby. No entanto, HADR é apenas uma das várias soluções de replicação que são oferecidos na família de produtos DB2. O software InfoSphere Federation Server e o sistema de banco de dados DB2 incluem a replicação SQL e soluções Q-replication que você também pode usar, em algumas configurações, para fornecer alta disponibilidade. Estas soluções mantêm cópias logicamente consistentes de tabelas de banco de dados em vários locais. Além disso, elas fornecem funcionalidades flexibilidades e complexas, como o suporte à filtragem de coluna e de linha, transformação de dados e atualizações em quaisquer das cópias de uma tabela. Você também pode usar essas soluções em ambientes de banco de dados particionado. A topologia padrão é um banco primário e outro banco de dados de standby. Esta topologia se tornou o layout mais comumente visto no mercado. Esta configuração consiste em um par de servidores, um com uma única instância DB2 e um único banco de dados que age como o banco de dados principal, e outro com uma única instância DB2 e um único banco de dados que funciona como o banco de dados de standby. No entanto, esta situação não é, de modo algum, a única forma em que pares de bases de dados HADR podem ser implementados em servidores. A replicação HADR ocorre em um nível de banco de dados, e não no nível de instância. Portanto, um servidor de espera pode ter vários bancos de dados a partirde múltiplos bancos primários. Outra opção de configuração é implementar dois servidores, um modo de cluster ativo/ativo. Na figura abaixo, os bancos de dados primários HADR estão espalhados por ambos os servidores em uma configuração de compartilhamento de carga. A vantagem com esta opção é que faz uso mais eficiente dos ciclos dos processadores disponíveis, e de outros recursos do servidor. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 24 64 Desde a versão 10.1 do DB2, o recurso de HADR também suporta múltiplos bancos de dados standby. Este recurso permite uma topologia avançada onde você implanta HADR no modo de espera múltipla. Neste cenário, você pode ter até três bancos de dados de standby em sua configuração. Você define um desses bancos de dados como o principal banco de dados standby HADR. Qualquer outro banco de dados standby é um banco de dados de espera auxiliar. Tal como acontece com a implantação padrão de HADR, os dois tipos de bancos de esperas são sincronizados com o banco de dados primário através de uma conexão direta TCP/IP. Ambos os tipos suportam a leitura sobre o banco de espera, e você pode ainda configurar a reprodução adiada de log. Este cenário é ilustrado pela figura abaixo. Há muitos benefícios ao usar uma configuração múltipla HADR de espera. Em vez de utilizar o recurso HADR para alcançar seus objetivos de alta disponibilidade e outra tecnologia para atingir seus objetivos de recuperação de desastres, você pode usar HADR para ambos. Você pode implantar seu Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 25 64 principal modo de espera no mesmo local como o primário. Se houver uma interrupção no primário, o banco principal de espera pode assumir o papel de primário atingindo os objetivos de tempo de recuperação (RTOs). Você também pode implantar esperas auxiliares em locais distantes, que fornecem proteção contra desastres generalizados que afetam tanto o primário quando o banco principal de espera. Quando você trabalha com vários bancos de dados de espera, todos os modos de sincronização HADR são suportados sobre o banco de espera principal, mas as esperas auxiliares podem ser apenas no modo SUPERASYNC. Outro ponto que devemos levar em consideração quando você configura um ambiente HADR é o recurso de delayed replay. Este recurso evita a perda de dados por causa de transações incorretas. A reprodução atrasada mantém intencionalmente o banco de dados de espera em um ponto no tempo que é anterior ao banco de dados principal, atrasando repetição de logs no banco de espera. Se uma transação incorreta é executada no primário, você tem o tempo de atraso configurado para impedir que a transação seja repetida no banco de espera. Para recuperar os dados perdidos, você pode copiar esses dados para o primário, ou você pode deixa a espera se tonar o novo banco de dados primário. Você pode usar esse recurso em qualquer modo de espera único ou modo de espera múltiplo. No modo de espera múltiplo, normalmente uma ou mais esperas permanecem atualizadas de forma sincronizada com o primário garantindo a alta disponibilidade ou a recuperação de desastres, e uma das esperas é configurada com reprodução retardada para proteção contra as transações incorretas. Conforme prometido anteriormente, vamos agora tratar dos estados do banco de dados HADR. Estados do banco de dados HADR A qualquer momento, um banco de dados HADR de espera está em um dos cinco estados: local catchup, remote catchup pending, remote catchup, peer ou disconnected peer. Os estados são definidos pelo status do log de envio. Independentemente do estado, todos as ocorrências dos registos log disponíveis são respondidas. Se o banco de espera está conectado ao primário, isso é relatado no campo HADR_STATE da tabela MON_GET_HADR e na saída do comando db2pd. (Se não estiver conectado, ele relata DISCONNECTED). A figura a seguir mostra a progressão através dos diferentes estados da base de dados de espera. Em seguida veremos o que cada estado representa. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 26 64 Local catchup: Com o recurso HADR, quando um banco de dados é iniciado como um banco de espera, ele entra no estado local catchup, e os arquivos de log armazenados localmente são lidos para determinar quais registros estão disponíveis. Neste estado, os registros não são recuperados a partir do arquivo, mesmo se você configurou o método para log de arquivamento (log archiving method). Além disso, neste estado, uma conexão para a base de dados principal não é necessária, no entanto, se uma conexão não existir, o banco de dados de standby tenta se conectar ao banco de dados principal. Quando o final dos arquivos de log locais é atingido, o banco de dados de standby entra no estado remote catchup pending. Basicamente neste estado ocorre a verificação das informações de logo nos arquivos locais. Remote catchup pending: Este estado começa com a verificação da conexão com o site primário, se ela ainda não foi estabelecida, então, uma conexão é solicitada e espera-se para que seja concretizada. Estabelecida a conexão o servidor do banco de dados de standby obtém as informações dos logs correntes. Isso permite que se verifique se os registros de logs do banco de dados de standby são válidos, caso esteja configurado no modo log archive. Vejam que está etapa é responsável por fazer a conexão com a base primária e por executar um match entre os arquivos de logo do servidor primário com o de standby. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 27 64 Remote catchup: Neste estado os dados são de fato lidos do log de dados da base primária e enviados para a base de espera. Após todos os dados serem transferidos as bases entrem no estado de Peer. Peer: Aqui os dados de log são enviados diretamente do buffer do log gravação do site primário para o banco de espera sempre que o principal libera suas páginas de log para o disco. O modo de sincronização do HADR especifica se os bancos primários esperam por uma mensagem de confirmação de que os dados dos registros log foram recebidos. As páginas de log são sempre gravadas nos arquivos de log locais do banco de dados de standby. Esse comportamento protege contra um acidente e permite que um arquivo possa ser arquivado no novo banco primário em caso de falha, caso não tenha sido arquivado no antigo primário. Depois de serem escritas no disco local, as páginas de log recebidas podem ser reproduzidas no banco de dados de espera. Se o log spooling estiver desativado, que é o padrão, a ação de reprodução dos logs vai ler os registros apenas do log buffer de recepção. Se o log de repetição estiver lento, o buffer de recepção pode ficar cheio, e o banco de espera deixa de receber novos logs. Se isso acontecer, a escrita no log primário é bloqueada. Se a conexão entre os bancos de dados primário e de espera é perdida quando os bancos de dados estão em estado de peer e o parâmetro de configuração de banco de dados hadr_peer_window é definido como 0, que é o padrão, o banco de dados standby entra no estado remoto catchup pending. No entanto, se a conexão entre os bancos de dados primário e de espera é perdida durante o estado de peer e você definiu oparâmetro hadr_peer_window para um valor diferente de zero (o que significa que você configurou uma janela de pares), o banco de dados standby entra no estado disconnected peer. Disconnected peer: Se você configurou uma janela de pares e o banco de dados primário perde sua conexão com o banco de dados de standby, no estado de peer, o banco de dados primário continua a se comportar como se os bancos de dados estão em estado de Conceitos rápidos: hadr_timeout e hadr_peer_window hadr_timeout: parâmetro de configuração que determina quanto tempo uma base de dados HADR aguarda antes de considerar que sua conexão com o banco de dados do parceiro como falhou. hadr_peer_window: parâmetro de configuração determina se o banco de dados entra em estado disconnected peer após uma conexão for perdida, e quanto tempo o banco de dados deve permanecer nesse estado. O HADR peer window não é suportado em um ambiente DB2 pureScale®, portanto, qualquer definição para hadr_peer_window é ignorada. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 28 64 peer. Este comportamento dura até que a janela de pares expira ou até que o bando de espera se reconecta, o que ocorrer primeiro. Quando o banco de dados primário e de espera são desconectados, mas se comportam como se eles estivessem em estado de peer, este estado é chamado disconnected peer. Com a janela de pares habilitada, o banco de dados primários bloqueia o processamento de transações por um determinado período de tempo, depois de perder sua conexão com o banco de espera em estado de peer, o que gera uma proteção contra falhas em cascata. Além disso, a espera pode assumir dentro do tempo de janela de pares sem risco de perda de dados. Vamos agora desenvolver um pouco melhor a descrição dos modos de sincronização que forma listados no início da aula. Modos de sincronização Com HADR, você pode escolher o nível de proteção que você admite para uma perda potencial de dados, especificando um dos modos de sincronização: Síncrono (Syncronous): A gravação de log é considerada bem-sucedida somente quando os buffers de log são escritos nos arquivos de registro de log do banco de dados primário e depois do recebimento de um ack que os dados foram igualmente escritos para os arquivos de log dos bancos de espera. Não pode haver perda de dados neste modo se o HADR está no estado de pares (Peer state). Quase-síncrono (Near-synchronous) - Esta é a opção padrão. A escrita do log só é bem- sucedida quando o buffer de log do banco primário é escrito nos arquivos no log do banco primário e uma confirmação é recebida que o buffer de log foi recebido no banco de espera. Assíncrono (Asynchronous) – A escrita do log é bem-sucedida quando os logs são gravados no disco no banco primário e os registros de log de dados são enviados usando TCP/IP para o banco de espera. A perda de dados pode ocorrer neste modo. Super-assíncrono (Super-asynchronous) - As gravações de log são consideradas bem- sucedidas quando os registros de log são escritos para os arquivos de log no banco de dados primário. O fato do banco de dados primário não esperar pelas confirmações do banco de dados de standby leva as transações a serem consideradas comitadas independentemente do estado da replicação dessa transação. A figura a seguir ilustra esses modos de sincronização do HADR e o ponto em que o DB2 se considera capaz de confirmar uma transação durante o estado de pares (Peer state). A figura representa os dois bancos, primário e de espera, interligados pelo protocolo TCP/IP. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 29 64 Arquitetura A tecnologia HADR é estritamente acoplada a estratégia de escrita de logs e recuperação de desastres. O objetivo principal da solução é prover uma failover rápido, substituindo o sistema de banco de dados primário pelo banco de espera se alguma falha acontecer. A arquitetura básica do HADR é simples. Sua estrutura é baseada no repasse dos logs do banco de dados primário para o banco de dados de espera. Cabe ao DBA a escolha de quais bancos de dados devem ser replicados. Para inicializar o HADR você deve escutar comandos tanto no banco de dados primário quanto nos bancos de espera. O sistema HADR começa a funcionar assim que o banco de dados primário fica no estado ativo. O DB2 tem duas unidades especiais de motores de despaches (engine dispatchable units - EDUs) para lidar com todo o trabalho do HADR. Uma é executada sobre o banco de dados principal chamada db2hadrp. Sua contraparte no banco de dados de espera é chamada db2hadrs. Eles são responsáveis pelo envio dos registros de log do banco primário para o banco de espera, pelo processamento de mensagens do sistema, e por receber arquivos de log no sistema de espera. Na ativação do banco de dados do primário, o db2hadrp é criado. O processo, em seguida, lê o arquivo de configuração de banco de dados e abre uma porta para atender a conexão a partir do banco de espera. Durante esse tempo, nenhuma conexão de clientes é permitida. O banco primário aguarda um número de segundos definidos no parâmetro de configuração HADR_TIMEOUT pela conexão. Se o primário não receber qualquer comunicação do banco de dados de standby, então o primário conclui que a conexão com o banco de espera está perdida. Se principal e seu correspondente standby estiverem no estado de pares quando a conexão for perdida, eles se movem para o estado de pares desconectado se o parâmetro de configuração de banco de dados hadr_peer_window for maior do que zero, ou para o estado catchup remoto pendente se hadr_peer_window não for maior que zero. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br ==10ef0== 30 64 Se a cláusula BY FORCE for usada quando você executar o comando START HADR, o primário não aguarda o banco de espera se conectar. O banco primário cria um listener que fica monitorando uma conexão na porta HADR. A espera inicia a conexão com o primário. Se a tentativa de conexão do banco de espera falhar, ele tenta se conectar para o primário novamente. Os clientes DB2 são sempre capazes de se conectar a um banco de dados primário HADR ativo, e sempre que a espera estiver pronta, a funcionalidade real do HADR torna-se operacional. O EDU db2lfr captura as alterações que são feitas no servidor primário, quer através da leitura do buffer de log ou lendo os arquivos de log. Em seguida, ele retransmite os registros de log para o db2hadrp, que por sua vez encaminha os registros para o segmento db2hadrs no banco de espera. Por fim, o segmento db2hadrs passa os dados de registo recebidos para o sistema de log local. Depois de todos os registros em disco e memória do banco primário serem retransmitidos para o banco de espera, o sistema HADR entra no estado de pares. Apresentamos de forma rápida dos conceitos e estruturas relacionados a alta disponibilidade do DB2 incluso dentro da estrutura do HADR. Agora vamos passar para a definição de alguns termos que considero importante, eles aparecem dentro do assunto de administração de banco de dados. Vamos a eles? Terminologia A seguir apresentamos uma lista dos termos mais comuns que são usados em uma solução HADR DB2. A maioria desses termos podem ser encontrados em vários manuais do DB2, onde você pode pesquisar, e vê-los sendo usados em diversões contextos. Catchup phase: A inicialização do HADR sempre começa na fase de catchup, em que o bancode standby tenta pegar (catch up) os registros na memória do banco primário. Durante esta fase, o banco de espera pode recuperar arquivos de log localmente ou remotamente a partir do primário por meio da conexão de rede HADR. Cluster: Um cluster é um sistema que se baseia em dois ou mais nós. Os nós são conectados uns aos outros e possuem armazenamento compartilhado. Cada um desses itens é considerado um recurso do cluster. Um software de clustering é usado para conectar logicamente esses recursos para parecer como um único sistema para os clientes. Recurso de cluster: Um objeto que pode ser gerenciado por um software de clustering. Os softwares de clustering suportam muitos tipos de recursos. Esses tipos de recursos incluem discos, endereços IP, arquivos compartilhados, instância do DB2, e assim por diante. Failover: No contexto da HADR, este termo refere-se a alterar o estado do banco de espera em um par de HADR para torna-lo o banco primário, com a funcionalidade completa do DB2, porque a primário original falhou. O primário original pode iniciar, em seguida, no papel de standby. Alguns cuidados devem ser tomados para garantir que o primário original esteja verdadeiramente não-funcional no momento do failover. Se ambas as bases de dados estão funcionando como primário, haverá um conflito na Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 31 64 atualização de dados que o HADR não consegue resolver. O resultado são duas versões incorretas do banco de dados. Failback: No contexto da HADR, após um failover, que fez o banco de espera original torna-se um banco primário, o failback é o ato de reverter esta base de dados de volta para um modo de espera e trazer o banco primário original de volta. Isso significa que, trocando os papéis do primário e do banco de espera, enquanto ambos estão em execução e sem falhas. O failback não é uma operação obrigatória. Um cliente pode escolher deixar as bases de dados nos seus papéis invertidos até que outra operação de failover seja necessária. Esta situação é especialmente provável nos casos em que o objetivo é um failover ultrarrápido, onde o retorno de uma falha pode ser visto como uma interrupção desnecessária do serviço. Os clientes que escolhem esta opção devem garantir que todos os objetos e processos relacionados ao DB2, que o HADR não replica, são os mesmos em ambos os servidores. Esta situação é especialmente verdadeira para coisas como agendamento de tarefas em lote, que devem ser desativados enquanto o banco de dados estiver no modo de espera, e ativados enquanto ele estiver no modo primário. Falhas (failure): Uma falha é um evento em que qualquer componente que seja pré- requisito do serviço de banco de dados (DB2, sistema operacional, máquina de servidor ou de rede) não seja mais capaz de prestar seu serviço. O HADR mantém a disponibilidade dos dados, se houver uma falha em qualquer componente isolado. Se a falha afeta apenas o sistema de espera ou a comunicação entre o primário e o banco de espera, os dados permanecem totalmente disponíveis no primário, sem qualquer interrupção ou necessidade de ação do usuário. Se a falha impede que o próprio banco primário forneça a funcionalidade do DB2, o DBA pode tirar do ar a instância primária do DB2, o servidor, ou ambos (se já não estiver) e iniciar um failover, que muda rapidamente o banco de espera para a função de banco primário, tornando os dados disponíveis novamente após uma breve interrupção. Algumas falhas podem ser detectadas e reportadas pelo HADR e pelo DB2 para ajudar o DBA a decidir se o failover é necessário ou se certos componentes do banco de dados simplesmente exigem atenção. Os processos de banco de dados HADR relatam falha quando eles são incapazes de se comunicar. Os processos de banco de dados DB2 expõe uma falha quando detectam um problema. Estes componentes são os únicos componentes de banco de dados DB2 que relatam falhas fornecidos pelo software DB2. Split brain: Este termo refere-se à condição em que dois bancos de dados em um par HADR estão atuando como bancos primários simultaneamente. Tal situação leva as bases de dados a um estado inconsistente entre si e devem ser evitadas a todo custo. O HADR não faz automaticamente transições de estado que resultam em dois bancos primários, e quando o par pode se comunicar um com os outros (isto é, a conexão de rede entre eles está a funcionar corretamente), ele também impede que um usuário crie esta situação. O HADR também não permite que um banco de dados primário inativo seja ativado sem uma conexão bem-sucedida para um banco de espera dentro do período definido pela variável HADR_TIMEOUT. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 32 64 No entanto, o Split brain ainda é possível em uma situação onde o DBA instrui o banco de espera a se tornar um primário enquanto o link de comunicação entre o par está para indisponível, e ainda se o primário atual ainda estiver ativo ou se ele foi colocado em um estado não-HADR. Mas, este comando é manual e executado somente nos casos mais extremos. Feita essa rápida consideração sobre termos que considero importantes e que ainda haviam sido apresentados durante a aula, podemos concluir nosso estudo de HADR e partir para a solução de pureScale. DB2 PURESCALE Esta seção apresenta a pureScale do DB2, uma tecnologia que trabalha em um ambiente de cluster e usa uma arquitetura de compartilhamento de dados. Esta arquitetura é ideal para escalabilidade e principalmente apropriada para o processamento de transações. Neste ambiente, os dados que estão sendo acessado são compartilhados por todos os servidores no cluster. Se houver uma falha em um dos servidores, ou se ele necessita ficar off-line para fins de manutenção, o restante dos membros que continuam on-line no cluster assumem o trabalho, proporcionando assim uma alta disponibilidade transparente para os dados. DB2 pureScale é baseado na tecnologia robusta que foi executada em sistemas de produção de mainframe por mais de uma década. Como em outras soluções como no particionamento de banco de dados DB2, com o DB2 pureScale não há necessidade dos desenvolvedores de aplicativos escreverem algum código especial para fazer uso da tecnologia. Visão geral da arquitetura Um ambiente DB2 pureScale é composto de membros que executam com a tecnologia do DB2 pureScale. Cada membro do coopera com o outro para proporcionar o acesso coerente à mesma cópia do banco de dados compartilhado. O banco de dados é armazenado em um disco compartilhado acessível por todos os membros. A figura a seguir ilustra um cluster pureScale com quatro membros, cada um executando uma cópia do DB2. Todos os membros estão compartilhando os dados de um único banco de dados particionado. Cada membro mantém seu próprio conjunto de arquivos de log de transações no disco compartilhado, cada conjunto em um caminho (diretório) de log separado. O topo da figura mostra os clientes que executam consultas que acessam o banco de dados. Estas consultas são automaticamente redirecionadas para um dos membros do cluster visando garantir o balanceamento de carga; isso garante nenhum membro está sobrecarregado com o trabalho. A figura também mostra os serviços de cluster em cada membro e uma interconexão de cluster (interconexão de alta velocidade e baixa latência) para facilidades de armazenamento em dois clusters de cache, além de outros conceitos e componentes, tais como o sistema de arquivos em cluster, locking global, gestão de buffer, e assim por diante. Todas estas tecnologias e componentes, que são descritos em mais detalhena seção seguinte, ajudam o pureScale a conseguir escalabilidade transparente e elevada disponibilidade. (a IBM deveria me pagar para escrever esse texto). Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 33 64 DB2 pureScale também pode ser implantado em um ambiente virtualizado. Por exemplo, um servidor físico que executa duas máquinas virtuais pode ter DB2 pureScale instalado em ambos. Em um ambiente de produção, recomenda-se que cada membro tenha seu próprio computador ou host físico único para oferecer alta disponibilidade e escalabilidade ideal. Interconexão do cluster Membros do DB2 pureScale e outros componentes da tecnologia compartilham dados e outras informações entre eles. A alta velocidade e a baixa latência de interconexão são necessárias para a comunicação extremamente rápida. A tecnologia remota de acesso direto à memória (RDMA) desempenha um papel fundamental para atingir esse objetivo. RDMA é uma característica de interface da placa de rede que permite que um host acessar a memória de outro host diretamente. Ele ignora os sistemas operacionais, evita os dados atravessando de memória do aplicativo para a memória do kernel, não necessita de chamadas de socket de IP, nenhuma mudança de contexto, e sem interrupções. Por isso, é também referido como RDMA livre de interrupção. O DB2 pureScale foi projetado e otimizado para trabalhar com uma estrutura de interconexão Infiniband e RDMA over Converged Ethernet (RoCE). Infiniband é um padrão da indústria para a arquitetura de interconexão para conectividade entre o servidor de processamento e o storage. Esta tecnologia é muito madura, foi criada em 1999. Por outro lado, a especificação ‘RoCE’ foi lançada por volta de 2010. É um transporte leve de RDMA sobre Ethernet. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 34 64 DB2 pureScale exige que uma rede de comunicação de alta velocidade que use uma rede InfiniBand ou uma rede 10GE (Gigabit Ethernet). A mistura destas duas redes no cluster pureScale não é suportada. DB2 pureScale suporta apenas sistemas operacionais AIX e Linux no System X. pureScale suporta redes Infiniband e RoCE. O suporte a ‘RoCE’ para pureScale no AIX foi adicionado no DB2 10.1. Funcionalidades do Cache de cluster Conhecido como cluster cache facility (CF) é um software especializado que oferece gestão global de bloqueio, serviço de buffer pool em grupo, e alguns outros serviços. Quando um membro requer um bloqueio de linha ou tabela para processar uma transação, a gestão de bloqueio local do membro comunica ao gerenciador de bloqueio global da CF usando RDMA. Processos dedicados no servidor de CF executam imediatamente o pedido. Da mesma forma, quando um membro tenta acessar uma página de dados, a sua buffer pool local solicita a cópia mais recente da página a CF usando RDMA. O serviço de pool de buffer de grupo do CF gerencia um cache global para as páginas acessadas com maior frequência (também conhecido como páginas quentes) no cluster. Se a página solicitada está na área de buffer de grupo, a página é transferida para o buffer pool local do membro. O pool de buffer de grupo também mantém um registro da página, que registra as páginas que são alocadas para cada membro. Se uma página é atualizada, o pool de buffer de grupo informa a todos os membros que a página já não é mais válida com base no registo página. Recomenda-se a utilização de dois CFs para fornecer redundância e para eliminar um único ponto de falha no cluster. Serviços de cluster DB2 DB2 pureScale vem com um componente integrado chamado Cluster Services (CS). O CS é executado em todos os membros e nos CFs do cluster pureScale. Ele é usado para detectar falhas em algum membro, impulsionar a recuperação automatizada do membro, e gerenciar o acesso aos dados compartilhados. Esses serviços são fornecidos por três produtos de software diferentes da IBM que são totalmente integrados dentro da estrutura do DB2: • IBM Reliable Services Clustering Technology (RSCT): Permite a detectar a falha membro. • Tivoli Systems Automation for Multi Platforms (TSAMP): Permite a recuperação automática. • IBM General Parallel File System (GPFS): Fornece o sistema de arquivos compartilhados em cluster. Embora estes três produtos IBM sejam separados, eles são perfeitamente integrados no DB2 pureScale. Por exemplo, o CS interage com o RSCT e o GPFS quando acontece uma falha de membro. Antes do membro ser recuperado e ter novamente acesso ao sistema de arquivos GPFS, o RSCT deve primeiramente reconhecer e permitir que o membro volte a fazer parte do cluster. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 35 64 Sistema de arquivos do cluster GPFS é o sistema de arquivos de cluster utilizado com DB2 pureScale. Ele fornece acesso simultâneo a todos os membros da arquitetura pureScale para os arquivos de instância e os arquivos de banco de dados, tais como contêineres de espaço de tabela e logs. GPFS tem sua própria ferramenta de gestão. No entanto, para fornecer uma experiência integrada para administradores de banco de dados DB2, eles podem usar o comando db2cluster -cfs para criar, montar e configurar os sistemas de arquivos. Há uma lista de opções disponíveis para o comando db2cluster. Diferentes opções requerem diferentes níveis de autorização do DB2, como SYSADM, SYSCTL ou SYSMAINT. Uma instância de DB2 pureScale Em um cluster pureScale, você pode definir uma instância pureScale. Em uma instância, vários bancos de dados ativos são suportados. Como no ambiente de banco de dados particionado, o DB2 pureScale também usa o arquivo de configuração do nó (db2nodes.cfg) para manter informações sobre os hosts do cluster. Especificamente, ele armazena informações sobre cada membro do pureScale e cada CF, o nome do host, e o nome de interface de rede. Abaixo temos um arquivo db2nodes.cfg com quatro hosts membros e dois CFs. Durante a instalação e configuração do DB2 pureScale, o Assistente de Configuração do DB2 atualiza o arquivo de configuração do nó com base nos nomes de rede de interconexão de cluster que você especificar. Para obter uma visão geral da saúde do cluster pureScale, você pode usar o comando db2instance - list. Por exemplo, você receberia uma lista semelhante à seguinte: Uma visão administrativa DB2, DB2_GET_CLUSTER_HOST_STATE, fornece informações semelhantes. Por exemplo, você pode usar a seguinte instrução SQL para consultar o status cluster. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 36 64 Em um ambiente em cluster como pureScale, você pode se perguntar onde os arquivos relacionados ao pureScale são armazenados. Lembre-se que o DB2 está instalado em cada membro como mostrado na figura que apresenta a arquitetura. Por isso, cada host tem um diretório sqllib local, assim como no ambiente sem o pureScale. No diretório sqllib, há uma combinação de diretórios e arquivos locais para o membro, bem como arquivos que apontam para o diretório de instalação. O arquivo de configuração do nó DB2, db2nodes.cfg, arquivo de configuração do gerenciador de banco de dados, db2systm, arquivos de log, esses arquivos são comuns a membros pertencentes à instância pureScale. Eles estão localizados no diretório sqllib_sharedno sistema de arquivos compartilhado em cluster. Observem a figura a seguir para ter uma ideia de como os arquivos são mapeados para o diretório sqllib_shared. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 37 64 Membros de um cluster DB2 pureScale também podem ser configurados para estarem em locais diferentes, o que minimiza o risco de interrupção total caso todo o data center seja desativado devido a um incêndio ou falha de energia. Esta configuração é conhecida como o geographically dispersed DB2 pureScale cluster (GDPC). Depois de apresentarmos as diversas partes da estrutura da arquitetura DB2 pureScale, vamos agora comentar um pouco sobre três características que fazem parte do serviço entregue: Transparência da aplicação, Disponibilidade contínua e Escalabilidade e capacidade extrema. Transparência da aplicação A palavra transparência como um recurso do DB2 pureScale é fundamental. Idealmente, você espera que qualquer aumento na carga de trabalho ou falhas em um cluster de banco de dados não afete o funcionamento de uma aplicação. Assim, do ponto de vista de aplicação, a sua única preocupação é recuperar as solicitações dos usuários e responder de volta com informações adequadas. O recurso DB2 pureScale oferece as seguintes vantagens sem alterar uma aplicação: ⦿ Escalabilidade para você crescer: Capacidade para comprar apenas o suficiente para satisfazer as necessidades de capacidade atuais e adicionar membros DB2 para escalar conforme sua carga de trabalho cresce. ⦿ Manutenção da disponibilidade: Maximizar as taxas de utilização de hardware e manter os tempos de resposta consistente porque as solicitações de entrada são automaticamente balanceadas, ou seja, espalha-se a carga de trabalho entre os vários servidores de processamento. ⦿ Adicionar ou remover recursos facilmente: Adicionar recursos durante a hora de pico ou eventos sazonais para evitar tempos de resposta lentos, ou o quando um tempo de inatividade de um servidor é necessário. 1. BANCA: TRC CONCURSO ANO: 2019 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Com relação ao DB2 pureScale julgue o item abaixo: Você pode usar o recurso DB2 pureScale IBM para escalar um banco de dados (DB) para um conjunto de servidores em uma abordagem ativo-ativo. O tráfego destinado a um nó com falha ou é repassado para outro nó existente ou carregar equilibrada para os nós restantes. Esta tecnologia é similar à arquitetura de compartilhamento de dados encontrada no DB2 para IBM z/OS®. Este recurso fornece os benefícios da transparência, disponibilidade e escalabilidade a um custo operacional menor que o anterior. Comentário. A questão encontra-se correta e adiciona a informação que não tínhamos visto até agora que é a redução de custos por meio do uso desta arquitetura em relação outras opções oferecidas pela IBM. Gabarito: C Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 38 64 Disponibilidade contínua Disponibilidade garante que o cluster permanece operacional durante interrupções, planejadas ou não. Durante as operações de manutenção, falhas de hardware ou falhas de rede, a instância do DB2 pureScale ainda deve ser capaz de processar solicitações de banco de dados sem interrupções. Além disso, a disponibilidade também garante que você receba a resposta esperada às solicitações de serviço em tempo hábil, não importa as circunstâncias. Disponibilidade contínua é dependente de eventos não planejados ou planejados, conforme descrito abaixo. Eventos não planejados As falhas de hardware podem ser altamente perturbadoras, mesmo em sistemas com componentes redundantes. Por projeto, o recurso do DB2 pureScale contém funções, tais como heartbeats, mecanismos de barreia, reinícios automáticos e mudanças de papeis, para manter uma instância em execução e minimizar os efeitos das falhas no restante do sistema de banco de dados Veja a figura seguir um cenário de falha no CF. Os seguintes recursos do DB2 pureScale fornecem disponibilidade contínua: ⦿ Heartbeats: Uma “pulsação” enviada entre hosts garante que uma falha de host é imediatamente detectada e isolada. Esse conceito também aparece na solução de HADR estudada anteriormente, lembram? ⦿ Mecanismos de barreira: Quando um membro falha durante o processamento de uma solicitação de banco de dados, a sua falha necessita ser imediatamente detectada e qualquer comunicação com este membro deve ser terminada assim que possível. Esse recurso permite a comunicação com o membro a seja barrada além do seu acesso ao disco. Enquanto isso, os dados ainda estão acessíveis ao restante dos membros ativos para processar a solicitação de banco de dados. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 39 64 ⦿ Reinício automático do membro: Durante uma falha de software em um membro, ele tenta recuperar automaticamente no mesmo dispositivo para retomar as transações. Se o membro não pode reiniciar em seu host, ocorre uma reinicialização em outro host de modo que quaisquer bloqueios mantidos pelo membro afetado são liberados imediatamente. Quaisquer transações que não foram concluídas no momento da falha também serão revertidas (rollback), e a aplicação é notificada. ⦿ Reinício automático do conjunto CF: Em uma falha de software ou hardware no cluster primário de CF, um segundo clusters que contém as informações replicadas assume o papel do principal. A ação de assumir a posição do CF primário é transparente para as aplicações e a instância continua disponível. Com o recurso DB2 pureScale, características de disponibilidade são integradas diretamente na arquitetura. Todos os recursos necessários são monitorados automaticamente por serviços de cluster do pureScale DB2. Esses recursos são reiniciados e recuperados quando necessário. Falhas nos membros não são detectadas pelos aplicativos clientes porque as requisições do cliente são reencaminhadas automaticamente para os membros ativos restantes. Contudo, um dos fatores que faz com que o recurso DB2 pureScale seja competitivo é que não há um congelamento de todo o cluster quando ocorre uma falha em um dos membros. Na verdade, os dados continuam sendo processados, e todos os membros são atualizados para informar outros membros que este membro não está mais disponível até que a recuperação esteja completa. Aplicativos em usuários ativos que estão tentando acessar dados bloqueados pelo membro que falho são colocados no estado de espera rapidamente, mas não recebem os erros automaticamente. Em todos os casos de falha, após o host está disponível na rede, o recurso de DB2 pureScale automatiza a recuperação e tenta trazer o host de volta para o conjunto sem intervenção. O recurso DB2 pureScale reinicia o membro DB2 que deveria estar rodando no host. Eventos planejados Há várias circunstâncias em que você pode querer retirar do ar um sistema temporariamente, tal como com a manutenção do sistema ou atualizações de hardware. O recurso DB2 pureScale é projetado para executar estes tipos de tarefas de manutenção com o mínimo de impacto possível para todo o cluster DB2 pureScale. Você pode usar o DB2 para colocar um membro em estado off-line. Quando estiver neste estado, transações e conexões subsequentes são redirecionadas para outros membros disponíveis, e membro atual, eventualmente, para o processamento de transações. Os aplicativos clientes nem percebe que um membro foi colocadooff-line (também conhecido como manutenção discreta (stealth)). Como os aplicativos de cliente são agora conectados a outros membros, você pode tonar o membro off-line e realizar a manutenção, causando o mínimo de transtorno possível para os aplicativos clientes. Você pode usar esse método para a implantação de atualizações de sistema sem parar a instância do DB2 pureScale ou afetar a disponibilidade do banco de dados. Após a manutenção estar concluída, você pode reintegrar o membro à instância do DB2 pureScale. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 40 64 Escalabilidade e capacidade extrema Você pode usar o recurso DB2 pureScale para aumentar o número de nós até 128 e ainda oferecer escalabilidade quase linear e taxa de transferência máxima. Você pode usar essa abordagem transparente para escalabilidade ao adicionar recursos à medida que são necessários durante os horários de pico. Você também pode ajustar às variações sazonais ou para atender às necessidades da aplicação. A figura abaixo ilustra o comportamento desta escalabilidade quando você adiciona membros ao cluster. O cluster pode processar mais carga de trabalho assim que os novos membros se juntarem às operações de cluster. O throughput total é quase dobra quando o número de membros dobra. Finalizamos aqui nosso conteúdo teórico de DB2 pureScale. Decidimos por não alongar mais sobre esse assinto, pois seria um detalhamento inócuo quando o propósito é provas de concurso. Passaremos para os próximos pontos dentro da ementa e em seguida teremos um bloco de questões, nele faremos uma revisão e servirá para fixação do conteúdo. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 41 64 RECUPERAÇÃO DE DADOS Backup e recuperação são tecnologias fundamentais para uma solução de recuperação de desastres. O DB2 fornece métodos de backup flexíveis para atender a vários requisitos de negócios. Você pode fazer backup de um banco de dados inteiro ou de espaços de tabelas selecionados, seja off-line ou on-line. Além disso, você pode fazer backup de um banco de dados de forma incremental, o que significa que você tem que fazer o backup apenas dos dados mudaram desde o último backup. Ele é mais rápido do que um backup completo. O DB2 também fornece a funcionalidade de backup automático. Nele você define a sua política de backup e o DB2 faz cópias de segurança do seu banco de dados automaticamente. Em um ambiente de banco de dados particionado, o DB2 suporta backups Single System View (SSV), que você pode usar para fazer backup de um banco de dados em todas as partições de banco de dados ou de um subconjunto de partições de banco de dados com um comando backup. Todas as imagens de backup têm o mesmo timestamp e incluem os registos necessários para retomarmos o banco a um ponto consistente. O DB2 Advanced Copy Service (ACS) suporta a funcionalidade de snapshot, que é baseado na tecnologia IBM FlashCopy® da solução IBM Tivoli Storage Manager. Quando você usa essa funcionalidade, você pode fazer cópias de todo o volume lógico ou de conjuntos de dados com o mínimo impacto no seu sistema de produção. O DB2 ACS é empacotado com o DB2 a partir da Versão 10.1. OBS: FlashCopy® permite que você faça cópias de um conjunto de faixas, com as cópias imediatamente disponíveis para acesso de leitura ou gravação. Este conjunto de faixas pode consistir em um volume inteiro, um data set, ou apenas um conjunto selecionado de faixas. A recriação do banco de dados é chamada de recuperação. A recuperação de versão é a restauração de uma versão anterior consistente do banco de dados, usando uma imagem que foi criado durante uma operação de backup. A recuperação de avanço (rollfoward) é a reaplicação de transações que são utilizados os valores registrados nos arquivos de log do banco de dados depois de um banco de dados ou um espaço de tabela de backup ser restaurado. Ambos os tipos de recuperação são fundamentais para uma solução de recuperação de desastres. Veja abaixo um exemplo da sintaxe dos dois comandos: Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 42 64 Se o seu plano de recuperação de desastres passa por restaurar todo o banco de dados em outra máquina, você deve ter pelo menos um backup completo e todos os logs arquivados para o banco de dados em questão. Embora seja possível reconstruir um banco de dados se você tiver um backup do espaço de tabela completo de cada tablespace do banco de dados, este método pode envolver várias imagens de backup e ser mais demorado do que a recuperação usando um backup completo. Desenvolvendo uma estratégia de recuperação Um banco de dados pode se tornar inutilizável por causa de uma falha de hardware ou software, ou ambos. Você pode, em um determinado momento, encontrar problemas de armazenamento, interrupções de energia ou falhas de aplicação, e cada cenário de falha requer uma ação de recuperação diferente. Proteger seus dados contra a possibilidade de perda traz a necessidade de uma estratégia de recuperação bem estruturada. Você precisa levar em consideração questão sobre o tempo gasto para recuperação, bem como o tempo necessário para a execução da tarefa de backup. O espaço disponível para armazenar as cópias de backup e os arquivos de log também aparecem como entrada numa análise. Por fim, precisamos pensar quais os dados devem fazer parte do backup, neste contexto, analisamos se uma cópia completa da base é de fato um requisito da nossa estratégia. A estratégia de recuperação de banco de dados deve garantir que toda a informação necessária para a recuperação do banco de dados esteja disponível quando for preciso. Ela deve incluir um agendamento regular para a execução de backups de banco de dados e, no caso de ambientes de banco de dados particionados, incluir backups quando o sistema for redimensionado (quando são adicionados ou removidos servidores ou nós de partição de banco de dados). Sua estratégia global também deve incluir procedimentos para a recuperação de scripts de comando, aplicações, funções Sintaxe para restauração de um banco: db2 restore database <nome_do_banco> from <localização> taken at <timestamp> Exemplo: db2 restore database concursos from /home/db2inst1/ taken at 20160822112743 Sintaxe para aplicação dos logs: db2 rollforward db <nome_do_banco> to end of logs and stop Exemplo: db2 rollforward db concursos to end of logs and stop Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 43 64 definidas pelo usuário (UDF), código de procedimentos armazenados em bibliotecas do sistema operacional e cópias de carga. Vamos apresentar diferentes métodos de recuperação a seguir, e você vai descobrir qual método de recuperação é o mais adequado para o seu ambiente de negócios. O conceito de backup de banco de dados é o mesmo que qualquer outro backup de dados: “tirar uma cópia dos dados e, em seguida, armazená-la em um meio diferente para o caso de falha ou dano ao original”. O caso mais simples de backup envolve desligar o banco de dados, garantir que nenhuma operação nova ocorra, e em seguida, basta fazer o backup. Você pode, em seguida, recriar o banco de dados se ele for danificado ou corrompido de alguma forma.Recuperação de falhas (crash recovery) é uma recuperação automática da base de dados caso ocorra uma falha antes de todas as alterações que fazem parte de uma ou mais unidades de trabalho (transações) serem concluídas e confirmadas. Isso é feito por reverter as transações incompletas e completar as transações confirmadas que ainda estavam na memória quando o acidente ocorreu. Esse assunto é tratado do ponto de vista teórico no conteúdo da aula de recuperação e backup. Os arquivos de log de recuperação e o arquivo de histórico de recuperação são criados automaticamente quando um banco de dados é criado (veja a figura abaixo). Esses arquivos de log são importantes se você precisa recuperar os dados perdidos ou danificados. Cada banco de dados inclui logs de recuperação, que são usados para a recuperação de erros de aplicação ou de sistema. Em combinação com as cópias de segurança da base de dados, são utilizados para recuperar a consistência da base de dados até ao momento em que o erro ocorreu. O arquivo histórico de recuperação contém um resumo das informações de backup que pode ser usado para determinar as opções de recuperação, se a totalidade ou parte do banco de dados deve ser recuperado para um determinado ponto no tempo. Ele é usado para monitorar eventos relacionados com a recuperação, tais como operações de backup e restauração, entre outros. Este arquivo está localizado no diretório do banco de dados. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 44 64 O arquivo histórico de alterações de tablespace, que também está localizado no diretório do banco de dados, contém informações que podem ser usadas para determinar quais arquivos de log são necessários para a recuperação de um espaço de tabela particular. Você não pode modificar diretamente o arquivo de histórico de recuperação ou o arquivo histórico de alterações de tablespace; no entanto, você pode excluir as entradas dos arquivos usando o comando PRUNE HISTORY. Você também pode usar o parâmetro de configuração de banco de dados rec_his_retentn para especificar o número de dias que esses arquivos de histórico serão mantidos. As operações de backup de banco de dados podem ser executada off-line ou on-line (on-line significa dizer que outras aplicações podem se conectar ao banco de dados durante a operação de backup). O espaço de tabela de restauração on-line e as operações de avanço são suportados apenas se o banco de dados for recuperável. Se o banco de dados for não-recuperável, a restauração da base de dados e as operações de avanço devem ser realizadas off-line. Durante uma operação de backup on- line, a recuperação de avanço garante que todas as alterações da tabela sejam capturadas e reaplicadas se que o backup for restaurado. Se você tem um banco de dados recuperável, você pode fazer backup, restaurar e fazer avanços de espaços de tabelas individuais, em vez de todo o banco de dados. Quando você faz backup de um espaço de tabela on-line, ele ainda fica disponível para uso, e as atualizações simultâneas são registradas nos logs. Quando você executa uma restauração on-line ou uma operação de avanço em um espaço de tabela, o espaço de tabela em si não ficará disponível para uso até que a operação seja concluída, mas os usuários não são impedidos de acessar tabelas em outras tablespaces. Apresentamos os conceitos básicos relacionados a recuperação de dados no DB2, agora vamos dar continuidade à nossa aula aprendendo sobre a integração do DB2 com o Tivoli Storage Manager. O IBM Spectrum Proteger (ou Tivoli Storage Manager) é uma plataforma de proteção de dados que dá às empresas um ponto único de controle e administração de backup e recuperação. INTEGRAÇÃO COM TIVOLI STORAGE MANAGER Tivoli Storage Manager (TSM) é o principal produto da família IBM Spectrum Proteger. Ele permite, backups confiáveis de baixo custo e recuperação rápida para ambientes virtuais, físicos e nuvem de todos os tamanhos. O TSM pode ajudar a construir uma infra-estrutura de gerenciamento de armazenamento mais inteligente que pode ajudá-lo a lidar com vários desadios da administração dos dados. Ele irá ajudá- lo das seguintes maneiras: o Reduzindo o investimento e os custos operacionais, diminuindo os requisitos de armazenamento. o Melhorando a disponibilidade da aplicação e os níveis de serviço, reduzindo o tempo de inatividade. o Mitigando os riscos associados com a perda de dados em um ambiente em rápida recuperação. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 45 64 O objetivo é proteger os dados da organização de falhas. A proteção é fornecida através de uma ampla gama de sistemas operacionais e aplicativos, rodando em diferentes hardware como notebooks e mainframes. A figura abaixo mostra a família de produtos IBM que ajuda a lidar com os desafios de gerenciar de armazenamento. Muito está sendo dito sobre soluções de backup sem fita como a tendência para a proteção de dados. Esta não é uma ideia nova. Desde a sua primeira versão, o Tivoli Storage Manager usou disco como armazenamento primário para backups, juntamente com fitas. Mais frequentemente, como a tecnologia de armazenamento em disco evoluiu, outras soluções tornaram-se possíveis, e estão sendo incorporadas ao produto. Desduplicação e instantâneos (snapshots) são exemplos de recursos do Tivoli Storage Manager que tiram proveito da arquitetura do subsistema de disco. No entanto, as fitas não podem ser descartadas. A tecnologia de fita continua a evoluir, aumentando a sua velocidade e capacidade. Ela ainda é o dispositivo de armazenamento adequado para muitas aplicações e necessidades de negócio. É mais adequada para o backup de grandes arquivos sequenciais, como grandes bancos de dados e imagens digitais, e para armazenar dados que precisam ser mantidos por um longo período de tempo por requisitos regulamentares. TSM é a solução de gerenciamento de armazenamento primária para ambientes de plataforma mista. O IBM Tivoli Storage Manager ajuda as empresas a gerenciar e controlar seus dados de negócios através da apresentação de um ponto único de controle e administração de backup e recuperação de dados. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 46 64 Este produto avançado, altamente escalável ajuda a aumentar a eficiência de suas operações de TI e a reduzir os custos relacionados com a gestão de armazenamento, fornecendo uma ampla gama de proteção ao dados, gerenciamento de recuperação, movimentação, retenção, relatórios e capacidades de monitoramento usando a automação baseada em políticas. As empresas enfrentam uma onda de informações e dados que parece aumentar diariamente. A capacidade de gerir com sucesso e eficiência informações e dados tornou-se imperativo. A família de produtos IBM Tivoli Storage Manager ajuda as empresas a obter sucesso com um melhor controle e gestão eficiente da informação e ainda com melhorias significativas na proteção dos dados. O TSM possui várias ferramentas que ajudam a administração do mesmo. Você pode configurar e gerenciar o servidor IBM Tivoli Storage Manager através de interfaces web e por assistentes que ajudam a guiá-lo através das diversas tarefas de configuração e gerenciamento. Você precisa fazer login uma única vez para acessar vários servidores a partir de uma única interface TSM. Você pode facilmente monitorar a saúde de seu ambiente de armazenamento, filtrar e classificar os objetosde armazenamento, como nós clientes e volumes da biblioteca. Você pode ainda usar os assistentes para realizar mais facilmente tarefas complexas, como: o Criação de horários para executar nós cliente e operações administrativas. o Criação de um script de manutenção do servidor para executar no banco de dados e no pool de armazenamento backup, migração e recuperação o Configurar dispositivos de armazenamento. Um assistente abrangente ajuda a criar uma biblioteca, adicionar unidades, fazer check-in de volumes de mídia, e criar pools de armazenamento o Configurar o servidor no sistema UNIX local ou remoto, a partir da Versão 6.1. o Agendar uma publicação do cliente para diferentes nós em vários domínios Outra ferramenta importante é o recurso de monitoramento e relatórios IBM Tivoli Storage Manager que pode ser instalado no IBM AIX, Linux, IBM System x® e plataformas Microsoft Windows, mas pode monitorar um servidor em execução em qualquer plataforma. É possível visualizar os relatórios históricos para determinar se quaisquer problemas ou tendências necessitam de atenção, tais como crescimento descontrolado ao longo do tempo. Você também pode visualizar os espaços de trabalho que estão sendo monitorados para ver as identificações de servidor Tivoli Storage Manager, do tamanho do banco de dados, o status do agente, status do nó cliente, eventos agendados, e assim por diante. O componente de relatórios, por vezes referido como Tivoli Common Reporting, exibe dados históricos recuperados. O IBM Tivoli Monitoring funciona como um aplicativo de monitoramento que fornece espaços de trabalho para você acompanhar informações em tempo quase real. A questão de integração entre o TSM e a recuperação de desastres pode ser endereçada por meio de um painel que define uma solução de proteção de dados e deve ser cuidadosamente concebido para cumprir os objetivos de tempo de recuperação (RTO) e objetivos de ponto de recuperação (RPO). Estas são as duas peças mais importantes quando você constrói uma solução de proteção de Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 47 64 dados pelo fato de revelarem o impacto nos negócios. Veja a tabela abaixo com uma relação entre as ferramentas do TSM Toolkit e a solução de recuperação de desastres. Terminada nossa explanação teórica sobre alta disponibilidade e recuperação de dados no DB2 vamos passar nosso foco para as ferramentas de monitoramento de eventos. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 48 64 MONITORAÇÃO DE EVENTOS Um dos principais objetivos de uma organização de TI é assegurar que sua infraestrutura ofereça o desempenho necessário para garantir que os objetivos de negócios são sempre satisfeitos, em um ambiente de negócios em constante evolução e mutação. Isto exige que o profissional de TI adote uma estratégia que é tanto proativa quanto reativa às condições e eventos que tendem a afetar negativamente os sistemas de TI. O esforço proativo envolve uma série de tarefas, incluindo: • Planejamento da capacidade dos recursos de TI. • Escolha da arquitetura de TI mais eficaz para a carga de trabalho atual. • Adoção das melhores práticas de design da aplicação, desenvolvimento e implantação. • Realização de testes de regressão rigorosos antes da implantação em um ambiente de produção. • Realizar o monitoramento de rotinas de indicadores-chave de desempenho para evitar possíveis problemas de desempenho, bem como reunir informações para planejamento de capacidade. O esforço reativo envolve ter uma metodologia bem definida para identificar a causa raiz de um problema e resolver o mesmo através da aplicação de melhores práticas existentes. A seguir, nós introduzimos o conceito de gestão de desempenho, descrevemos os diferentes tipos de monitoramento disponíveis e uma metodologia comum para a determinação efetiva de problemas de desempenho nos ambientes DB2. A maioria dos ambientes modernos variam desde sistemas independentes a combinações complexas de servidores de banco de dados e clientes que executam em múltiplas plataformas. É fundamental a todos estes ambientes a obtenção de um desempenho adequado para atender aos requisitos de negócios. O desempenho é tipicamente medido em termos de tempo de resposta, taxa de transferência e disponibilidade. O desempenho de qualquer sistema depende de muitos fatores, incluindo o hardware do sistema e configuração de software, número de usuários simultâneos, e a carga de trabalho. Observação: A gestão de desempenho é uma questão complexa, e pode ser definida como a modificação do sistema e ambiente de aplicação, a fim de satisfazer aos objetivos de desempenho previamente definidos. Estes objetivos de desempenho devem ser: Realistas. Devem ser atingíveis dado o estado atual da tecnologia disponível. Por exemplo, definir os tempos de resposta em torno de milissegundos para processar milhões de linhas de dados não é possível. Razoáveis. Baseado numa tecnologia disponível, os processos de negócio não podem exigir demandas de desempenho muito rigorosas. Por exemplo, exigindo tempos de resposta de milissegundos para relatórios analíticos que precisam ser estudados e analisados em detalhe antes de tomar uma decisão de negócios poderia ser considerado não razoável. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 49 64 Quantificáveis. Os objetivos devem usar medidas quantitativas (números, proporções, percentagens) em vez de métricas qualitativas (como muito bom, média, etc.). Um exemplo de medidas quantitativas que podem ser 95 por cento de um tempo de operação específico deve ter tempo de resposta inferior a um segundo, enquanto uma métrica qualitativa pode ser que a disponibilidade do sistema deve ser muito alta. Mensuráveis. Devemos ser capazes de medir o desempenho, a fim de determinar a conformidade ou não-conformidade com os objetivos de desempenho. Unidades de medida incluem o tempo de resposta para uma determinada carga de trabalho, transações por segundo, operações I/O, o uso da CPU, ou uma combinação das opções acima. Importante: Sem objetivos de desempenho bem definidos, medir o desempenho é um exercício de hit-or-miss, sem nenhuma maneira de entregar os acordos de nível de serviço que são negociados com os usuários. Para definir o gerenciamento de performance podemos seguir o ciclo definido na figura abaixo. A gestão de desempenho é um processo iterativo que envolve o monitoramento constante para determinar se os objetivos de desempenho estão sendo cumpridos considerando as mudanças de ambientes e cargas de trabalho ao longo do tempo. Quando os objetivos de desempenho não estão sendo cumpridos, alterações necessárias devem ser feitas no hardware e/ou no ambiente de software, bem como os próprios objetivos de desempenho, a fim de garantir que eles serão readequados e cumpridos. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 50 64 De perspectiva de banco de dados, problemas de desempenho podem surgir a partir de uma combinação de problemas de aplicação e design do sistema; CPU inadequada, memória em disco, e recursos de rede; e ajuste não ideal desses recursos. Além de usar o monitoramento para determinar se os objetivos de desempenho estão sendo atendidos,o monitoramento também é usado para: • Avaliar a carga de trabalho atual de um sistema e acompanhar suas mudanças ao longo do tempo para fins de planejamento de capacidade. • Adotar uma abordagem proativa para o gerenciamento de desempenho por prevenir e resolver possíveis problemas que possam impedir a realização dos objetivos de desempenho. • Reagir a problemas inesperados, auxiliando no diagnóstico de problemas. A fim de atender os objetivos de desempenho atuais e futuros, o DBA precisa desenvolver e executar uma estratégia de acompanhamento adequada capaz de fornecer a qualidade de serviço requerido. Há tipicamente três tipos de monitoração disponíveis para um DBA: a monitorização de rotina, o monitoramento de eventos em tempo real/on-line e o monitoramento de exceção. Falaremos sobre cada um deles na próxima sessão. TIPOS DE MONITORAMENTO Falaremos agora sobre os tipos de monitoramento, começando pelo monitoramento de rotina MONITORAMENTO DE ROTINA Os objetivos deste tipo de monitoramento são: • Coletar informações sobre a carga de trabalho e estresse do sistema durante períodos normais e de pico para fins de planejamento de capacidade, bem como identificar possíveis problemas de desempenho. • Verificar a conformidade do sistema com os objetivos de desempenho, e registrar os desvios se houver. A chave para esse tipo de monitoramento é que ele envolve a análise das informações coletadas ao longo de um período e toma medidas corretivas, se necessário, para alcançar os objetivos de desempenho. Em outras palavras, pode haver um atraso significativo entre o recebimento das informações e uma resposta corretiva. Um exemplo dos resultados de tal monitorização é uma percepção de que o número de transações cresce de forma constante a uma taxa de 1 por cento a cada semana, o que irá exigir uma atualização do servidor em 12 meses, a fim de continuar a satisfazer os objetivos de tempo de resposta. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 51 64 Outra característica dessa monitoração é que a necessidade de minimizar a sobrecarga introduz uma exigência para que seja executado permanentemente ou apenas durante períodos de pico. Em algumas referências da literatura, esse tipo de monitoramento é subdividido em monitoramento contínuo (para cargas normais) e acompanhamento periódico (para cargas de pico). De uma perspectiva do DB2, o monitoramento de rotina pode ajudar a identificar as causas de potenciais problemas de desempenho, tais como: • Tamanho do buffer pool • Tamanho do cache dinâmico de SQL • Tamanho do heap • Tamanho do locklist e maxlocks • Concorrência entre aplicações e questões de isolamento • Tabelas desorganizadas • Dados estatísticos desatualizados • Comandos SQL com execuções muito demoradas MONITORAMENTO DE EVENTOS EM TEMPO REAL/ON-LINE O objetivo deste tipo de monitoramento é procurar por determinados eventos que podem identificar um problema específico, ou prever problemas num futuro próximo, a fim de tomar medidas corretivas imediatas. Futuro próximo é contabilizado em minutos ou poucas horas. A chave para esse tipo de monitoramento é que ele envolve olhar para eventos específicos em um curto intervalo de tempo que são conhecidos por prejudicar o desempenho e ter a opção de tomar medidas corretivas imediatas para corrigir o problema. Em outras palavras, provavelmente precisamos de atraso um muito pequeno entre a coleta de informações e uma resposta corretiva. Um exemplo deste tipo de evento é a ocorrência de um número excessivo de impasses ou deadlocks em um curto período de tempo, que precisam ser tratados imediatamente, para garantir que os objetivos de negócio não sejam comprometidos. Aqui, também, a necessidade de minimizar a sobrecarga causada pela monitorização é crítica, dado que a maioria dos problemas se manifestam em cargas de pico. De uma perspectiva do DB2, o monitoramento de eventos em tempo real/ online pode ajudar a identificar problemas potenciais de desempenho, tais como: • Impasses (Deadlocks) • Tempos de espera longos e tempo outs • Consultas SQL de longa duração Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 52 64 MONITORAMENTO DE EXCEÇÕES Este tipo de monitoramento é necessário quando você descobriu ou suspeita de um problema e precisa identificar a causa do problema, a fim de aplicar as medidas corretivas adequadas para corrigi-lo. Ao contrário do monitoramento de rotina e de eventos, que estão previstas ocorrências e são projetados para ter uma sobrecarga baixa sobre o sistema de gestão, o monitoramento de exceções é impulsionado por situações-problema e pode impor sobrecargas significativas no sistema gerenciado. Um exemplo de uma necessidade de monitoramento de exceção é quando o administrador recebe um número significativo de reclamações dos usuários sobre os tempos de resposta degradados, ou incapacidade de acessar um aplicativo. O administrador, então, precisa iniciar uma série de ações de monitoramento para achar indícios sobre a causa raiz do problema. Isso geralmente envolve trabalhar com um conjunto de hipóteses que poderiam explicar o comportamento percebido, e, em seguida, verificar sistematicamente um de cada vez até que o problema seja diagnosticado. Do ponto de vista do DB2, o monitoramento de exceção pode ser aplicado a qualquer um dos itens identificados através de monitoramento de eventos ou de tempo real/online. Percebam que a ideia aqui é o monitoramento de diferentes tipos de situações que podem impactar o desempenho sobre o banco de dados. A IBM oferece um conjunto de ferramentas que podem contribuis para a correta execução das tarefas de monitoramento. Passaremos na próxima sessão ao tratamento específico de uma dessas ferramentas. Espero que você esteja acompanhando o conteúdo até o momento. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 53 64 QUESTÕES COMENTADAS Apresentaremos abaixo algumas questões de concursos anteriores e outras questões de minha autoria que vão ajudar você a compreender melhor o assunto. 1. BANCA: CESPE CONCURSO: TJDFT ANO: 2015 ÓRGÃO: TJDFT PROVA: SUPORTE DE TI A respeito da configuração e da administração de sistemas gerenciadores de bancos de dados (SGBD) e de produtos a eles relacionados, julgue os itens a seguir. 84 A ocorrência de falha em uma instância do DB2 pureScale exige a interferência do administrador do banco de dados para que os recursos sejam reiniciados, devendo a forma de notificação da falha ser configurada pelo administrador. Comentário: O DB2 pureScale do DB2 é uma tecnologia que trabalha em um ambiente de cluster e usa uma arquitetura de compartilhamento de dados. Esta arquitetura é ideal para escalabilidade e principalmente apropriada para o processamento de transações. Neste ambiente, os dados que estão sendo acessado são compartilhados por todos os servidores no cluster. Se houver uma falha em um dos servidores (instâncias), ou se ele necessita ficar off-line para fins de manutenção, o restante dos membros que continuam on- line no cluster assumem o trabalho, proporcionando assim uma alta disponibilidade transparente para os dados. Serviços de cluster do DB2 são usados para agrupar os componentes integrados em serviços de cluster que são usados para monitorar e automatizar a recuperação de falhas no sistema. Vejam que a alternativa se apresenta incorreta, pois aarquitetura, após configurada, exige o mínimo de trabalho do BDA. Vejam também que os recursos permanecem no ar, mesmo com uma falha em uma instância. Gabarito: E 2. BANCA: TRC CONCURSO: TJDFT ANO: 2015 ÓRGÃO: TJDFT PROVA: SUPORTE DE TI Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 54 64 A respeito da configuração e da administração de sistemas gerenciadores de bancos de dados (SGBD) e de produtos a eles relacionados, julgue os itens a seguir. 85 Na instalação do DB2 PureScale em Linux, se um usuário existente for selecionado como proprietário de instância do DB2, ele deverá existir com o mesmo UID em todos os hosts. Comentário: Um ambiente do DB2 pureScale requer um ID do usuário para o proprietário da instância, um ID de usuário não raiz para usar um protocolo de rede de shell seguro (SSH) entre hosts, e outro para executar funções ou procedimentos definidos pelo usuário protegido. Se você usar o assistente de Configuração do DB2 para instalar o DB2 pureScale Feature, os usuários necessários serão criados como parte da instalação. Caso contrário, você deverá criar os usuários manualmente. Estes usuários são necessários em todos os servidores que hospedam um recurso de armazenamento em cache do cluster ou membro. Cada usuário deve ser configurado para ter as mesmas configurações de usuário e senha que o mesmo usuário em todos os outros servidores. Para usar usuários existentes, ambos os usuários devem existir em todos os hosts com o mesmo ID do usuário (UID), ID do grupo ID (GID) e diretório HOME antes da instalação. Questão tirada da documentação, muito específica! Mas está correta. Gabarito: C 3. BANCA: FCC ANO 2010 ÓRGÃO: TCE-SP PROVA: AGENTE DA FISCALIZAÇÃO FINANCEIRA - PRODUÇÃO E BANCO DE DADOS Alguns SGBDs (como, por exemplo, o DB2) possuem uma opção adicional sobre as restrições de chave estrangeira, onde as linhas da tabela referenciada são excluídas (delete) ou atualizadas (update) somente se não houver valores de chaves estrangeiras correspondentes. Trata-se de (A) commited. (B) restricted. (C) revoked. (D) rollup. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 55 64 (E) rollback. Comentário: A questão aparece na aula pois no seu enunciado consta a palavra- chave DB2. Percebam, porém, que se trata de uma questão na qual é verificado seu conhecimento sobre a sintaxe de SQL. Sabemos que a integridade referencial trada do fato dos valores das chaves estrangeiras para serem válidos precisam estar presentes na tabela referenciada. O valor pode ser nulo ou um dos valores presentes na coluna referenciada. Na execução de operações de UPDATE ou DELETE que interferem nos valores da chave estrangeira na tabela pai deve-se tomar alguma ação na tabela filho para manter a integridade. Essa ação é especificada na definição da restrição de integridade. Suponha que a chave estrangeira foi definida como RESTRICT, se um comando tenta executar uma atualização no valora da chave na tabela pai, essa operação é rejeitada pelo SGBD. Outra opção seria a utilização do CASCADE, neste caso a atualização feita na tabela pai seria replicada na tabela filho. Gabarito: B 4. BANCA: FCC ANO: 2004 ÓRGÃO: TRT - 2ª REGIÃO (SP) PROVA: ANALISTA JUDICIÁRIO - TECNOLOGIA DA INFORMAÇÃO Uma tabela do banco de dados DB2 pode ser deletada com o comando (A) close tablespace. (B) clean table. (C) drop table. (D) delete table. (E) alter tablespace. Comentário: Essa questão mostra, mais uma vez, que existe uma relação direta entre o padrão SQL/ANSI e as linguagens de banco de dados comerciais. A questão pede para que você demonstre o conhecimento sobre o comando utilizado para deletar uma tabela. Vejam que se trata do comando DDL DROP. Gabarito: C Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 56 64 5. BANCA: CESPE ÓRGÃO: BACEN PROVA: ANALISTA DO BACEN - SUPORTE À INFRAESTRUTURA DE TECNOLOGIA DA INFORMAÇÃO A respeito da utilização da interface de conexão, distribuição de dados e replicação, julgue os itens seguintes. [1] Um sistema federado do DB2 é um tipo especial de sistema de gerenciamento de banco de dados distribuído. Com um sistema federado, é possível distribuir pedidos para várias fontes de dados em uma única instrução SQL. Comentário: Quando pensamos em consultas SQL em um sistema federado, podemos pensar em tabelas que estão em bancos de dados distintos, mas que fazem parte do mesmo modelo. Imaginem que a tabela FUNCIONÁRIO esteja em uma base de dados e remuneração em outra. Nesta situação uma consulta que faça um join entre essas tabelas pode ser executa parcialmente nos dois servidores que contêm cada um dos bancos. O DB2 permite esse tipo de federação e distribuição em seus bancos de dados. Sendo plenamente possível que uma consulta seja processada sobre diferentes fontes de dados. Gabarito: C 6. BANCA: CESPE ÓRGÃO: BACEN PROVA: ANALISTA DO BACEN - SUPORTE À INFRAESTRUTURA DE TECNOLOGIA DA INFORMAÇÃO A respeito da utilização da interface de conexão, distribuição de dados e replicação, julgue os itens seguintes. [1] A IBM oferece a solução de conectividade via JDBC, que concede conectividade para banco de dados mainframe e midrange a partir de plataformas Windows e plataformas baseadas em Unix para suporte a qualquer linguagem. É possível também se conectar com banco de dados não-IBM que estão de acordo com Distributed Relational Database Architecture (DRDA). Comentário: Falamos um pouco na segunda aula de DB2 sobre o DB2 Connect. O DB2 Connect concede conectividade para bancos de dados mainframe e midrange a partir de plataformas Windows e baseadas em UNIX. Você pode se conectar ao banco de dados DB2 no OS/390 e z/OS, iSeries, VSE e VM. É possível Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 57 64 também se conectar com bancos de dados não-IBM que estão de acordo com Distributed Relational Database Architecture (DRDA). O texto acima é o primeiro parágrafo do documento da IBM sobre o DB2 Connect. Observem que o examinador trocou a palavra DB2 Connect por JDBC, que é um conjunto de classes e interfaces (API) escritas em Java que fazem o envio de instruções SQL para qualquer banco de dados relacional. Desta forma, a alternativa está errada. Gabarito: E 7. BANCA: CESPE ÓRGÃO: BACEN PROVA: ANALISTA DO BACEN - SUPORTE À INFRAESTRUTURA DE TECNOLOGIA DA INFORMAÇÃO Julgue o item subsequente acerca do IBM DB2 v10. [1] Para instalar servidores de banco de dados DB2, é necessário reservar um espaço de paginação dependente do sistema operacional onde ocorrerá a instalação. Nos sistemas operacionais Solaris e AIX, entretanto, não é necessário reservar esse espaço, pois eles estão preparados para criá-los automaticamente. Comentário: Essa questão trata de detalhes da instalação do DB2. O DB2 requer que a paginação, também chamada de troca, seja ativada. Essa configuração é necessária para suportar várias funções no DB2 que monitoram ou dependem do conhecimento da utilização de espaço de troca/paginação. A quantidade real de espaço de troca/paginação necessária varia nos sistemas e é baseada exclusivamente na utilização de memória por partedo software de aplicativo. Ela só é estritamente necessária para o DB2 em plataformas Solaris e HP devido ao seu uso de alocação de espaço de paginação antecipado. Desta forma, observamos que a alternativa está incorreta. Para saber um pouco mais sobre pré-requisitos de memória e disco do BD2 10.5, veja aqui. Gabarito: E 8. Banca: FGV Ano: 2010 Órgão: BADESC Prova: Analista de Sistemas Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 58 64 No SGBD DB2, com relação ao armazenamento de informações do tipo textos grandes, textos binários grandes ou arquivos, etc., analise as afirmativas a seguir. I. Tem o tipo de dado denominado de Large Object. II. Estes tipos de dados podem ser BLOB, CLOB e DBCLOB. III. O SGBD DB2 não permite o armazenamento de tipos de dados para estas informações. Assinale: (a) se somente a afirmativa I estiver correta. (b) se somente a afirmativa II estiver correta. (c) se somente a afirmativa III estiver correta. (d) se somente as afirmativas I e II estiverem corretas. (e) se todas as afirmativas estiverem corretas. Comentário. No DB2, você pode usar tipos de dados de objeto grandes para armazenar áudio, vídeo, imagens e outros arquivos que são maiores do que 32KB. O BD2 prover três tipos de dados para armazenar esses tipos de objetos: Character large objects (CLOBs), Double-byte character large objects (DBCLOBs) e Binary large objects (BLOBs). Desta forma podemos marcar a alternativa D como nossa resposta. Para mais informações sobre os tipos de dados para grandes objetos clique aqui. Gabarito: D 9. BANCA: TRC CONCURSO ANO: 2016 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Com relação ao DB2 pureScale julgue o item abaixo: O sistema pureScale DB2 é executado em até 128 múltiplos hosts que acessam dados compartilhados simultaneamente, sem a necessidade de modificar explicitamente a aplicação. Você pode usar essa transparência para realizar operações de manutenção em hosts, adicionar hosts, ou remover servidores desnecessários sem afetar o funcionamento da aplicação. Com este método, você pode controlar o número de hosts ativos para lidar com a carga de trabalho e para garantir que você permanecer na taxa de transação desejada. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 59 64 Comentário. Falamos da característica de transparência e da quantidade máxima de membros que podem ser levantados em paralelo pelo recurso do DB2 pureScale. Veja, portanto, que a alternativa está correta. Gabarito C 10. BANCA: TRC CONCURSO ANO: 2016 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Com relação ao DB2 pureScale julgue o item abaixo: O armazenamento compartilhado (shared storage) é uma unidade de armazenamento que está conectada a todos os membros, mas não aos CFs (cluster caching facility) do cluster DB2, para permitir a todos os dados sejam compartilhados e utilizados simultaneamente. Comentário. Vimos que tanto os membros quanto os CFs estão conectados ao armazenamento compartilhado. Sendo assim, alternativa encontra-se incorreta. Gabarito E 11. BANCA: TRC CONCURSO ANO: 2017 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Serviços de cluster do DB2 são usados para agrupar os componentes integrados em serviços de cluster que são usados para monitorar e automatizar a recuperação de falhas no sistema. Estes serviços têm daemons que são executados em cada um dos hosts, no entanto, as decisões são tomadas em grupo. Você deve ter hosts suficientes se comunicando nestes grupos para decidir quais ações devem ser tomadas. Qual dos componentes abaixo não compõem os serviços de cluster do DB2: (A) IBM Reliable Scalable Cluster Technology (RSCT) (B) IBM Tivoli® System Automation for Multi-platforms (C) IBM General Parallel File System (GPFS™) (D) Remote Direct Memory Access (RDMA) (E) IBM DB2 High Availability Disaster Recovery (HADR) Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 60 64 Comentário. O recurso de HADR fornece uma solução de alta disponibilidade para falhas parciais e completas. O HADR protege contra a perda de dados, replicando alterações de dados de uma fonte ou o servidor primário, em um ou mais servidores de espera. O DB2 HADR suporta até três servidores remotos de espera e está disponível em todas as edições do DB2 excluindo DB2 Express-C. As demais alternativas foram vistas e explicadas durante a aula, apenas reforçando e tentando inserir mais algum detalhe, vamos explicar novamente abaixo: (A) IBM Reliable Scalable Cluster Technology (RSCT) é um conjunto de componentes de software que ajudam a fornecer monitoramento de cluster do ambiente. Estes processos são responsáveis por monitorar o “batimento cardíaco” em cada um dos hosts e proporcionar uma camada que é utilizada para a comunicação segura entre eles. Além disso, fornece os mecanismos de barrira que são chamados pelo DB2 quando um host falha, e são usados para notificar os processos do DB2 quando condições específicas ocorrem. (B) IBM Tivoli® System Automation para Multi-platforms oferece detecção rápida de paralisações e monitores de disponibilidade dentro do cluster DB2. É a camada utilizada pelo DB2 para definir quais ações devem ser tomadas após falhas específicas. Ao integrar um sistema de detecção e recuperação automatizado, o componente reduz o monitoramento manual do cluster DB2 pureScale para garantir que tudo está online e continua funcionado se espera. Ao mesmo tempo, ele fornece mais tempo para você se concentrar em seu negócio, em vez do próprio banco de dados. (C) IBM General Parallel File System (GPFS™) fornece um coerente sistema de arquivos compartilhado com cache. Em suma, ele fornece a gestão dos sistemas de arquivos que o DB2 usa para armazenar seus dados e logs. Com o recurso DB2 pureScale, todos os dados e logs devem ser armazenados no GPFS, de modo que possam ser compartilhados entre os membros para fins de recuperação. Debaixo do GPFS estão os subsistemas de armazenamento, que podem ser tanto o armazenamento SAN-attached ou fibre attached. (D) Remote Direct Memory Access (RDMA) é a interconexão de hardware que fornece a capacidade de usar o bloqueio centralizado e os algoritmos de buffer cache usados pelo cluster CF. OK! Após essa rápida revisão vamos para a próxima questão! Gabarito E Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 61 64 12. BANCA: TRC CONCURSO ANO: 2018 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Com relação ao DB2 pureScale julgue o item abaixo: RDMA permite que cada membro do cluster acesse diretamente a memória no CF e que o CF acesse diretamente a memória de cada membro. Esta configuração permite o acesso mais rápido a verificação de bloqueios e recuperação de página de dados, aumentando o desempenho das consultas. Esta tecnologia é baseada em um dos dois tipos diferentes de interfaces de rede: InfiniBand e 10 GbE. Comentário. São exatamente essas duas interfaces de rede que podem ser utilizadas pelo RDMA. InfiniBand, que, ainda é a de menor latência de rede e mais rápida que suporta RDMA através da interface de programação de aplicativouDAPL. 10 GbE, que suporta RDMA sobre protocolos Ethernet convergentes (também conhecidos como o RoCE). Gabarito C 13. BANCA: TRC CONCURSO ANO: 2018 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Com relação ao DB2 pureScale julgue o item abaixo: O recurso DB2 pureScale foi inicialmente disponível e comercializado por conta própria, como uma versão separada chamada DB2 9.8. A partir do DB2 10.1, esta funcionalidade está incorporada no código base do DB2 e é agora uma funcionalidade incluída nos releases normais do DB2. Gabarito C. Essa é uma questão que minha intuição diz que pode cair. É decoreba básico, saber que o pureScale se transformou em uma funcionalidade do DB2 na versão 10.1. 14. BANCA: TRC CONCURSO ANO: 2018 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Com relação ao alta disponibilidade e recuperação de desastres julgue os itens abaixo: [1] A recuperação de desastres é a capacidade de um sistema continuar a trabalhar independentemente de falhas que ocorrem com o sistema, até certo ponto. Em todos os sistemas deste tipo, há um ponto no qual as falhas conseguem tornar o sistema inutilizável, e um plano de recuperação de desastres deve ser posto em prática e executar naquele momento. Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 62 64 [2] Alta disponibilidade é o plano de contingência quando o cluster primário falhar ao ponto em que ele não pode ser trazido de volta online. Este desastre pode ser tão simples como uma falha no site por causa de um incêndio edifício ou desastre natural. O plano de contingência pode ser outro banco de dados em um local diferente, quer a poucos quilómetros de distância ou muitos quilômetros de distância em outra província ou país. Comentário. Observem que os conceitos estão trocados. Basta substituir recuperação de desastres por alta disponibilidade na alternativa 1, e alta disponibilidade por recuperação de desastres na alternativa 2 que ambas ficariam corretas. Gabarito: E E. 15. BANCA: TRC CONCURSO ANO: 2018 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Com relação ao DB2 pureScale julgue o item abaixo: Para consultar o estado geral de um cluster, execute db2instance -list, que retorna uma saída semelhante à mostrada abaixo. Comentário. A saída se configura como um resultado possível ao comando em questão, portanto, alternativa correta. Gabarito C 16. BANCA: TRC CONCURSO ANO: 2018 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Com relação ao DB2 pureScale julgue o item abaixo: No núcleo do cluster do DB2 pureScale estão os seguintes componentes de hardware: Os servidores rodam o software DB2 pureScale; o subsistema de Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 63 64 armazenamento contém a base de dados e todos os seus componentes relacionados; e a rede de comunicação entre os clientes, servidores, FC e membros. Comentário. Esses são os principais componentes de hardware presentes na arquitetura. Servidores que rodam sistemas operacionais Linux são servidores os System X da IBM, enquanto os sistemas IBM AIX são todos baseados em servidores POWER. Assim, em algumas organizações, o servidor que você usa é determinado pelo seu sistema operacional (AIX ou Linux). Você deve usar a mesma plataforma para todos os servidores. Por exemplo, você não pode ter membros em System X e FCs sistema POWER. Além disso, é uma prática preferida manter os tipos de processadores entre os membros e entre os FCs. Se você usar diferentes tipos de processador, você deve levar em conta as diferenças de capacidade de processamento entre os processadores ao determinar quantos núcleos são necessários. Gabarito C 17. BANCA: TRC CONCURSO ANO: 2016 ÓRGÃO: INDEFINIDO PROVA: NÍVEL SUPERIOR - ANALISTA DE SISTEMAS Com relação ao DB2 pureScale julgue o item abaixo: Os membros DB2 são responsáveis pela manipulação das cargas de trabalho de banco de dados em geral. As facilidades de cache do cluster DB2 (CFS) são responsáveis pela gestão de bloqueio e cache global. O armazenamento compartilhado (shared storage) permite que você acesse os dados a partir de vários servidores simultaneamente. Comentário. Está questão é um resumo dos principais componentes da arquitetura do DB2 pureScale. Fixar os nomes e as responsabilidades de cada um pode ser importante, pelo menos para a sua prova! ☺ A configuração mínima recomendada em um ambiente DB2 pureScale é de dois membros DB2, dois CFs de cluster e um único subsistema de armazenamento compartilhado. Compreender a configuração básica pode ajudar a compreender as opções de configuração que estão disponíveis e as considerações de hardware para garantir uma implantação bem-sucedida de cluster que se adéque à sua carga de trabalho. Gabarito C Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br 64 64 CONSIDERAÇÕES FINAIS Chegamos, pois, ao final da nossa aula sobre alta disponibilidade e monitoração de eventos no DB2! Esperamos que você tenha conseguido fixar todo o conteúdo. Sabemos que é um assunto que foi muito pouco cobrado em provas anteriores e não temos muitas referências de questões sobre o tema. Contudo, pelo conteúdo apresentado, você está preparado para acertar a grande maioria das questões deste assunto na hora da prova! Espero que tenha gostado! Forte abraço e bons estudos, REFERÊNCIAS 1. High Availability and Disaster Recovery Options for DB2 for Linux, UNIX, and Windows - October 2012 – Bartkowski, Stanislaw, et al. - disponível em http://www.redbooks.ibm.com/redbooks/pdfs/sg247363.pdf 2. IBM Tivoli Storage Manager as a Data Protection Solution - August 2014 – Lovelace, Mary, et al – disponível em http://www.redbooks.ibm.com/redbooks/pdfs/sg248134.pdf 3. DB2 II: Performance Monitoring, Tuning and Capacity Planning Guide – Novembro 2004 – Alur, Nagraj, et al. 4. IBM Optim Performance Manager for DB2 for Linux, UNIX, and Windows – Fevereiro – 2011 – Chen, Whei-Jen, et al Thiago Rodrigues Cavalcanti, Equipe de TI do Estratégia Concursos Aula 10 69360 Banco de Dados e Colaboração Mensageira p/ BRB (Analista TI) Com Videoaulas - Pós-Edital www.estrategiaconcursos.com.br