Configuração de HA para MySQL / principalmente Tabelas MyISAM

6

Atualmente, estou usando a replicação mestre-escravo, separando as leituras das gravações no nível do aplicativo. O único tipo de failover atualmente implementado é a detecção no nível do aplicativo da falha do mestre, tornando o escravo o novo mestre para que o aplicativo possa ser executado sem interrupções. Como se pode imaginar, é muito trabalhoso voltar atrás, entrar em sincronia, arrumar e assim por diante.

Eu pesquisei muito e li dezenas de artigos, mas não encontrei uma solução para HA MySQL se você tem principalmente MyISAM Tables, Mysql Cluster, Heartbeat / DRBD, Schooner, tudo isso é bom para o InnoDB-only configurações, mas não é adequado para MyISAM.

Gostaria de receber algumas sugestões ou experiências reais com as configurações de HA. Não precisa ser open-source (read free), apenas precisa funcionar.

    
por Niko S P 30.01.2012 / 23:13

1 resposta

3

Usamos MMM combinado com replicação circular.

Nós temos dois servidores MySQL (foo-db1, foo-db2) e cada um é escravo para o outro, então uma atualização em qualquer um será enviada para o outro:

link

Agora que cada instância tem os dados, descobrimos que é melhor que as gravações sejam apenas para um. Para conseguir isso, criamos um IP virtual (vIP) sob um nome de host de serviço diferente (foo-db) para o qual os clientes enviam INSERTs e UPDATEs. Sob o Debian você instalaria o pacote "mysql-mmm-agent" e geralmente seguiria este guia:

link

Usamos essa configuração na maioria dos nossos sites: dois servidores da Web front-end conversando com dois servidores de banco de dados de back-end. O monitor MMM é executado em um dos servidores da Web (que é determinado pelo Heartbeat):

www.howtoforge.com/high-availability-load-balancer-haproxy-heartbeat-debian-etch

Então, em resumo: use a replicação circular para garantir que dois (ou mais?) servidores MySQL estejam em sincronia; use MMM para controlar onde o serviço de banco de dados vIP mora; use o Heartbeat para garantir que o agente MMM seja executado somente em uma máquina por vez.

    
por 02.02.2012 / 15:04