Configuração boa / melhor para o MySQL em uma instância grande do EC2

6

Eu tenho uma grande instância do EC2 dedicada ao MySQL.

Ele estará servindo um combo Joomla / Magento, então ele tem uma mistura de tabelas InnoDB e MyISAM. Eu só trabalhei com o MyISAM no passado e, portanto, não estou familiarizado com as configurações que o InnoDB usa. As experiências até agora foram menos do que frutíferas, pois continuo causando a desativação do mecanismo InnoDB.

Minha instância está executando o Ubuntu 10.04 64 bit server edition e tem ~ 7.5G de RAM. O MySQL está atualmente usando ~ 0.6% disso, com um desempenho um pouco ruim. Eu gostaria de configurá-lo para usar o máximo de RAM do sistema como é razoável.

Testando algumas configurações Eu aprendi que os logs InnoDB não podem ser coletivamente maiores que 4G.

Alguém poderia fornecer algumas configurações básicas do InnoDB e MyISAM para começar.

Obrigado Tim

    
por Tim Reynolds 18.03.2011 / 21:29

2 respostas

7

Estou executando o mesmo tipo de servidor Mysql no EC2. Não toque em /etc/mysql/my.cnf, mas coloque os arquivos de configuração em /etc/mysql/conf.d/ Isso permitirá que você gerencie suas alterações para mecanismos específicos e forneça aos administradores depois de dicas adicionais sobre como as coisas foram configuradas . Além disso, facilita o backup de todas as alterações feitas e as acompanha.

/etc/mysql/conf.d/innodb_mysql.cnf

[mysqld]    
# innodb settings 
innodb_additional_mem_pool_size = 12M
innodb_buffer_pool_size         = 2G
innodb_file_per_table           = 1
innodb_flush_log_at_trx_commit  = 2
innodb_lock_wait_timeout        = 180
innodb_log_buffer_size          = 16M
innodb_open_files               = 512
innodb_thread_concurrency       = 0

A maioria dessas configurações é bem padrão e você deve definitivamente consultar Recomendações de Percona . Você poderia chegar a 6G no seu sistema, mas eu começaria pequeno. Também com mesas myisam eu provavelmente iria parar em 4G. Eu não tocaria nos tamanhos dos arquivos de log innodb, há muito pouco ganho a ser obtido. Aumentar o log_buffer_size e o addition_mem_pool também tem muito pouco retorno após um bump inicial.

Além disso, as configurações acima são para melhor desempenho e não para consistência de transação. Supondo que você esteja executando apenas um aplicativo da Web, o que precede é bom, mas não para um sistema bancário.

/etc/mysql/conf.d/general_mysql.cnf

[mysqld]
# general settings
key_buffer = 384M

key_buffer é o mais útil para myisam e Mysql em geral O padrão é apenas 16M, que é muito pequeno em uma máquina de 8GB. Novamente eu começaria com um bom salto e veria se você melhora. Tenha em mente que buffers myisam e buffers innodb não são compartilhados, então eles precisam ser coletivamente menores que a quantidade de RAM que você tem. Mais tarde, você pode procurar classificar e ler buffers também.

    
por 19.03.2011 / 02:04
2

Eu sinto que você precisa experimentar algumas opções diferentes (bem documentadas) e ter algumas estatísticas coletadas, assim você pode fazer comparações w / antes e depois, caso contrário você poderia Sinto que você está ajudando, mas pode doer.

  1. As estatísticas mais fáceis saem do phpmyadmin, entram no phpmyadmin e escolhem o status dos botões na parte superior do quadro direito.

  2. Outra ferramenta decente é link # (v1.2.0)

  3. por último, para ativar seu registro de consultas lentas.

Sinto que é extremamente importante obter boas métricas antes de fazer alterações. Caso contrário, você não estará certo além do assento de suas calças, que está ajudando.

Sinto que é ótimo adicionar índices a tudo o que é READ frequentemente e atualizado / inserido / adicionado raramente.

Eu faço uma tabela de otimização em todas as noites, depois dos mysqldumps noturnos.

As opções específicas do seu innodb são:

spended #  
[ 14:31. diane@ltk-prod-1 ~]% mysqladmin -u USER -pPASSWD variables | grep -i inno |sed -e 's/                                  //g'|less

Mine are:


| innodb_autoinc_lock_mode | 1::                     |
| innodb_buffer_pool_size  | 8388608::               |
| innodb_checksums         | ON::                    |
| innodb_commit_concurrency| 0::                     |
| innodb_concurrency_tickets              | 500::    |
| innodb_data_file_path    | ibdata1:10M:autoextend::|
| innodb_data_home_dir     |::                       |
| innodb_doublewrite       | ON::                    |
| innodb_fast_shutdown     | 1::                     |
| innodb_file_io_threads   | 4::                     |
| innodb_file_per_table    | ON::                    |
| innodb_flush_log_at_trx_commit          | 1::      |
| innodb_flush_method      |::                       |
| innodb_force_recovery    | 0::                     |
| innodb_lock_wait_timeout | 50::                    |
| innodb_locks_unsafe_for_binlog          | OFF::    |
| innodb_log_buffer_size   | 1048576::               |
| innodb_log_file_size     | 5242880::               |
| innodb_log_files_in_group| 2::                     |
| innodb_log_group_home_dir| ./::                    |
| innodb_max_dirty_pages_pct              | 90::     |
| innodb_max_purge_lag     | 0::                     |
| innodb_mirrored_log_groups              | 1::      |
| innodb_open_files        | 300::                   |
| innodb_rollback_on_timeout              | OFF::    |
| innodb_stats_on_metadata | ON::                    |
| innodb_support_xa        | ON::                    |
| innodb_sync_spin_loops   | 20::                    |
| innodb_table_locks       | ON::                    |
| innodb_thread_concurrency| 8::                     |
| innodb_thread_sleep_delay| 10000::                 |
| innodb_use_legacy_cardinality_algorithm | ON::     |

    enter code here

Sugiro que aumente os buffers 2x por vez e tente consultas de teste,

MAS. também, para algumas máquinas, eu fico sem / dev / shm (ramdisk) (16gb ram ajuda)

e, em seguida, apenas faça mysqldumps 3 ou 4x por dia.

mysqltuner para mim, diz que eu corro perigosamente SOBRE ram física, mas eu sempre parece ter meio show gratuito.

    
por 18.03.2011 / 22:35