às 31 Agosto 2016
Este artigo explica o MySQL Fabric é e como configurá-lo. Ele também dá um exemplo de como ele pode ser usado para introduzir High Availability (incluindo detecção automática de falha e failover transparente) e / ou scale-out (usando dados de particionamento / fragmentação).
MySQL é famoso por ser um muito fácil de usar banco de dados e com o mecanismo de armazenamento InnoDB que proporciona um excelente desempenho, funcionalidade e confiabilidade.
MySQL / InnoDB agora escala-up extremamente bem, como você adicionar mais núcleos para o servidor e este continua a melhorar a cada lançamento, mas em algum momento um limite é atingido, onde ampliação não é mais suficiente. Pode ser que você já está usando a maior máquina disponível ou é apenas mais econômico utilizar vários servidores de commodities. Dimensionando lê é uma questão simples, usando MySQL Replication - ter um mestre MySQL Server para lidar com todas as gravações e, em seguida, o equilíbrio de carga lê transversalmente como muitos escravos MySQL Servers que você precisar. O que acontece quando esse único mestre falhar embora? High Availability (HA) também vai além de lidar com falhas - com sempre conectados, aplicativos móveis e serviços globais, o conceito de uma "janela de manutenção", onde o tempo de inatividade do sistema pode ser programado é uma coisa do passado para a maioria das aplicações.
Tem sido tradicionalmente o trabalho do aplicativo ou o DBA para detectar a falha e promover um dos escravos para ser o novo mestre. Fazer todo esse sistema altamente disponível pode se tornar bastante complexo e desvia desenvolvimento e recursos operacionais longe de de maior valor, as tarefas de geração de receita.
MySQL Fabric - HA - Scaling
Enquanto MySQL Replication fornece o mecanismo para dimensionar lê, um único servidor deve lidar com todas as gravações e, como aplicativos modernos se tornam mais e mais interativa a proporção de gravações é sempre crescente. A onipresença das mídias sociais significa que a idade da publica uma vez e ler um web site bilhões de vezes é longo. Adicione a isso a promessa oferecida por plataformas de nuvem - maciço, dimensionamento elástico fora da infra-estrutura subjacente - e você terá uma enorme demanda por escalar para dezenas, centenas ou mesmo milhares de servidores.
A maneira mais comum de escalar é por sharding dos dados entre vários servidores MySQL; isso pode ser feito verticalmente (cada servidor que contém um subconjunto discreto de mesas - dizem aqueles para um conjunto específico de características) ou horizontalmente onde cada servidor mantém um subconjunto das linhas para uma determinada tabela. Apesar de eficaz, sharding exigiu desenvolvedores e DBAs a investir um grande esforço na construção e manutenção lógica complexa para as camadas de aplicação e de gestão - uma vez mais, prejudicando as atividades de maior valor.
A introdução do MySQL Fabric faz tudo isso muito mais simples. MySQL Fabric é projetado para gerenciar pools de servidores MySQL - se apenas um par de alta disponibilidade ou muitos milhares de lidar com dimensionamento enorme de aplicações web.
Para alta disponibilidade, MySQL Fabric gere as relações de replicação, detecta a falha do mestre e promove automaticamente um dos escravos para ser o novo mestre. Isso tudo é completamente transparente para a aplicação.
Para dimensionar, MySQL Fabric automatiza sharding com os conectores pedidos de roteamento para o servidor (ou servidores se também usando MySQL Fabric para alta disponibilidade), com base em uma chave sharding fornecida pelo aplicativo. Se um fragmento fica muito grande, então o MySQL Fabric pode dividir o fragmento assegurando ao mesmo tempo que os pedidos continuam a ser entregue para o local correto.
MySQL Fabric oferece uma opção simples e eficaz para alta disponibilidade, bem como a opção de massa, scale-out incremental. Ele faz isso sem sacrificar a robustez do MySQL e InnoDB - com a consequente necessidade de uma reconfiguração de aplicação e precisando de suas equipes Ops Dev se mudar para tecnologias desconhecidas ou abandonar as suas ferramentas favoritas.
Este artigo vai para as capacidades do MySQL Fabric em mais profundidade e, em seguida, passa a fornecer um exemplo real de usá-lo - inicialmente para proporcionar alta disponibilidade e, em seguida, adicionando sharding.
O MySQL Fabric Fornece
MySQL A tela é construído em torno de uma estrutura extensível para o gerenciamento de fazendas de servidores MySQL. Atualmente duas características foram implementadas - alta disponibilidade e escalabilidade horizontal usando sharding de dados. Esses recursos podem ser usados isoladamente ou em combinação.
Ambos os recursos são implementados em duas camadas:
O processo mysqlfabric que processa todos os pedidos de gestão - seja recebida através do mysqlfabric comando da linha de interface (documentado no manual de referência ) ou de outro processo através da interface XML / RPC fornecido. Ao usar o recurso HA, este processo também pode ser feita responsável por monitorar o servidor principal e iniciar failover para promover um escravo para ser o novo mestre deve falhar. O estado do farm de servidores é realizada no armazenamento de estado (um banco de dados MySQL) eo processo mysqlfabric é responsável por fornecer as informações de roteamento armazenado para os conectores.
Conectores MySQL são usados pelo código do aplicativo para acessar o banco de dados (s), convertendo instruções de uma linguagem de programação específica para o protocolo fio MySQL, que é usado para se comunicar com os processos do servidor MySQL. Um conector ' Fabric -aware' armazena um cache do encaminhamento de informações que recebeu do processo mysqlfabric e então usa essa informação para enviar transações ou consultas ao servidor MySQL correta. Atualmente, os três conectores do MySQL Fabric -aware suportados são para PHP, Python e Java (e por sua vez a Doutrina e Hibernate quadros mapeamento objeto-relacional). Esta abordagem significa que o gargalo latência e potencial de enviar todos os pedidos através de um proxy pode ser evitado.
High Availability (HA) refere-se à capacidade de um sistema para fornecer serviço contínuo - um sistema está disponível, enquanto que o serviço pode ser utilizado. O nível de disponibilidade é muitas vezes expressa em termos do "número de noves" - por exemplo, um nível de HA de 99,999% significa que o serviço pode ser utilizado para 99,999% do tempo, ou seja, em média, o serviço é única indisponíveis para 5,25 minutos por ano (e que inclui todas programadas, bem como marcação down-time).