本文主要模拟磁盘满的情况下,MySQL服务的表现。
模拟磁盘满的故障,可以通过创建大文件来进行。
创建大文件可通过三个进行: truncate、dd、fallocate。
本文使用dd命令创建大文件。
/bin/dd if=/dev/zero of=/tmp/dd_big_file bs=1G count=360
/bin/dd: writing `/tmp/dd_big_file': No space left on device
186+0 records in
185+0 records out
199480524800 bytes (199 GB) copied, 276.479 s, 722 MB/s
参数定义:
通过以上命令,就可以创建最大360G的大文件。
从输出结果看,执行到最后,报错没有空间可以使用。
dd的速度,约是1s 1G。
接着在命令行终端向MySQL写入数据:
> insert into tb_test values(1,'one message');
此时写SQL卡住, 或者说hang住,一直不返回。
如果插入一次没有卡住,就多执行两次。
2021-03-20T16:49:58.253154+08:00 1490615 [ERROR] Disk is full writing './mysql-bin.000001' (Errcode: 15489056 - No space left on device). Waiting for someone to free space...
2021-03-20T16:49:58.253213+08:00 1490615 [ERROR] Retry in 60 secs. Message reprinted in 600 secs