若是mysql中有正在執行的大事務DML語句,此時不能直接將該進程kill,不然會引起回滾,很是消耗數據庫資源和性能,生產環境下會致使重大生產事故。html
若是事務操做的語句很是之多,而且沒有辦法等待那麼久,能夠採起之後操做:mysql
1. 在數據庫中的配置文件中新增:innodb_force_recovery = 3。sql
innodb_force_recovery影響整個InnoDB存儲引擎的恢復情況。默認爲0,表示當須要恢復時執行全部的innodb_force_recovery能夠設置爲1-6,大的數字包含前面全部數字的影響。當設置參數值大於0後,能夠對錶進行select,create,drop操做,但insert,update或者delete這類操做是不容許的。數據庫
1(SRV_FORCE_IGNORE_CORRUPT):忽略檢查到的corrupt頁。
2(SRV_FORCE_NO_BACKGROUND):阻止主線程的運行,如主線程須要執行full purge操做,會致使crash。
3(SRV_FORCE_NO_TRX_UNDO):不執行事務回滾操做。
4(SRV_FORCE_NO_IBUF_MERGE):不執行插入緩衝的合併操做。
5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重作日誌,InnoDB存儲引擎會將未提交的事務視爲已提交。
6(SRV_FORCE_NO_LOG_REDO):不執行前滾的操做。多線程
2. 重啓msql,drop掉致使回滾的表,再將配置文件恢復成默認值(即不須要在配置文件中設置innodb_force_recovery參數),再次重啓mysql。性能
重啓操做會由於數據量很是大,致使mysql恢復緩慢,此時須要等待mysql進行崩潰恢復。根據數據量的不一樣,等待的時間也不一樣。spa
注:線程
若是須要導入導出數據庫數據,可使用如下命令:日誌
1. 導出:mysqldump -uroot -p --opt -R -E --default-character-set=utf8 --databases device2> /mysql/device_20191022.sqlhtm
mysql5.7之後可使用pump命令,調用多線程:
/mysql/bin/mysqlpump -uroot -p --default-character-set=utf8 --compress-output=LZ4 --default-parallelism=4 --databases device2 > /mysql/device_20191022.sql.LZ4
2. 導入:mysql -uroot -p < /opt/device_20191022.sql
若是使用了pump導出,須要先解壓:
lz4_decompress /tmp/backup_kevin.sql /tmp/kevin.sql
mysql < source /tmp/kevin.sql;
原文出處:https://www.cnblogs.com/wangjingu/p/11729462.html