AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 1974
Accepted
KM.
KM.
Asked: 2011-03-30 06:53:31 +0800 CST2011-03-30 06:53:31 +0800 CST 2011-03-30 06:53:31 +0800 CST

Alta disponibilidade, failover e replicação do MySQL com Latência

  • 772

Estamos em processo de implementação de um novo CMS (Drupal 6.x) que roda em MySQL. Temos dois datacenters -- primário e secundário -- com latência conhecida entre eles. Não temos certeza de qual versão do MySQL executaremos... Community ou Enterprise, mas isso é um TBD. Parece que estaremos executando o mecanismo InnoDB, o sistema operacional será RedHat EL 5.5. Os servidores primários estarão ativos, enquanto os secundários serão passivos ou hot stand-bys.

Gostaria de implementar replicação, alta disponibilidade e failover automatizado no MySQL nos dois datacenters.

Após um failover para os servidores secundários, quando fizermos o failback para os servidores primários, gostaríamos de ter os dados sincronizados do banco de dados secundário para o banco de dados primário de forma rápida e completa para que possamos continuar a servir o conteúdo dos servidores primários.

Estou interessado em saber quais tecnologias/ferramentas/melhores práticas podem ser usadas para resolver/resolver esses problemas. Além disso, quaisquer pegadinhas ou momentos ah-ha também seriam muito apreciados. Eu li sobre a replicação do MySQL, clustering e algumas ferramentas de terceiros, como Tungsten e Dolphinics, mas não tenho certeza de qual é o melhor curso de ação.

Obrigado pelo seu tempo!

km

mysql replication
  • 1 1 respostas
  • 11059 Views

1 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2011-03-30T12:01:02+08:002011-03-30T12:01:02+08:00

    Para simplificar, recomendo apenas a replicação circular do MySQL. Aqui está o porquê:

    Existem muitas tecnologias e topologias que são muito superiores à Replicação Circular do MySQL. Meu favorito, sem dúvida, é o DRBD (Distributed Replicated Block Device) . No entanto, o DRBD funciona muito bem quando o par de servidores está no mesmo edifício, centro de dados e rack. É ainda melhor ao usar um cabo crossover na sub-rede 192.168.xx entre o DRBD Primário e o DRBD Secundário. Infelizmente , o DRBD tem um desempenho horrível à distância entre dois locais, embora o DRBD ainda possa funcionar. Não há topologias de rede disponíveis para fornecer o desempenho DRBD satisfatório necessário entre dois datacenters.

    Depois de configurar a replicação circular do MySQL entre os dois servidores de banco de dados em dois datacenters diferentes, o único ajuste necessário é para a rede. Em essência, o desempenho da replicação é uma função das configurações de rede (velocidade/latência da transmissão do log binário no MySQL Replication Setup) e E/S do disco (DRBD).

    Uma alternativa que você pode querer para melhor redundância é a seguinte, a título de exemplo:

    Configure um Par DRBD em ambos os locais
    Par DRBD no Site #1 com VIP 111.111.111.111
    Par DRBD no Site #2 com VIP 222.222.222.222

    Configure a replicação circular do MySQL entre os servidores primários do DRBD sob estas condições:
    Para o site nº 1, use 222.222.222.222 como Master_Host no MySQL
    Para o site nº 2, use 111.111.111.111 como o Master_Host no MySQL

    Apesar de apresentar um nível de complexidade, agora você tem dois níveis de redundância: DRBD dentro de cada site e MySQL Circular Replication entre sites. Você tem os benefícios adicionais de executar backups via mysqldump no DRBD Primário do servidor hot standby.

    Quanto ao failover, o DRBD fornece failover automático em qualquer site.

    Somente no caso de um datacenter estar totalmente indisponível, você usaria o DB VIP no site de espera ativa.

    ATUALIZAR

    Acabei de olhar duas vezes e notei que você está usando o Drupal6. Fico feliz que você esteja convertendo todas as tabelas do Drupal em InnoDB. Isso removerá qualquer chance de atualizações de tabela MyISAM causando bloqueios de tabela para congelar conexões de banco de dados que estão simplesmente lendo tabelas MyISAM. Qualquer atualização DML (INSERTs, UPDATEs, DELETEs) em uma tabela MyISAM SEMPRE FAZER UM FULL TABLE LOCK !!! O uso do InnoDB introduzirá o bloqueio no nível da linha, o que elimina os bloqueios completos da tabela.

    Além disso, o DRBD se torna seu amigo quando tudo é InnoDB porque a recuperação de falhas será consistente entre o par DRBD. Por outro lado, DRBD com MyISAM não compra nada porque uma tabela MyISAM com falha no DRBD Primário é simplesmente duplicada para o Secundário DRBD como, você adivinhou , uma tabela MyISAM com falha.

    ATUALIZAÇÃO #2

    Você deve usar dois níveis de redundância

    Nível 1: Em cada centro de banco de dados, use o DRBD.
    http://dev.mysql.com/doc/refman/5.1/en/ha-drbd.html

    Configure um par de servidores de banco de dados
    Startup DRBD
    Startup MySQL no DRBD Primary

    Isso cria dados redundantes no nível do disco.

    Nível 2: Você deve configurar a Replicação Circular do MySQL entre
    o DRBD Primário do DataCenter#1 e o DRBD Primário do DataCenter#2

    Cada DRBD Primário executará o MySQL e atuará
    como Mestre e Escravo entre si

    Tenho configuração para topologias de clientes como esta e considero bastante estável.

    • 3

relate perguntas

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve