MySQL / 쓰기 파일 오류 (Errcode 28)
웹 응용 프로그램 중 하나에 다음 오류가 있습니다.
Query3 failed: Error writing file '/tmp/MY1fnqpm' (Errcode: 28) ... INSERT MailList... (removed the rest of the query for security reasons)
어떤 아이디어라도-이것은 내 서버의 하드 디스크 공간 문제입니까?
다음 perror
명령을 사용하십시오 .
$ perror 28
OS error code 28: No space left on device
시스템에서 오류 코드가 다르지 않으면 파일 시스템이 가득 찼습니다.
비슷한 문제가 발생했으며 문제는 MySQL이 필요에 따라 / tmp 디렉토리를 사용한다는 것입니다 (기본 구성). 그리고 / tmp는 큰 MySQL 요청을위한 공간이 너무 적은 자체 파티션에 있습니다.
자세한 내용은 https://stackoverflow.com/a/3716778/994302에서 답변을 찾아보십시오.
같은 문제가 있었지만 디스크 공간은 괜찮 았습니다 (40 % 만 찼음). 문제는 inode, 너무 많은 작은 파일이 있었고 inode가 가득 찼습니다.
df -i로 inode 상태를 확인할 수 있습니다.
이 오류는 MySQL에 필요한 임시 파일을 만들 공간이 충분하지 않음을 의미합니다.
가장 먼저 시도 할 수있는 것은 /tmp/
파티션 의 크기를 확장하는 것 입니다. LVM 아래에있는 경우 lvextend
명령을 확인하십시오 .
파티션 크기를 늘릴 수없는 경우 /tmp/
MySQL 구성에서 작업 할 수 있습니다 .my.cnf
(일반적으로 /etc/mysql/my.cnf
) 파일을 편집하고 다음 줄을 찾으십시오.
tmpdir = /tmp/
원하는대로 변경하십시오 (예 /var/tmp/
). 공간이 있는지 확인하고 새 디렉토리에서 mysql 사용자에게 쓰기 권한을 할당하십시오.
도움이 되었기를 바랍니다!
다음 코드를 실행하십시오.
du -sh / var / log / mysql
아마도 mysql 바이너리 로그가 메모리를 채웠을 것입니다. 그렇다면 이전 로그를 제거하고 서버를 다시 시작하십시오. my.cnf도 추가하십시오.
expire_logs_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'폴더에있는 문제가 발생했습니다. 크기는 너무 컸습니다 (광산은 약 256Gb로 폭발했습니다). 제거하면 문제가 해결되었습니다.
이 오류는 파티션에 충분한 공간이 없을 때 발생합니다. 일반적으로 MYSQL은 Linux 서버에서 / tmp를 사용합니다. 조회가 많은 데이터를 반환했거나 큰 임시 파일을 생성하는 많은 데이터를 검색했기 때문에 일부 쿼리에서 발생할 수 있습니다.
/etc/mysql/my.cnf 편집
tmpdir = / your / new / dir
예 :
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 폴더 PROFIT를 제거했습니다.
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
-괜찮아 !!!!
참고URL : https://stackoverflow.com/questions/7415710/mysql-writing-file-error-errcode-28
'Programing' 카테고리의 다른 글
ActionMode를 만들 때 onPrepareActionMode가 호출되지 않음 (0) | 2020.10.13 |
---|---|
Hadoop 잘림 / 일관되지 않은 카운터 이름 (0) | 2020.10.13 |
ActionSheet가 작동하지 않는 iPad (0) | 2020.10.12 |
OSX App Bundle 빌드 (0) | 2020.10.12 |
F # : mutable 대 ref (0) | 2020.10.12 |