Připadá mi to jako vaše datadir
je ve vlastním systému souborů.
Ext souborové systémy, stejně jako většina FS pod Unixem, mají ve svém kořenovém adresáři adresář nazvaný lost+found
. Existuje proto, aby umožnil souborům, které se odpojí (to znamená, že mají obsah, ale žádnou přidruženou položku adresáře), aby byly někde znovu připojeny, když je fscked nekonzistentní souborový systém (viz např. https://unix.stackexchange.com/ otázky/18154/jaký-je-účel-složky-ztracených-nálezů-v-linuxu-a-unixu, kde najdete další podrobnosti). Tento účel je důležitý při obnově po havárii, takže byste neměli mazat adresář.
Váš problém nastává, když je přípojný bod, ke kterému je připojen souborový systém obsahující tento adresář, zcela předán aplikaci, která očekává, že vše v tomto přípojném bodě patří jemu. MySQL jako jeden takový se pokouší interpretovat lost+found
adresář jako něco souvisejícího s db a (ne bezdůvodně) selže.
Nejlepším řešením je nikdy nevyhradit aplikaci celý FS, ale místo toho připojit FS na nějaký aplikačně nespecifický přípojný bod, např. /data1
, vytvořte podadresář, např. /data1/mysql
a překonfigurujte aplikaci tak, aby používala tento adresář jako svůj datový adresář.
MadHatter dobře vysvětlil chybu. Od té doby se ale časy změnily a nyní má MySQL (od 5.6.3) možnost tento adresář ignorovat. Stačí přidat toto prohlášení do /etc/mysql/my.cnf
soubor:
ignore-db-dir=lost+found
Po restartu MySQL to můžete zkontrolovat příkazem:
show global variables like 'ignore_db_dirs';
Pokud chcete ignorovat více adresářů, musíte zadat volbu pro každý z nich zvlášť.
Zdroj:http://www.chriscalender.com/ignoring-the-lostfound-directory-in-your-datadir/
Umístění my.cnf pod CentOS 7.2, pokud používáte MariaDB, je v
/etc/my.cnf
Službu můžete restartovat pomocí
systemctl restart mariadb.service
ignore-db-dir by měl být umístěn do sekce [mysqld] a ne do sekce [mysqld_safe].
[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