Especificações de Hardware do MySQL

2

Atualmente, temos um banco de dados que tem 35 GB de tamanho e está sendo executado em uma máquina virtual com 2 GB de RAM. Espera-se que o banco de dados aumente a uma taxa de 3 a 4 Gb por dia continuamente.

Quais são as especificações de hardware sugeridas para esse tipo de configuração? Alocações de CPU e RAM, etc.

Eu também criei uma pergunta semelhante sobre o dimensionamento do mysql. Dimensionando o banco de dados MySQL Mas ainda não tentei as sugestões, já que estou focando na otimização do mysql.

    
por Jonar 11.03.2011 / 10:53

3 respostas

3

Eu sugiro imediatamente usando o MySQL 5.5 com o seguinte:

innodb_file_per_table < - sempre habilite este
innodb_io_capacity = 65536
innodb_read_io_threads = 64
innodb_write_io_threads-64
query_cache_size = 0 (Padrão: Disbale seu cache de consulta)

Até que o MySQL 5.5 fique maduro, não use os vários buffer pools.

Quanta memória RAM você precisa depende de duas (2) coisas

Para o MyISAM, esta consulta mostra o tamanho do buffer de chave que seu sistema deve ser configurado para
SELECIONAR CONCAT (CEILING (ndxsum / POWER (1024,2)), 'M') RecommendedKeyBufferSize FROM (SELECT SUM ( index_length) ndxsum FROM information_schema.tables WHERE engine = 'MyISAM' e table_schema NOT IN ('information_schema', 'mysql')) A;

Para o InnoDB, esta consulta mostra o tamanho do buffer pool innodb que seu sistema deve ser configurado para
SELECT CONCAT (CEILING (innodsum / POWER (1024,2)), 'M') RecommendedInnoDBBufferPoolSize FROM (SELECT SUM (data_length + index_length) innodbsum FROM information_schema.tables WHERE engine = 'InnoDB') A;

Para obter uma visão completa do que você tem até o MySQL Data, execute esta consulta:

SELECIONAR DBName, CONCAT (LPAD (FORMATO (SDSize / POWER (1024, pw), 3), 17, ''), '', SUBSTR ('KMGTP', pw + 1,1), ' B ') "Tamanho dos Dados", CONCAT (LPAD (FORMATO) (SXSize / POWER (1024, pw), 3), 17,' '),' ', SUBSTR (' KMGTP ', pw + 1,1),' B ') "Tamanho do índice", CONCAT (LPAD (FORMATO (STSize / POWER (1024, pw), 3), 17,' '),' ', SUBSTR (' KMGTP ', pw + 1,1),' B ' ) "Tamanho Total" FROM (SELECT IFNULL (DB, 'Todos os Bancos de Dados') DBName, SUM (DSize) SDSize, SOM (SUMS) index_length TSize FROM information_schema.tables ONDE table_schema NOT IN ('mysql', 'information_schema', 'performance_schema')) GRUPO AAA POR BANCO COM ROLLUP) AA, (SELECIONE 3 pw) BB ORDER BY (SDSize + SXSize);

Defina (SELECIONE 0 pw) BB para bytes | Set (SELECIONAR 1 pw) BB For KiloBytes
Set (SELECIONE 2 pw) BB Para MegaBytes
Set (SELECIONE 3 pw) BB For GigaBytes
Set (SELECIONE 4 pw) BB For TeraBytes
Set (SELECIONE 5 pw) BB For PetaBytes (me mande um email se você começar a usar isso)

O key_buffer_size máximo é de 4 GB, portanto, não ultrapasse isso.

O máximo innodb_buffer_pool_size deve ser 75-80% ou RAM instalada

Sempre configure innodb_log_file_size para 25% de innodb_buffer_pool_size

O máximo innodb_log_file_size é 2047M (o InnoDB não funciona com 2G ou 2048M, você pode verificar o código fonte do MySQL)

Com isso em mente, você poderá prever as configurações necessárias em /etc/my.cnf e no seu hardware.

Experimente!

    
por 11.03.2011 / 20:46
1

Obviamente, você nos deu muito poucos detalhes para trabalhar, mas se você está olhando para comprar seu próprio hardware, então eu sugiro que um sistema dual-CPU realmente padrão, inicialmente com uma única série E56xx mid-range Xeon , 3 x 2 GB ou 3 x 4 GB de memória DDR3 1333/1066, 2 ou 4 NICs de 1 Gbps, um controlador RAID de hardware com um par espelhado de discos de inicialização SAS de 7,2 krpm SATA ou de 10 krpm pequenos (147-300 GB), em seguida, um RAID 10 matriz de 4 discos de 7,2krpm decentes de qualidade decente ou 4 discos SAS de 600 x 10 / 15krpm. Isso deve atingir a maioria, se não todos os requisitos de desempenho e resiliência, além de oferecer uma maneira muito rápida e fácil de dobrar a capacidade da CPU e também adicionar muito mais memória, conforme necessário, além de um conjunto razoável de discos.

Pessoas como HP, Dell, IBM e Supermicro vendem esse tipo de máquina, então deve haver muitos bons negócios por perto.

Volte para nós se tiver mais detalhes, ok.

    
por 11.03.2011 / 11:32
0

hmm, então dentro de alguns anos você terá um banco de dados de 1.3 Tb.

Você está certo - uma pequena VM não vai lidar com isso.

Supondo que isso seja usado para mais do que apenas um simples registro, você precisa de muito processador / memória - embora você não tenha dado nenhuma informação sobre como o sistema provavelmente será usado.

Esqueça o hardware high-end, você precisa ir direto para um sistema de cluster de commodity. Eu recomendo começar com 4 caixas para que você possa se familiarizar com sharding e replicação desde o início. Memória de 4 Gb (embora seja neste ponto que você deve ser flexível - adicionar memória é muito mais fácil que a largura de banda de CPU / NICs / discos) e núcleos físicos duplos, e o armazenamento local espelhado provavelmente seria um ponto de partida sensato. Eles devem ser isolados em seus segmentos de LAN de 1 Gb, e os jumbo-frames provavelmente são uma boa ideia.

Embora você possa considerar mudar para um banco de dados NoSQL - mas novamente com especificações de hardware semelhantes.

    
por 11.03.2011 / 11:40