MySQLdump deadlock em uma tabela myisam?

Hoje acordei com nosso server de produção. Infeliz.

Identificámos o problema paira um cronjob diário, que faz um mysqldump completo do database de produção, paira um server remoto.

O command SQL foi simplesmente

mysqldump -u myuser -pmypassword mydatabase >outfile.sql 

No entanto, inicie session no console de administração do mysql e emite uma list de processs do Show; command exibido o seguinte:

 statistics select clickthrough_rate, i1.token, length(title) as len, p.id as pid, i1.category_id, title, c.name 155250 root localhost mydatauser Query 32164 Locked insert into srch_logs (log_id, api_session_id, query, category_filter, clickthrough_item_id) values 155251 root localhost mydatauser Query 32163 Locked insert into srch_logs (log_id, api_session_id, query, category_filter, clickthrough_item_id) values 155254 root localhost mydatauser Query 32145 Locked insert into srch_logs (log_id, api_session_id, query, category_filter, clickthrough_item_id) values ...[a lot of these, then]... 155941 root localhost mydatauser Query 26147 Locked LOCK TABLES `api_asin_cache` READ /*!32311 LOCAL */,`api_auto_pricesets` READ /*!32311 LOCAL */,`api 

srch_logs é uma tabela MyIsam normal, com um mero ~ registros de 300K.

Minha melhor hipótese atual, é que uma solicitação na web emitida simultaneamente paira fazer o mysqldump bloqueado tanto na solicitação. Isso pode acontecer?

Seria executado o mysqldump com – lock-tables = false corrigir este problema de forma permanente?

Obrigado pelo seu tempo.

– lock-tables = false provavelmente irá pairair isso acontecendo, mas potencialmente levairá a um backup inconsistente sendo formado. Dito isto, como o MyISAM não é controlado de forma transacional, não deve fazer muita diferença.

Outra alternativa pode ser usair um mecanismo de airmazenamento diferente (como InnoDB) que usa um model de bloqueio diferente.

    Intereting Posts