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 / 20601
Accepted
Ran
Ran
Asked: 2012-07-10 12:45:58 +0800 CST2012-07-10 12:45:58 +0800 CST 2012-07-10 12:45:58 +0800 CST

Quais são os limites para a quantidade de escravos por mestre?

  • 772

Atualmente tenho um Master com 2 slaves, todos rodando MySql 5.5.

Quais são as limitações na quantidade de escravos que posso conectar a um único mestre? quais parâmetros devem ser levados em consideração?

mysql replication
  • 3 3 respostas
  • 9439 Views

3 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2012-07-10T13:21:27+08:002012-07-10T13:21:27+08:00

    Não há limites em termos de configurações, mas você precisa estar ciente de alguns aspectos.

    Você pode usar a replicação semi-síncrona, pois ela usa um bom algoritmo para enviar SQL para escravos, certificando-se de que pelo menos um servidor tenha todo o SQL mais recente nos logs de retransmissão dos escravos. (Veja minha postagem de 5 de agosto de 2011 A replicação do MySQL é afetada por uma interconexão de alta latência? )

    No entanto, a replicação semi-síncrona só é boa para um dos N escravos.

    Quer você tenha replicação semissíncrona ou não, basta dizer que quanto mais Escravos você tiver, mais processamento de CPU um Mestre terá que fazer para manter seus Escravos atualizados.

    Para um mestre com N escravos, isso é...

    • N instruções SQL para enviar ao escravo
    • N Reconhecimentos dos Escravos 1-N que o SQL foi Executado

    Com replicação semi-síncrona, não é muito melhor porque Para um Master com N Slaves, isso é...

    • N instruções SQL para enviar ao escravo
    • Agradecimentos do Escravo
      • 1 Reconhecimento de que um Slave 1 recebeu o SQL mais recente
      • N-1 Reconhecimentos dos escravos 2-N que o SQL foi executado

    Se você tem que ter muitos Slaves, pense em usar um Distribution Master em uma topologia em estrela

    • Melhor maneira de configurar a replicação mestre para vários mestres
    • É uma boa ideia dividir o banco de dados MySQL em dois servidores
    • Infraestrutura para banco de dados altamente simultâneo e de alta gravação
    • https://stackoverflow.com/a/5784578/491757

    Se você não pode configurar um mestre de distribuição em uma topologia em estrela, aqui está minha regra simples: use a replicação semissíncrona, mas use o mínimo possível de escravos.

    • 3
  2. Aaron Brown
    2012-07-10T17:47:47+08:002012-07-10T17:47:47+08:00

    Não há limite rígido para o número de escravos que você pode anexar a um mestre, mas há um limite prático e é baseado em sua carga de trabalho e hardware. Vamos supor que você tenha um "grupo" de máquinas idênticas que deseja unir em uma topologia em estrela (1 mestre, muitos escravos). Neste cluster hipotético, vamos supor que seu mestre ficou sobrecarregado porque atingiu sua capacidade máxima de 2.000 operações por segundo, onde 1.000 delas são escritas e 1.000 são lidas (para simplificar, assumiremos que 1 leitura e 1 gravação têm um equivalente "custo").

    Então, adicionamos um escravo e movemos todas as leituras para o escravo. Na prática, é impossível mover todas as leituras para um escravo, mas isso é apenas um exercício. Lembre-se, você não pode escalar gravações com replicação porque as gravações ainda precisam acontecer em cada nó.

    Master - 1000 wps/0 rps - 1000 free ops
    Slave1 - 1000 wps/1000 rps - 0 free ops
    

    Hmm...Adicionamos um escravo, mas não aumentamos nossa capacidade. O escravo já está na capacidade máxima. Então, adicionamos outro escravo e balanceamos a carga das leituras

    Master - 1000 wps/0 rps - 1000 free ops
    Slave1 - 1000 wps/500 rps - 500 free ops
    Slave2 - 1000 wps/500 rps - 500 free ops
    

    Agora estamos chegando a algum lugar e temos um pouco de espaço para crescer. Mas, uh-oh, chegamos à primeira página do slashdot, então, de repente, nosso tráfego dobrou e agora estamos fazendo 2.000 wps e 2.000 rps!

    Master - 2000 wps/0 rps - 0 free ops
    Slave1 - 2000 wps/1000 rps - 1000 ops OVER CAPACITY!
    Slave2 - 2000 wps/1000 rps - 1000 ops OVER CAPACITY!
    

    Isso está ok. Teremos algumas caixas extras por aí, então adicionaremos mais alguns escravos

    Master - 2000 wps/0 rps - 0 free ops
    Slave1 - 2000 wps/500 rps - 500 ops OVER CAPACITY!
    Slave2 - 2000 wps/500 rps - 500 ops OVER CAPACITY!
    Slave3 - 2000 wps/500 rps - 500 ops OVER CAPACITY!
    Slave4 - 2000 wps/500 rps - 500 ops OVER CAPACITY!
    

    Ei, oi. Não importa o que façamos, não podemos melhorar essa situação sem sharding para reduzir as gravações ou escalar TODOS os servidores para que tenham maior capacidade de operações por segundo.

    Outra consideração é que seu mestre está recebendo várias leituras simultaneamente, mas elas são serializadas no log binário e, em seguida, reproduzidas em um único thread no escravo. Portanto, embora você consiga acompanhar 1000 wps no mestre, o escravo pode lidar apenas com 250 wps sem ficar seriamente atrasado. Isso significa que em ambientes de alta gravação, os escravos podem realmente precisar ser mais poderosos (em termos de CPU e capacidade de E/S) do que o mestre para acompanhar.

    • 2
  3. Rick James
    2012-07-24T16:24:04+08:002012-07-24T16:24:04+08:00

    Eu lido com sistemas com mais de uma dúzia de Escravos pendurados em um Mestre. Sem problemas.

    A sobrecarga no mestre é muito baixa - coloque coisas em um soquete (por escravo).

    É possível "se espalhar", mas os "relés" se tornam "pontos únicos de falha". Ou seja, o Mestre poderia enviar para alguns Relays (tanto Escravo quanto Mestre), cada um enviando para alguns Escravos.

    Mova a maioria das leituras para os Escravos. Isso é "escala de leitura". Isso ajudará a descarregar o Master.

    Escala de gravação requer sharding. (Aaron faz alusão a isso.)

    "Dual Master" são duas máquinas que são mestre e escrava entre si. É útil para failover, mas não é útil para dimensionamento de gravação. Não grave em ambas as máquinas em uma configuração de mestre duplo; você está procurando problemas. Em vez disso, faça as leituras irem para o 'mestre de backup'.

    Comente sobre os números de Aaron -- O mestre raramente tem "0 rps". Geralmente, algumas leituras são necessárias para preparar as gravações. Estes são chamados de "leituras críticas" e não podem ser movidos para o(s) escravo(s).

    • 0

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 ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 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

    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

    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
    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
    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
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +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