Desligar o mysqld pode ser uma tarefa demorada. Uma das maiores preocupações é que todos os dados sejam corretamente liberados e todas as tabelas fechadas.
Existem duas maneiras de garantir o fechamento correto dos dados. Ela cai em duas categorias básicas:
CATEGORIA # 1: Todos os dados são MyISAM
Se absolutamente todos os dados são MyISAM, você deve se certificar de que o InnoDB está totalmente desativado com isso
[mysqld]
skip-innodb
Usando esta opção na inicialização, ignore todos os protocolos InnoDB para ciclos de recuperação de falhas que são normalmente executados na inicialização. Combine isso com o fato de que os dados do MyISAM nunca são armazenados em cache. Apenas as páginas de índice são armazenadas no MyISAM Key Cache (dimensionado por key_buffer_size). Assim, você tem uma inicialização rápida e um desligamento rápido.
CATEGORIA # 2: Todos ou a maioria dos dados é InnoDB
Se a maioria ou todos os dados forem InnoDB, você deve observar a quantidade de espaço que você configurou para innodb_buffer_pool_size. Quanto maior o innodb_buffer_pool_size, mais tempo levará para eliminar páginas sujas.
Sidenote : Realizar o mysqldumps de tabelas InnoDB irá disparar automaticamente o flush de quaisquer páginas sujas remanescentes no Buffer Pool que pertençam à tabela sendo descartada.
Se você está mysqldumping todas as tabelas InnoDB ou simplesmente está encerrando o mysql, existe apenas uma para acelerar o processo de liberação de páginas sujas.
Você deve definir os innodb_max_dirty_pages_pct . Por padrão, é 90 para o MySQL 5.0 / 5.1. Para o MySQL 5.5, o padrão é 75. Surpreendente, basta configurar innodb_max_dirty_pages_pct como 0. Isso manterá o número de páginas sujas no Buffer Pool no mínimo. Isso pode aumentar levemente a E / S do disco, mas ainda dentro de níveis toleráveis.
Você deve fazer duas coisas:
Por favor, coloque-o em /etc/my.cnf
[mysqld]
innodb_max_dirty_pages_pct=0
Em segundo lugar, você não terá que reiniciar o mysql. Basta executar isso como o usuário root:
SET GLOBAL innodb_max_dirty_pages_pct = 0;
O carregamento do servidor pode aumentar um pouco e permanecer assim até o conjunto de buffers ter menos de 1% de páginas sujas.
Experimente!
ATUALIZAÇÃO 2013-03-04 21:31 EST
Você também deve executar este comando MySQL primeiro
SET GLOBAL innodb_fast_shutdown = 0;
Isso causará um flush completo de tudo nos logs de transações do InnoDB (ib_logfile0, ib_logfile1) seguido por
service mysql stop