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 / 204556
Accepted
Mohd Abdul Mujib
Mohd Abdul Mujib
Asked: 2018-04-21 10:36:33 +0800 CST2018-04-21 10:36:33 +0800 CST 2018-04-21 10:36:33 +0800 CST

MySQL XtraDB/Galera Cluster de Alta Disponibilidade RamDisk *SuperFast*

  • 772

Ok, então esta será uma questão especulativa, principalmente orientada para o design e bastante longa. Eu pegaria um cuppa' covfefe , se eu fosse você.

Prefácio: Então, eu tenho pesquisado bancos de dados e queria um banco de dados (motor) realmente rápido ( como realmente muito ) com os seguintes itens obrigatórios ,

  1. Conformidade com ACID
  2. In-Memory-ish para IO extremamente rápido.
  3. Persistente ( bem... duh )
  4. Escalável como em cluster/master-slave/etc
  5. Alta Disponibilidade (HA)
  6. Substituição do MySQL Drop-In
  7. Código aberto
  8. Deve ser executado no servidor commodity (IYKWIM)

Então, a julgar pela minha lista otimista de requisitos, você já pularia para ....ummm

Como acelerar o mysql, consultas lentas

Tudo bem, tudo bem, piadas à parte, eu sei que se innodb_buffer_pool_sizefor ajustado corretamente, vai ficar sem memória na maioria das vezes, mas eu digo

Não está na memória yo!

Mas você diria Ei, seu pessoal de 2k18 já deve ter criado cerca de 100% em BDs de memória, certo? Umm... na verdade eles têm, mas cada um tem suas próprias vantagens.

  1. VoltDB Community Edition Tudo parece bem até que você perceba que não é uma substituição fácil. Ele precisa de alguns procedimentos armazenados - comandos ish em java que exigem que você reescreva todo o seu aplicativo ou pelo menos o db layer/driver/etc do seu aplicativo php. Então? EMPECILHO!!!

  2. MemSQL , Bem, isso parece um forte concorrente para o nosso concurso " Best OpenSource In-Mem Scalable SQL Acid DB de todos os tempos ". Apenas para, o memSQL Boss ser como...

Requisitos do MemSQL Server

Escusado será dizer que o memSQL precisa de pelo menos 4 núcleos e 8 GB de RAM no mínimo, e o recomendado é bastante insano em 4 núcleos e 32 GB por núcleo !!!! Além disso, a versão da comunidade do memSQL ( que, aliás, não é totalmente OpenSource!, é apenas gratuita ) não suporta alta disponibilidade, pois é um recurso pago. Também é NoSQL. Então? EMPECILHO!!!

  1. Todos os outros dbs NoSQLish, como membase, Redis, Memcached, etc, são praticamente descartados.

Então agora a minha ideia genial!!!

Eu queria saber se poderíamos executar um cluster XtraDB/Galera com todas as instâncias sendo executadas em um RAMDisc com instantâneos regulares?

Ele recebe todas as caixas de seleção marcadas.

Apenas me ouça, Primeiro me dirigindo ao elefante na sala, Nós sabemos que rodar mysql Dbs completo de RAMDiscs é bem umm... ousado, colocado da maneira mais educada possível. Então, o que acontece se o servidor travar/desligar/etc, perdermos um nó. Enquanto todo o nosso DB Cluster como um todo ainda está vivo e chutando a**. Tudo o que temos que implementar é inicializar o banco de dados a partir do último instantâneo e sincronizar de volta com o cluster no qual os clusters são muito bons, inerentemente!

OK, espreitadelas, não sejam salgados comigo, se virem uma falha na minha implementação, oriente-me.

mysql percona
  • 2 2 respostas
  • 610 Views

2 respostas

  • Voted
  1. Best Answer
    Rick James
    2018-05-08T10:07:03+08:002018-05-08T10:07:03+08:00

    OK, 3 nós Galera, com:

    • Cada um com todas as coisas do disco em discos RAM.
    • RAM suficiente para tornar isso possível.
    • Os nós separados geograficamente para que um vulcão, inundação, etc., não possa eliminá-los todos de uma vez.
    • Rede de alta velocidade.

    Notas:

    • Isso permitirá a recuperação completa e automática da perda de um servidor.
    • O único atraso durante uma falha é alternar os clientes para um dos outros dois nós.
    • Mas, você pode achar que a rede é o ponto lento. (O emaranhamento ainda não foi aperfeiçoado.)
    • Não são necessários instantâneos. (Você sempre tem 2 outros nós com cópias completas dos dados.)
    • 3
  2. dbdemon
    2018-04-23T13:34:35+08:002018-04-23T13:34:35+08:00

    (Editado para abordar comentários de @RickJames, além de um pouco mais sobre NDB Cluster e melhorias gerais.)

    Existem vários problemas com o seu plano:

    1. Se você deseja persistência, obviamente não pode usar um disco RAM para os arquivos de dados.

    2. Se você planeja usar um disco de RAM para todos os arquivos de banco de dados (arquivos de dados de tabela, arquivos de log, arquivos temporários, ...), parece que você precisará de mais do que o dobro da quantidade de RAM exigida por um sistema de memória. único sistema de banco de dados, já que você está armazenando as próprias tabelas e seus arquivos de dados (que normalmente seriam persistidos no disco) na RAM.

    3. Como você vai garantir que o disco RAM seja grande o suficiente para todos os casos de uso possíveis? Por exemplo, tabelas temporárias internas em disco podem ser criadas quando uma consulta é muito grande para ser tratada na memória. Portanto, se você usar um disco RAM como armazenamento em disco, corre o risco de ficar sem "disco", o que provavelmente terá algum efeito prejudicial. (E isso me leva a pensar que existem boas razões para o MemSQL ter requisitos de RAM tão grandes ...)

      Talvez haja uma maneira de configurar seu disco de armazenamento / RAM para que parte do armazenamento fique no disco RAM (a parte que é usada primeiro / preferida) e a outra parte fique no disco real?

    Dito isso, há casos em que o InnoDB criará tabelas temporárias no disco, mesmo que a consulta possa ter sido tratada na memória. Veja 8.4.4 Uso de Tabela Temporária Interna no MySQL para detalhes. Estes são casos em que um disco RAM talvez possa ter sido útil. Aqui está uma entrada de blog (de 2012) sobre como colocar o MySQL tmpdir em RAM-disk .

    No entanto, qualquer RAM usada para o tmpdir em uma solução de disco RAM é uma RAM que poderia ter sido usada para o pool de buffers InnoDB muito importante. Portanto, certifique-se de ter um pool de buffers grande o suficiente para seu conjunto de trabalho de dados antes de considerar o uso de qualquer RAM em um disco RAM.

    Supondo que você coloque os arquivos de dados das tabelas no disco RAM e planeje fazer um instantâneo, você também precisará tomar medidas para garantir que esteja obtendo um backup consistente pontual. Esses tipos de etapas tornarão o disco RAM mais lento.

    Então, alternativamente, em vez de usar um disco RAM, você pode usar o Galera como está, mas tome todas as precauções possíveis para evitar a criação de tabelas temporárias internas no disco. Obviamente, você também deve usar SSD em vez de discos giratórios.

    Outra tecnologia a ser considerada pode ser o MySQL NDB Cluster :

    O NDB Cluster é uma tecnologia que permite o agrupamento de bancos de dados na memória em um sistema sem compartilhamento. A arquitetura nada compartilhado permite que o sistema funcione com hardware muito barato e com um mínimo de requisitos específicos de hardware ou software. [...]

    O NDB Cluster realmente é bastante rápido, com 200 milhões de QPS (NoSQL) relatados em fevereiro de 2015, consulte MySQL Cluster Benchmarks . O que me preocupa é que eles ainda estão usando esses benchmarks agora em 2018, como se nenhum progresso tivesse sido feito desde 2015. Também tenho a sensação de que, por qualquer motivo, a popularidade do NDB Cluster está diminuindo em comparação com o Galera e outras soluções . (Veja, por exemplo, as estatísticas das várias tags aqui no DBA.SE.)

    • 2

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • 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ê?

  • 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

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

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

    • 4 respostas
  • Marko Smith

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

    • 10 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
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +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

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