MySQLログに重複したエラーが表示されます:
141223 5:47:21 [ERROR] Invalid (old?) table or database name 'lost+found'
#mysql50#lost+found
というデータベースがありますが、削除できないようです。
mysql> show databases;
+---------------------+
| Database |
+---------------------+
| information_schema |
| maindatabas |
| maindatabas_help |
| maindatabas_tracker |
| gitlabhq_production |
| locations |
| #mysql50#lost+found |
| mysql |
| osticket |
| performance_schema |
+---------------------+
10 rows in set (0.00 sec)
mysql> DROP DATABASE `#mysql50#lost+found`;
ERROR 1008 (HY000): Can't drop database '#mysql50#lost+found'; database doesn't exist
mysql>
私はサーバーのバージョンを操作しています:Centos 6のIUSコミュニティプロジェクトによって配布された5.5.40。
MySQLはCentOS 6x(5xではなく)で非常に遅い速度で実行されています 、私のdatadirはバリアー= 0オプションを指定したext3にあります。
このエラーの原因は何ですか?また、どのようにしてそれを排除できますか?
datadir
が独自のファイルシステムにあるように見えます。
UnixのほとんどのFSと同様に、Extファイルシステムのルートには、_lost+found
_というディレクトリがあります。これは、デタッチされた(つまり、内容はあるが、関連するディレクトリエントリはない)ファイルを、一貫性のないファイルシステムがfsckされたときにどこかに再接続できるようにするために存在します(例: https:// unix。 stackexchange.com/questions/18154/what-is-the-purpose-of-the-lostfound-folder-in-linux-and-unix 詳細については)。この目的はディザスタリカバリで重要であるため、ディレクトリを削除しないでください。
問題は、そのディレクトリを含むファイルシステムがマウントされているマウントポイントが、そのマウントポイント内のすべてがそれに属することを期待するアプリケーションに完全に渡されたときに発生します。 MySQLはそのようなものであり、_lost+found
_ディレクトリをdb関連の何かとして解釈しようとし、(不当にではなく)失敗します。
FS=をアプリケーション専用にすることはせず、代わりにFSをアプリケーション固有のマウントポイントにマウントすることをお勧めします。_/data1
_、その下にサブディレクトリ(例:_/data1/mysql
_)を作成し、そのディレクトリをdatadirとして使用するようにアプリケーションを再構成します。
MadHatterはエラーをうまく説明しました。しかし、それ以来、時代は変わり、MySQL( 5.6.3以降 )には、このディレクトリを無視するオプションがあります。このステートメントを/etc/mysql/my.cnf
ファイルに追加するだけです。
ignore-db-dir=lost+found
MySQLの再起動後、次のコマンドで確認できます。
show global variables like 'ignore_db_dirs';
複数のディレクトリを無視する場合は、ディレクトリごとにオプションを個別に指定する必要があります。
ソース: http://www.chriscalender.com/ignoring-the-lostfound-directory-in-your-datadir/
MariaDBを使用している場合のCentOS 7.2でのmy.cnfの場所は
/etc/my.cnf
あなたはサービスを再起動することができます
systemctl restart mariadb.service
ignore-db-dirは[mysqld_safe]セクションの下ではなく、[mysqld]セクションの下に置く必要があります。
[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
MySQLはまだ理解していないのでignore_db_dirs
、 やった
# chmod 0 lost+found
(これ)問題を解決しました。
MariaDbはignore_db_dirsですMySQLはignore_db_dir-"s"なし
https://mariadb.com/kb/en/library/server-system-variables/#ignore_db_dirs を参照してください
以下のような隠しディレクトリがありました
etc/my.cnf --- MariaDBの場合
[mysqld] ignore_db_dirs = .local
データベースサーバーを再起動します。次に、データベースがSHOW DATABASESコマンドに含まれていないか、MariaDBの場合はコマンドラインから「mysqlshow」があることを確認します。
次に、ディレクトリとその下の/ var/lib/mysqlにあるものをすべて削除し、次に/etc/my.cnfファイルを再編集してコマンドをコメント化するか削除して、サーバーを再起動します-問題は修正されました
最初にこれを実行せずに不要なディレクトリを削除しないでください。最初に=サーバーが保持するデータストアが破損し、すべてのデータベースを削除してバックアップからデータベースを復元する必要がない限り、再起動できない可能性があります。大きな問題。