source

MySQL/쓰기 파일 오류(Ercode 28)

nicesource 2022. 11. 24. 20:41
반응형

MySQL/쓰기 파일 오류(Ercode 28)

당사의 웹 애플리케이션 중 하나에서 다음과 같은 오류가 발생했습니다.

Query3 failed: Error writing file '/tmp/MY1fnqpm' (Errcode: 28) ... INSERT MailList... (removed the rest of the query for security reasons)

아이디어 - 서버의 하드디스크 용량 문제인가요?

다음 명령을 사용합니다.

$ perror 28
OS error code  28:  No space left on device

시스템에서 에러 코드가 다른 경우를 제외하고, 파일 시스템은 가득 찼습니다.

비슷한 문제가 발생했는데 MySQL이 필요에 따라 /tmp 디렉토리를 사용한 것이 문제입니다(기본 구성).또한 /tmp는 자체 파티션에 위치하여 큰 MySQL 요청을 위한 공간이 너무 적었습니다.

상세한 것에 대하여는, 다음의 회답을 참조해 주세요.https://stackoverflow.com/a/3716778/994302

같은 문제가 있었습니다만, 디스크 용량은 정상입니다(40%만 가득 찼습니다).문제는 아이노드로, 작은 파일이 너무 많고 아이노드가 꽉 찼어요.

df -i로 inode 상태를 확인할 수 있습니다.

이 오류는 MySQL에 필요한 임시 파일을 만들 공간이 부족함을 의미합니다.

가장 먼저 시도할 수 있는 것은 이 제품의 크기를 확장하는 것입니다./tmp/파티션 설정LVM 아래에 있는 경우lvextend명령어를 입력합니다.

파티션 크기를 늘릴 수 없는 경우/tmp/MySQL 구성에서 작업할 수 있습니다(일반적으로/etc/mysql/my.cnf) 파일을 작성하여 다음 행을 찾습니다.

tmpdir = /tmp/

원하는 대로 변경(예)/var/tmp/빈 공간이 있는지 확인하고 새 디렉토리의 mysql 사용자에게 쓰기 권한을 할당하십시오.

이게 도움이 됐으면 좋겠네요!

다음 코드를 실행합니다.

du -sh / var / log / du - sh

mysql 바이너리 로그가 메모리를 가득 채웠을 가능성이 있습니다.메모리를 가득 채웠을 경우 오래된 로그를 삭제하고 서버를 재시작합니다.my.cnf도 추가합니다.

expirate_days = 3

동일한 오류가 발생했는데 가상 머신에 공간이 부족해서 문제가 발생했습니다.불필요한 파일을 삭제했더니 다시 작동하기 시작했어요.

메모리/디스크 공간 할당은 다음과 같습니다.

df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   37G   37G  127M 100% /
...

다른 회선이 동작하지 않는 경우는, 다음의 회선을 사용해 주세요.

du -sh / var / lib / mysql / database _ Name

또한 호스트에게 데이터베이스 크기를 확인할 수도 있습니다.

xampp 사용자의 경우: 제 경험상 이 문제는 '0'이라는 이름의 파일로 'mysql' 폴더에 있습니다.크기가 너무 커서 (내 것은 약 256 Gb까지 폭발했다)제거로 문제가 해결되었습니다.

이 오류는 파티션에 충분한 공간이 없을 때 발생합니다.보통 MYSQL은 Linux 서버에서 /tmp를 사용합니다.조회 결과 많은 데이터가 반환되거나 대량의 데이터를 선별하여 큰 임시 파일을 생성했기 때문에 일부 쿼리에서 이 문제가 발생할 수 있습니다.

/etc/mysql/my.cnf 편집

tmpdir = /your/new/module

tmpdir = /var/tmp

보통 자체 파티션에 있는 /tmp보다 더 많은 공간을 할당해야 합니다.

오늘도. 나도 같은 문제가 있어.솔루션:

체크: 1) inode 체크:df -i가 봤어 는는::: ::::

root@vm22433:/etc/mysql# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 124696 304 124392 1% /dev
tmpfs 127514 452 127062 1% /run
/dev/vda1 1969920 1969920 0 100% /
tmpfs 127514 1 127513 1% /dev/shm
tmpfs 127514 3 127511 1% /run/lock
tmpfs 127514 15 127499 1% /sys/fs/cgroup
tmpfs 127514 12 127502 1% /run/user/1002

2) 최대수의 inod를 사용하는 폴더를 조사하기 시작했습니다.

 for i in /*; do echo $i; find $i |wc -l; done

곧 나는 /home/tomnolane/tmp 폴더에 있는 것을 발견했는데, 그 폴더에는 엄청난 파일이 들어있었다.

3) /home/tomnolane/tmp 폴더를 삭제했습니다.

4) 확인:

Filesystem      Inodes  IUsed   IFree IUse% Mounted on
udev            124696    304  124392    1% /dev
tmpfs           127514    454  127060    1% /run
/dev/vda1      1969920 450857 1519063   23% /
tmpfs           127514      1  127513    1% /dev/shm
tmpfs           127514      3  127511    1% /run/lock
tmpfs           127514     15  127499    1% /sys/fs/cgroup
tmpfs           127514     12  127502    1% /run/user/1002

괜찮아요.

5)restart mysql service★★★★★★★★★★★★★★★★★★!

저도 같은 문제가 있었습니다만, 조사 결과 스냅 디렉토리가 대부분의 공간을 차지하고 있는 것을 알 수 있었습니다.이 명령어를 삭제하기 위해 다음 명령을 실행했습니다.

sudo apt autoremove --purge snapd

그 후 다음 명령을 실행하여 불필요한/dev/loop 마운트를 삭제합니다.

`sudo apt purge snapd ubuntu-core-launcher squashfs-tools`

그 후 다음 명령을 실행하여 mysql을 재시작합니다.

sudo service mysql restart

나한텐 효과가 있었어!

언급URL : https://stackoverflow.com/questions/7415710/mysql-writing-file-error-errcode-28

반응형