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
'source' 카테고리의 다른 글
java의 console.log()는 무엇입니까? (0) | 2022.11.24 |
---|---|
기본 최대 Java 힙사이즈는 어떻게 결정됩니까? (0) | 2022.11.24 |
팬더와 함께 열을 열로 변환 (0) | 2022.11.24 |
Loader Manager에서의 initLoader와 restartLoader의 차이점 (0) | 2022.11.24 |
mysql에서 현재 사용자 이름을 알 수 있는 방법이 있나요? (0) | 2022.11.24 |