Ho un blocco InnoDB MySQL che impedisce l'accesso a un utente. Non mi interessa la causa di questo blocco al momento - Devo solo cancellare il blocco senza riavvio del database. Uccidere il processo di query non fa nulla. Eventuali suggerimenti? Grazie.È necessario cancellare il blocco InnoDB di MySQL senza riavviare il database
6
A
risposta
12
Ecco come Finii per risolvere il problema:
mysql> show engine innodb status\G
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
120710 18:05:37 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 37 seconds
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 208374, signal count 196902
Mutex spin waits 0, rounds 39211638, OS waits 80663
RW-shared spins 588505, OS waits 68505; RW-excl spins 3204502, OS waits 53586
------------
TRANSACTIONS
------------
Trx id counter 1 3626791829
Purge done for trx's n:o < 1 3625948819 undo n:o < 0 0
History list length 6754
LIST OF TRANSACTIONS FOR EACH SESSION:
...
---TRANSACTION 1 3625948818, ACTIVE 2892 sec, process no 1981, OS thread id 140020625811200
2 lock struct(s), heap size 368, 1 row lock(s), undo log entries 1
>>>>> MySQL thread id 14982, query id 232584561 localhost dbuser
Trx read view will not see trx with id >= 1 3625948819, sees < 1 3625948817
mysql> kill 14982;
Query OK, 0 rows affected (0.00 sec)
Si noti che la linea con il >>>>> è dove si definisce l'ID del thread MySQL - è questa discussione che dovrebbe essere ucciso.
Vedere anche this post - molto utile.
+6
si vorrà usare 'SHOW ENGINE INNODB STATUS \ G' con MySQL 5.5 e versioni successive (il' ENGINE' era opzionale) – checkorbored
Ho avuto lo stesso problema con MyIsam e sono stato in grado di risolverlo riparando il tavolo. Non lo so, questo sarebbe d'aiuto, ma è un inizio –
Grazie, ma purtroppo RIPARAZIONE TABELLA non è usato con InnoDB. – modulaaron
Usa CHECK TABLE e dicci quale è l'output. – Jocelyn