Für mich sieht es aus wie dein datadir
befindet sich in einem eigenen Dateisystem.
Ext-Dateisysteme haben, wie die meisten FS unter Unix, in ihrer Wurzel ein Verzeichnis namens lost+found
. Es existiert, damit Dateien, die getrennt werden (d. h. sie haben Inhalt, aber keinen zugehörigen Verzeichniseintrag), irgendwo neu angehängt werden können, wenn ein inkonsistentes Dateisystem fsckiert wird (siehe z. B. https://unix.stackexchange.com/ questions/18154/what-is-the-purpose-of-the-lostfound-folder-in-linux-and-unix für weitere Details). Dieser Zweck ist bei der Notfallwiederherstellung wichtig, daher sollten Sie das Verzeichnis nicht löschen.
Ihr Problem tritt auf, wenn der Einhängepunkt, auf dem das Dateisystem, das dieses Verzeichnis enthält, eingehängt ist, vollständig an eine Anwendung übergeben wird, die erwartet, dass alles in diesem Einhängepunkt zu ihr gehört. MySQL ist eines davon und versucht, lost+found
zu interpretieren Verzeichnis als etwas db-Bezogenes und schlägt (nicht unangemessen) fehl.
Am besten ist es, nie einen ganzen FS einer Anwendung zu widmen, sondern stattdessen den FS an einem nicht anwendungsspezifischen Einhängepunkt zu mounten, z. B. /data1
, erstellen Sie darunter ein Unterverzeichnis, zB /data1/mysql
, und konfigurieren Sie die Anwendung neu, um dieses Verzeichnis als ihr Datenverzeichnis zu verwenden.
MadHatter hat den Fehler gut erklärt. Aber seitdem haben sich die Zeiten geändert und MySQL (seit 5.6.3) hat jetzt eine Option, dieses Verzeichnis zu ignorieren. Fügen Sie einfach diese Aussage zu Ihrem /etc/mysql/my.cnf
hinzu Datei:
ignore-db-dir=lost+found
Nach dem Neustart von MySQL können Sie dies mit dem Befehl überprüfen:
show global variables like 'ignore_db_dirs';
Wenn Sie mehrere Verzeichnisse ignorieren möchten, müssen Sie die Option für jedes einzeln angeben.
Quelle:http://www.chriscalender.com/ignoring-the-lostfound-directory-in-your-datadir/
Der Speicherort von my.cnf unter CentOS 7.2, wenn Sie MariaDB verwenden, befindet sich in
/etc/my.cnf
Sie können den Dienst mit
neu startensystemctl restart mariadb.service
ignore-db-dir sollte in den Abschnitt [mysqld] und nicht in den Abschnitt [mysqld_safe] gelegt werden.
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
ignore-db-dir=lost+found
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d