MySQL进程杀掉后是killed
為了減少數據庫磁盤占用,使用delete + where語句清理表數據,但是這樣刪除數據后也無法釋放磁盤空間,而直接用delete和truncate表數據是可以清理磁盤的。
原因可參考https://www.cnblogs.com/renzhicai/p/8857480.html
為了清理磁盤計劃先用delete + where清理表數據;在用optimize table釋放磁盤空間,但是這樣都鎖表。所以計劃關閉session sql_bin_log逐個slave執行。
由于delete刪除數據量特別大,執行時間特別長造成主從復制延遲,就手欠的kill掉MySQL processlist進程。但是發現進程是killed狀態,就重啟MySQL服務。
重啟后show processlist出現killed是沒有 了,但是發現它回滾,而且trx_mysql_thread_id為0是沒法kill掉的
SELECT * FROM information_schema.INNODB_TRXG
*************************** 1. row ***************************
trx_id: 715674773
trx_state: ROLLING BACK
trx_started: 2018-09-24 23:17:30
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 540574
trx_mysql_thread_id: 0
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 1
trx_lock_structs: 3
trx_lock_memory_bytes: 1136
trx_rows_locked: 2
trx_rows_modified: 540571 #代表鎖影響的行數,當數值為0時,鎖將會釋放
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_is_read_only: 0
trx_autocommit_non_locking: 0
1 row in set (0.00 sec)
下次遇到這種情況,還是
1、先確定執行的sql是否為最優 ,
2、在slave不影響業務上執行,用screen命令執行,執行過程不要終止。因為執行不成功會回滾。執行時間更長。
鎖表查看命令
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
參考
MySQL kill進程后出現killed死鎖問題 - xibuhaohao - 博客園 https://www.cnblogs.com/xibuhaohao/p/11867024.html
(3條消息)mysql kill進程后出現killed死鎖問題_m0_37827567的博客-CSDN博客 https://blog.csdn.net/m0_37827567/article/details/82979767
(3條消息)mysql kill進程后出現killed死鎖問題(續)_m0_37827567的博客-CSDN博客 https://blog.csdn.net/m0_37827567/article/details/91044989
總結
以上是生活随笔為你收集整理的MySQL进程杀掉后是killed的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kafka->Flink->Hbase(
- 下一篇: hbase启动后在log中出现canno