Mam następujący błąd w jednej z naszych aplikacji internetowych -
Query3 failed: Error writing file '/tmp/MY1fnqpm' (Errcode: 28) ... INSERT MailList... (removed the rest of the query for security reasons)
Jakieś pomysły - czy to jakiś problem z miejscem na moim serwerze?
Odpowiedzi:
Użyj
perror
polecenia :O ile kody błędów nie są różne w twoim systemie, twój system plików jest pełny.
źródło
while true; do df -h /tmp; sleep 3; done
podczas uruchamiania skryptu, aby zobaczyć, ile miejsca zajmują tabele tymczasowe.Doświadczyliśmy podobnego problemu, a problem polegał na tym, że MySQL użył katalogu / tmp na swoje potrzeby (jest to domyślna konfiguracja). A / tmp znajdował się na własnej partycji, która miała za mało miejsca na duże żądania MySQL.
Aby uzyskać więcej informacji, spójrz na tę odpowiedź: https://stackoverflow.com/a/3716778/994302
źródło
Miałem ten sam problem, ale miejsce na dysku było w porządku (tylko 40% zajęte). Problem dotyczył i-węzłów, miałem zbyt wiele małych plików, a moje i-węzły były pełne.
Możesz sprawdzić status i-węzła za pomocą df -i
źródło
Błąd oznacza, że nie masz wystarczającej ilości miejsca, aby utworzyć pliki tymczasowe potrzebne MySQL.
Pierwszą rzeczą, którą możesz spróbować, jest zwiększenie rozmiaru
/tmp/
partycji. Jeśli jesteś pod LVM, sprawdźlvextend
polecenie.Jeśli nie jesteś w stanie zwiększyć rozmiaru swojej partycji
/tmp/
, możesz pracować w konfiguracji MySQL, edytujmy.cnf
/etc/mysql/my.cnf
plik (zazwyczaj on ) i poszukaj tej linii:tmpdir = /tmp/
Zmień to na cokolwiek chcesz (przykład
/var/tmp/
). Po prostu upewnij się, że masz miejsce i przydziel uprawnienia do zapisu użytkownikowi mysql w nowym katalogu.Mam nadzieję że to pomoże!
źródło
Uruchom następujący kod:
du -sh / var / log / mysql
Być może dzienniki binarne mysql zapełniły pamięć, jeśli tak, postępuj zgodnie z usunięciem starych dzienników i zrestartuj serwer. Dodaj również w my.cnf:
expire_logs_days = 3
źródło
du -sh /var/log/mysql.log
Miałem ten sam błąd, a problemem było po prostu za mało miejsca na mojej maszynie wirtualnej. Usunąłem niepotrzebne pliki i znowu zaczęło działać.
moja alokacja pamięci / miejsca na dysku wyglądała mniej więcej tak
df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 37G 37G 127M 100% / ...
źródło
Możesz także spróbować użyć tej linii, jeśli druga nie działa:
du -sh / var / lib / mysql / nazwa_bazy_danych
Możesz również sprawdzić u swojego hosta i zobaczyć, jak duże pozwalają na to twoje bazy danych.
źródło
Dla użytkowników xampp: z mojego doświadczenia wynika, że problem był spowodowany przez plik o nazwie „0” i znajdujący się w folderze „mysql”. Rozmiar był zbyt duży (mój eksplodował do około 256 Gb). Jego usunięcie rozwiązało problem.
źródło
Ten błąd występuje, gdy nie masz wystarczającej ilości miejsca na partycji. Zwykle MYSQL używa / tmp na serwerach linuxowych. Może się tak zdarzyć w przypadku niektórych zapytań, ponieważ wyszukiwanie zwróciło dużo danych lub być może nawet przeszukało wiele danych, tworząc duże pliki tymczasowe.
Edytuj plik /etc/mysql/my.cnf
na przykład
Powinien mieć więcej miejsca niż / tmp, które zwykle znajduje się na własnej partycji.
źródło
Dzisiaj. Mam ten sam problem ... moje rozwiązanie:
1) sprawdź i-węzeł:
df -i
widziałem: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) Zacząłem sprawdzać, które foldery używają maksymalnej liczby inod:
for i in /*; do echo $i; find $i |wc -l; done
wkrótce znalazłem w folderze / home / tomnolane / tmp, który zawierał ogromną liczbę plików.
3) Usunąłem / home / tomnolane / tmp folder ZYSK.
4) sprawdzono:
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
w porządku.
5)
restart mysql service
- jest ok !!!!źródło