2018年9月25日(火) 22:38 JST

MySQLが壊れる

Geeklog

暫く放置していたサイトを見たらSQL error表示。error.logを見ると・・・・。もしかして、これがSQL injection??SLVって何?
まったく知らないサイトがpingでも打ってきた?

閉じようかと思い悩んで、やっぱり続けようとドメイン1年延長したのに。

------------------------------------------
*この前は↓と同じようなログが3月から延々と続いていた。

2009年04月12日 19時46分59秒 - Error communicating with SLV: RPC server did not send response before timeout.; Message was (@xml version="1.0" encoding="UTF-8"@)
<methodCall>
<methodName>slv</methodName>
<params>
<param>
<value><string>http://esnips.com/user/09fv
http://esnips.com/user/09fv</string></value>
</param>
</params>
</methodCall>

2009年04月12日 19時46分59秒 - Trackback verification: Got HTTP response code 301 when requesting http://esnips.com/user/09fv
2009年04月13日 00時22分34秒 - 1062: Duplicate entry '195.159.93.130' for key 'PRIMARY'. SQL in question: insert into gl_nmoxmenu_favorite(ip,opened,date) values('195.159.93.130','','20090413002234')
2009年04月14日 17時38分34秒 - 2006: MySQL server has gone away. SQL in question: UPDATE gl_vars SET value = value + 1 WHERE name = 'totalhits'
Sat Apr 18 06:14:02 2009 - 145: Table './fucofpd/gl_sessions' is marked as crashed and should be repaired. SQL in question: DELETE FROM gl_sessions WHERE remote_ip = '124.97.201.158' AND uid = 1

*このあとは、同じログが今日まで延々と続いている。
--------------------------------------------------

 

[link:hiroron.com ひろろん]さんに見てもらったらMySQLのgl_sesssionというtableが壊れているらしい。
Ivyさんによると「gl_sessionは時々壊れるのでメンテナンス必要」とのこと。

Tsushiさんがこのためのツールを用意しているそうでwww.itsup.net/a02/filemgmt/index.php

ひろろんさんによると

まず、
myisamchk -r -q tbl_name
をやってみて、だめなら、次に
myisamchk -r tbl_name
のようです。

以下を参照
http://dev.mysql.com/doc/refman/5.1/en/repair.html

 

 

ということでSQLコマンド実行でも可能のようです。でも、なんか怖かったのでもう一つ教えてもらったphpmyadminからtableの修復する方法を採りました。

phpmyadminへログインしてgl_sessionsテーブルを選び、そこの「操作」を開く。
そこに「テーブル管理」というのがあるので、その中の「テーブルを修復する」を実行する。

Geeklog本家でも時々話題にはなっているようで、project.geeklog.net/tracking/view.php だそうです。
kinoさんによる意訳。

セッションのコードは古くて非効率的だけど色々なテストが行われて幾つかのセキュリティ修正を経て信頼できる。そこを弄るとまたセキュリティ問題が絡んでくるのでモチベーションが保てない。

セッションテーブルが問題になるのは全て同じパターンに従っているようだ。
MySQLgaクラッシュした時にバックアップを行いセッションテーブルが壊れていた・・・等

ちなみに過去にgeeklog.net が gl_sessions の問題に遭遇した時は最後の1時間はサーバーが更新されたのを見ていない。MySQLの特定のバージョンでのみ発生する可能性があるので、DBサーバーのバグだと思う。

mod_fcgidは私には新しい観点で、gl_sessionsが壊れた人達が mod_fcgidを使用しているかやMySQLのバージョンについて調査を開始する価値があるかも知れません。

MySQLのあるバージョンに依存して発生する傾向があるようで、私の場合はMySQLクライアントのバージョン: 5.1.22-rcでした。
ただ、Ivyさんのほうこくによると「CORESERVERのMySQL 5.1.22-rc PHP 5.2.5というまったく同じようにみえる環境でも,一度も発生していないサーバと,頻繁に発生するサーバがあります。」とのことです。

当たり前だけど、MySQLのバックアップ、ファイルのバック、大切ですね。