Como dimensionar configurações e variáveis my.cnf para mover de servidor de 16 GB para 128 GB

4

Esta é uma questão geral sobre a configuração ideal para um ambiente MySQL, mas nossos servidores MySQL atuais são configurados em máquinas com 16GB de RAM, nós atualizamos recentemente para servidores mais novos (mais poderosos, Dell Poweredge Servers mais novos), mas com 128 GB de RAM disponíveis.

Temos um slate limpo, por assim dizer, mas estamos nos perguntando como otimizar tudo corretamente para que ele funcione até o pico no novo hardware. Quaisquer recomendações sobre:

  • sistema de arquivos (e configuração de blocksize / fs)
  • my.cnf (tamanho da consulta, tamanho do buffer e configuração associada)

Tudo que eu tenho no momento são os arquivos my.cnf atuais que foram ajustados para os últimos servidores, mas não consigo encontrar muita orientação online para dizer que qualquer uma das configurações deve ser mais alta do que é.

    
por kwiksand 13.04.2011 / 13:48

2 respostas

1

Veja como você pode configurar o key_buffer_size e o innodb_buffer_pool_size

Configurando o tamanho do buffer de chave para o MyISAM

SELECIONE CONCAT (ROUND (KBS / POWER) (1024, IF (pw < 0,0, IF (pw > 3,0, pw))) + 0,49999), SUBSTR ('KMG', IF (pw < 0, 0, IF (pw > 3,0, pw)) + 1,1)) recomendado_key_buffer_size FROM (SELECIONAR SOMA (index_length) KBS FROM information_schema.tables WHERE engine = 'MyISAM' E table_schema NOT IN ('information_schema', 'mysql' )) A, (SELECIONAR 3 pw) B;

BTW O key_buffer_size máximo que funciona corretamente é 4G

Portanto, defina key_buffer_size como 4G ou a configuração recomendada da consulta anterior, o que for menor.

Definindo innodb_buffer_pool_size

SELECIONE CONCAT (ROUND (KBS / POWER) (1024, IF (pw < 0,0, IF (pw > 3,0, pw))) + 0,49999), SUBSTR ('KMG', IF (pw < 0, 0, IF (pw > 3,0, pw)) + 1,1)) recomendado_innodb_buffer_pool_size FROM (SELECT SUM (comprimento_de_dados + comprimento_de_índice) KBS FROM informações_schema.tables WHERE motor = 'InnoDB') A, (SELECIONAR 3 pw) B;

Você também pode querer redimensionar o ib_logfile0 e o ib_logfile1. Aqui está como:

Etapa 1) service mysql stop
Etapa 2) adicione esta linha ao /etc/my.cnf
innodb_log_file_size = 2047M (ou 25% de recommended_innodb_buffer_pool_size, o que for menor)
Passo 3) rm -f / var / log / mysql / ib_logfile [01]
Etapa 4) serviço mysql start

Para entender por que essas configurações fazem sentido, execute esta consulta

SELECIONE IFNULL (B.engine, 'Total') "Mecanismo de Armazenamento", CONCAT (LPAD (REPLACE) (FORMATO (B.Size / POWER (1024, pw), 3), ',', ''), 17 , ''), '', SUBSTR ('KMGTP', pw + 1,1), 'B') "Tamanho dos Dados", CONCAT (LPAD (REPLACE) (FORMATO (B.ISize / POWER (1024, pw), 3 ), ',', ''), 17, '', '', SUBSTR ('KMGTP', pw + 1,1), 'B') "Tamanho do índice", CONCAT (LPAD (REPLACE (FORMATO .Tamanho / POWER (1024, pw), 3), ',', ''), 17, '', '', SUBSTR ('KMGTP', pw + 1,1), 'B') "Tamanho da tabela "FROM (mecanismo SELECT, SUM (data_length) DSize, SUM (comprimento_Index) ISize, SUM (comprimento_de_dados + comprimento_de_imagem) TSize FROM information_schema.tables WHERE table_schema NOT IN ('mysql', 'information_schema', 'performance_schema') E o mecanismo NÃO É NULL GROUP BY mecanismo WITH ROLLUP) B, (SELECT 3 pw) Um ORDER BY TSize;

Se você estiver usando o InnoDB, você deve ativar innodb_file_per_table e Limpar seu armazenamento InnoDB

    
por 13.04.2011 / 16:29
3

Você pode querer executar mysqltuner.pl para obter algumas recomendações sobre como configurar seu banco de dados.

link

    
por 13.04.2011 / 17:09

Tags