2015年06月21日

MySQL で datadir 内のディレクトリを無視する

あるシステムでディスク容量が足りなくなって MySQL のデータディレクトリを別ディスクに追い出すことにした。 新しく追加するディスクはもうデータディレクトリだけ置くつもりなのでマウントした場所がすぐデータディレクトリということにした。

普通に動くのだが、一つ考えていなかった問題が発生した。 /var/log/mysqld に毎日数回こんなメッセージが書き出される。

150621 15:32:14 [ERROR] Invalid (old?) table or database name 'lost+found'

マウントした直下に自動で作られる lost+found ディレクトリがテーブルだかデータベースだかに見えないという。 それはそうだ。

階層一つ深くする、というのがひとつの確実な解決策なのは判る。 が、lost+found 自体を無視できればその方が楽。

ということで調べたところ、方法があった。

mysqld のオプションに --ignore-db-dir=〈無視したいディレクトリ〉 を付加するか、実質的に同じことだが、設定ファイル my.cnf に ignore_db_dirs=〈無視したいディレクトリ〉 を追加する

ただし、一つ制限があって、MySQL のバージョン 5.6.3 以降でしか使えない。 当初使いたかったシステムには適用できなかった(まあディスク容量を食い過ぎるような状態になるぐらい使い続けているシステムなので若干古い)。

余談その1: RDS に移すことを考えたほうが良かったかもしれない。

余談その2: datadir 内の lost+found を無視する方法 みたいなそのものズバリなブログ(英語)も見つかったが、ignore_db_dirs に言及しているページ自体がグーグル検索でわずか数百件だったので枯れ木も山の賑わいとちょっと書いてみた。

ラベル:AWS MySQL
posted by mft at 16:17| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック