晚上收到告警MySQL數據庫服務器磁盤占滿發現是,數據庫在tmpdir寫數據的文件占用過大
執行命令lsof -n | grep deleted印出所有針對已刪除文件的讀寫操作,這類操作是無效的,也正是磁盤空間莫名消失的根本原因! 主要原因是很多進程使用后台執行,在執行完成后,有刪除日志操作,但進程未停止,所以導致日志還繼續占用磁盤容量,查詢到該步后,直接重啟一下應用服務,釋放基礎即可。 另外需注意,刪除大的日志文件時,最好關閉寫入它的程序,或 用 echo > logfile 把日志文件倒空。
需要重啟mysql服務才能釋放掉。重啟時發現MySQL停不掉,使用了比較暴力的方法,直接kill掉進程,這種方法不推薦會損壞數據庫文件造成服務無法啟動。
下面介紹一下MYSQL 5.7中臨時文件的使用
使用臨時文件 一、使用tmpdir 1、執行計划file sort 文件名字MY開頭 lsof|grep delete 如:/tmp/MYdRH1GW (deleted) 2、大事物binary log緩存 文件名字ML開頭 lsof|grep delete 如:/tmp/MLq9INFu (deleted) 3、壓縮的tempory table CREATE TEMPORARY TABLE tmp_table1(id int) ROW_FORMAT=COMPRESSED ; ls /tmp/ 如: #sql6b82_6_7.frm #sql6b82_6_7.ibd 4、online DDL 涉及排序比如add key alter table testsort add key(id); lsof|grep delete 如: /tmp/ibCxlYQg (deleted) /tmp/ib51nvZ1 (deleted) 設置 innodb_tmpdir可以將這類文件放到指定的目錄 二、使用innodb_temp_data_file_path 1、執行計划use temporay table 5.7以后為innodb 內部表 2、非壓縮tempory table CREATE TEMPORARY TABLE tmp_table1(id int); 可以使用 select * from INNODB_TEMP_TABLE_INFO ;查詢 這些也看不到 表現為innodb表 三、使用innodb data 就是online ddl 1、ALGORITHM copy 名字為 #sql- alter table testsort ALGORITHM=copy ,add im int ; #sql-6b82_6.frm #sql-6b82_6.ibd 2、ALGORITHM inplace 名字為 #sql-ib alter table test add key id int 比如 #sql-6b82_6.frm #sql-ib59-867962583.ibd 但是涉及到排序比如add key 則使用tmpdir或者innodb_tmpdir見上
Mysql tmpdir參數修改
由於操作系統的/tmp空間有限,需要進行參數修改,將tmpdir的值路徑進行修改。 mysql> show variables like 'tmpdir'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | tmpdir | /tmp | +---------------+-------+ 1 row in set (0.00 sec) mysql> set global tmpdir = '/Data/app/mysql5.6.25/mysqltmp'; ERROR 1238 (HY000): Variable 'tmpdir' is a read only variable 只能通過配置文件進行修改了。 重啟mysql mysql> show variables like 'tmpdir'; +---------------+--------------------------------+ | Variable_name | Value | +---------------+--------------------------------+ | tmpdir | /mysql5.6/var/tmp | +---------------+--------------------------------+ 1 row in set (0.00 sec) 問一下:但是生產環境不能重啟服務,這要怎么搞呢? 答:最好搭建主從同步或其他高可用架構,將業務切換至備機,在重啟MySQL服務
轉自
MYSQL 5.7中臨時文件的使用_ITPUB博客 http://blog.itpub.net/7728585/viewspace-2146356/
(1條消息)Linux文件系統被占用,磁盤使用量與實際不一致 - peterxiaoq的專欄 - CSDN博客 https://blog.csdn.net/peterxiaoq/article/details/78676046
Mysql tmpdir參數修改-任何事貴在堅持!-51CTO博客 https://blog.51cto.com/zhaowl/1743293