Ubuntu: 12.04 LTS (Linux mysql02 3.2.0-40-generic # 64-Ubuntu SMP Mo 25 Mrz 21:22:10 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux)
MySQL: Ubuntu Distribution 5.5.31
Apparmor: ENTFERNT!
Server läuft seit über einem Jahr auf Hochtouren. Dann begann an diesem Montag MySQL zu scheitern. Ein Update hat das Problem verursacht und wir können nicht herausfinden, was es ist. Wir haben sogar versucht, ein Rollback auf MySQL 5.5.30 durchzuführen, aber ohne Erfolg. Wir sind um 5.5.31 Uhr zurückgekehrt.
MySQL-Fehlerprotokolleinträge:
130430 7:55:46 [ERROR] Error in accept: Too many open files
130430 7:55:46 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/fclvod.frm' (errno: 24)
130430 7:55:46 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/fcnote.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffcont.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffcontv.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffnote.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/frcfcl.frm' (errno: 24)
Es sieht so aus, als stünden wir vor einem Problem mit ulimit. Wir haben APPARMOR vollständig entfernt. Wir haben die /etc/security/limits.conf erhöht und immer noch kein Glück:
# Out of desperation....
* soft nofile 49152
* hard nofile 65536
# No effect!?!!?
#mysql soft nofile 49152
#mysql hard nofile 65536
Und um zu zeigen, dass die limits.conf funktioniert:
root@mysql02:/etc/security# ulimit -Sa | grep "open files"
open files (-n) 49152
root@mysql02:/etc/security# ulimit -Ha | grep "open files"
open files (-n) 65536
Und hier sind die wichtigen Einträge in my.cnf
[mysqld_safe]
open_files_limit = 16384
[mysqld]
open_files_limit = 16384
Jedoch:
root@mysql02:/etc/mysql# mysqladmin -u root -pThePassword variables| grep open_files_limit
open_files_limit | 1024
Wir sind total ratlos und niedergeschlagen. Jede Unterstützung wäre sehr dankbar.
Antworten:
Betriebssystem: Ubuntu (Debian) -Bereitstellungen
MySQL Server Option: Open-Files-Limit
Es scheint, dass der Debian- Upstart nicht die in /etc/security/limits.conf definierten Parameter verwendet . Wenn Sie mysql also über den Dienstbefehl starten (und so unter upstart), überschreibt er diese definierten Grenzen und verwendet den Standardwert 1024 .
Die Lösung besteht darin, die Datei mysql.conf zu ändern , die den Upstart-Dienst definiert. Sie befindet sich in /etc/init/mysql.conf und fügt vor dem Pre-Start- Block die folgenden Zeilen hinzu :
Verweise:
quelle
Hatte das gleiche Problem unter Ubuntu 15.10.
https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758 - brachte die Lösung:
(in meinem Fall) Wenn nicht, erstelle /lib/systemd/system/mysql.service und kopiere den Inhalt dieser Datei https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758/ comments / 11 und füge die beiden Zeilen irgendwo in die Datei ein
Wenn eine oder beide Dateien vorhanden sind, prüfen Sie, ob diese beiden Zeilen enthalten sind:
systemctl daemon-reload
... und alles sollte gut werden.
quelle
Da keines der oben genannten Probleme das Problem für mich behoben hat (nur, dass auf dem System nicht mehr genügend Arbeitsspeicher vorhanden ist), habe ich folgende Lösung gefunden:
In
/etc/mysql/my.conf
MySQL müssen Sie das interne open_files_limit erhöhen. Fügen Sie dies vorübergehend zur Konfiguration hinzu und starten Sie MySQL neu.sudo /etc/init.d/mysql restart
Nachdem Sie die Operation ausgeführt haben, bei der zu viele Dateien fehlerhaft sind, können Sie die Standardkonfiguration wiederherstellen und MySQL erneut starten.
quelle
Vielen Dank für die Problemumgehung. Aber für mich wurde das Thema von den beiden anderen Tatsachen überschattet.
Nach der Behebung des InnoDB-Problems spuckte es immer noch
Ich musste mysqld in der Root-Konsole starten und manuell neu starten
Dann begann der Server, Datenbanken anzuzeigen, konnte jedoch nicht auf einige der Tabellen zugreifen. Ihr Workaround mit erhöhten Limits hat den Rest der Probleme behoben, danke!
quelle