へとへと(MySQL)

今日はへとへとになってしまった。


以前MySQLで云々と書いた件だが


実は
某所でMySQLがらみの障害が起きていたというのが真相だった。







MySQLのトラブルと言っても、実際には宿主になるアプリケーションが勝手にインストールしたデータベースだ。


何が起きていたのかと言えば、OS側のエラーログでDBのテーブルの一つでエラー#2が多発していた...と言うもの。
エラーに出力されているファイル名の実体のファイルも存在していたし、ファイルへのアクセスも行えたこと、また、何故か実業務での問題も起きていなかったことから、処置が今まで伸ばされていた...という状況だった。

実体のファイルが存在していたことと、ファイルへのアクセスエラーも無かったことから、宿主のアプリケーションか、MySQLの問題だとして、アプリケー ションのバージョンアップを行うと言うことにしていた。また、テーブルについても、全部削除して再構築することで復旧が見込めるという考えもあった。



今日、作業する際に再度確認を行なったところファイルが一つ無くなっていることが判明。

但し、エラーログに載っていたファイル名では無かった。
・・・というのも、

MySQLの場合、まずデータベース単位にデータベース名でディレクトリが作られて、その中にテーブル名で拡張子の違う3つのファイルが作られる。テーブル定義ファイル(テーブル名.frm)、データファイル(テーブル名.MYD)、そしてインデックスファイル(テーブル名.MYI)の3つだ。

インデックスファイルが無いというエラーでインデックスファイルを確認→実在する。

という事で、ファイルが無いと判断していたのだが、実際はデータファイルが無くなっていた。




という事で、結局データベースは削除→再構築という事で、ある意味当初の読み通り。


但し、ファイルが1つだけ無くなることはあり得ないので、その点に関してはオペミスなども視野に入れて考える必要はあるが。



ここまで調べるのに掛かったのは20分位。
ちょっと恥ずかしい感じもするが。

実は問題は、その後。



ここまでハッキリすれば、すっきり削除→再インストールで簡単に復旧できる話だったのだか。

再インストール後、アプリケーションが動作しないというトラブル。
もうちょっと細かく言うと、その某アプリケーションというのは実体はApache+JBossで動作しているのだが、Apacheが起動しない。
というトラブルが。

Apacheのlogs/を見ても、ログは残ってないし。Windows版のApacheってなんやねん!とかキレながらしらべたのだが、どうやらSSLの鍵関係でエラーが出ているようだ。

丹念にhttpd.confを調べるとSSL部分はincludeしていることが分かり、httpd.confからその部分を削除。そうするとApacheは単体では起動する。

調べていくと、どうやらCERTファイルが0バイトになってる事が判明した。
いや、あり得ない事は分かってるけど、市販のアプリケーションでそんなことは無いはず・・・と思ってたのも事実だが。現実0バイト。

このアプリケーションの場合、証明書、鍵などSSLに必要なファイルはインストール時に勝手に作られるので、どうもその部分が怪しいという事でインストール・ログを見ていくとどうも正常終了しているらしい。


という事で、インストールプロセスを追っかけて、自己証明書(オレオレ証明書)を作成している部分がバッチファイルであることを突き止めた。

ここまで調べるのに1時間半以上掛かってる・・・。


改めて、バッチファイルを実行すると、ライブラリ系のエラーと思われるエラーが。
もうダメかなと諦め掛けたけど、ここではじめてUNIX屋らしく、コマンドを手実行してみると・・・問題なく通る!


ということで、約2時間掛けて動くようになったわけだが。


この時点でかなり切り分け重視で、そもそもの初期バージョンがインストール出来ただけに過ぎなかった。


改めて外部の機器と接続を試みると、あっさりNG。
ちょっとはしょるけど、色々調べた結果、結局外部の機器も初期化、再設定が必要だった。

という事でこの時点で、約3時間強。



くたくたになりつつも、ここから、バージョンアップ。
そうするとまたApacheが動かなくなる等のトラブルもあったけど、まぁ、そこはそれで馴れたもんで、回避しつつ、どんどんバージョンアップ。


最後にまた問題が・・・。
最後はライセンスの問題だったので、流石に回避不能。


という事で、まっさらにして再インストール・・・。
(メジャーバージョンは同じで、マイナーバージョンは最新・・・という組み合わせにしてきた)



結局、格闘すること5時間強。
見事な大ハマリ。




という事で、少しMySQL勉強しておいて良かった。
このうえ、MySQLでハマってたら、今日中に帰ってこれなかったよ。