Каждые 5 минут я запускаю задачу на MS SQL Server 2008, которая связана с MySQL на другом сервере в сети. Это работает, вероятно, в 80% случаев. Остальные 20% приводят к зависанию MySQL и service mysql restart
необходимо.
Вот некоторая информация о запросе, который выполняется каждые 5 минут:
INSERT INTO MYSQLINTRANET...segments_temp SELECT * FROM ProjectTracking.dbo.segments;
Возможно ли, что ProjectTracking.dbo.segments
мог быть заблокирован, что привело к зависанию?
Без каких-либо сообщений об ошибках в журнале ошибок, куда я могу перейти?
Я бы оставил это как комментарий, но хочу процитировать код, поэтому делаю это здесь. Я бы начал с попытки отследить, где происходит блокировка. В следующий раз, когда у вас будет блокировка, соберите некоторые данные. На сервере MS SQL выполните следующее:
USE master
select text,wait_time,blocking_session_id AS "Block",
percent_complete, * from sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 order by start_time asc
Проанализируйте возврат и посмотрите, каков статус. Это заблокировано? Ожидает ли он возврата данных с пульта?
На сервере mySQL запустите:
show full processlist;
Так же как:
SHOW ENGINE INNODB STATUS
В первом будут перечислены запущенные процессы, каков статус вашего запроса? Что там написано, он ждет. Второй поможет вам определить, есть ли у вас проблема с тупиком.