Необходимо очистить блокировку MySQL InnoDB без перезапуска базы данных
У меня есть блокировка MySQL InnoDB, которая предотвращает вход пользователя в систему. На данный момент меня не волнует причина этой блокировки - мне просто нужно очистить блокировку без перезапуска базы данных. Убийство процесса запроса ничего не делает FYI. Есть предложения? Спасибо.
1 ответов
вот как я закончил решение проблемы:
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)
обратите внимание, что строка с > > > > > > - это то, где определен идентификатор потока MySQL - это этот поток, который должен быть убит.
см. этой пост - очень полезно.