Hatena::ブログ(Diary)

Soogleの日記

2011-09-11

MySQLが突然落ちたときの復旧方法メモ

00:03

色々あると思いますが、今回は結構ログをみたりとえぐかったので、

その調査ログもかいておこうと思います。

問題

ps aux でMYSQLプロセスがたってない

/etc/rc.d/init.d/mysqld start

mysql daemonがたちあがらない

ログ解析

[root@XX]# id

uid=0(root) gid=0(root) 所属グループ=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

[root@XX]# tail /var/log/mysqld.log

InnoDB: the log sequence number in the ib_logfiles!

110904 20:49:52 InnoDB: Database was not shut down normally!

InnoDB: Starting crash recovery.

InnoDB: Reading tablespace information from the .ibd files...

InnoDB: Restoring possible half-written data pages from the doublewrite

InnoDB: buffer...

110904 20:49:52 InnoDB: Started; log sequence number 0 43665

110904 20:49:52 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

110904 20:49:52 mysqld ended

ib_logfile0 1 をけしてみる

でも消してもだめっだった。。。

[root@XX]# ls -l

合計 20536

drwx------ 2 mysql mysql 4096 3月 26 01:43 XXX

  • rw-rw---- 1 mysql mysql 5242880 9月 11 16:43 ib_logfile0
  • rw-rw---- 1 mysql mysql 5242880 11月 8 2010 ib_logfile1
  • rw-rw---- 1 mysql mysql 10485760 2月 21 2011 XXX

drwx------ 2 mysql mysql 4096 3月 26 01:58 XXXr

drwx------ 2 mysql mysql 4096 3月 26 01:20 mysql

drwx------ 2 mysql mysql 4096 7月 9 19:11 XXX

[root@XX]# cd ib

一応、tmpにMYSQL以下のデータは全部バックアップをとっておく

tmpフォルダに保存しておく

myconfの設定を見直してみる

[root@XX]# cat /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Default to using old password format for compatibility with mysql 3.x

# clients (those using the mysqlclient10 compatibility package).

old_passwords=1

default-character-set = utf8

skip-character-set-client-handshake

# Disabling symbolic-links is recommended to prevent assorted security risks;

# to do so, uncomment this line:

# symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[mysql]

default-character-set = utf8

mysqldログをみてみる

未コミットなトランザクションなどのリカバリに失敗しているらしい
二重書き込みでなんかやっちゃてるらしい

110215 4:29:19 [Note] /usr/libexec/mysqld: ready for connections.

Version: '5.0.77' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution

110817 11:03:33 [Note] /usr/libexec/mysqld: Normal shutdown

110817 11:12:57 mysqld started

InnoDB: The log sequence number in ibdata files does not match

InnoDB: the log sequence number in the ib_logfiles!

110817 11:13:24 InnoDB: Database was not shut down normally!

InnoDB: Starting crash recovery.

InnoDB: Reading tablespace information from the .ibd files...

InnoDB: Restoring possible half-written data pages from the doublewrite

InnoDB: buffer...

110817 11:13:30 InnoDB: Started; log sequence number 0 43665

110817 11:13:32 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

110817 11:13:32 mysqld ended

MYSQLをもう一度立て直す

MySQL データを初期化

うまいぐあいにシステムテーブルだけ、初期化されて、InnoDBのデータは消えなかったので、

そのままパスワードをチョコチョコ設定していったら、普通につかえちゃったという何というラッキー具合!

http://dev.mysql.com/doc/refman/5.1/ja/error-creating-innodb.html

http://www.ark-web.jp/sandbox/wiki/228.html

[root@XX]# mysql_install_db

Installing MySQL system tables...

OK

Filling help tables...

OK

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'

/usr/bin/mysqladmin -u root -h XX password 'new-password'

Alternatively you can run:

/usr/bin/mysql_secure_installation

which will also give you the option of removing the test

databases and anonymous user created by default. This is

strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available on the web at

http://www.mysql.com

Support MySQL by buying support/licenses at http://shop.mysql.com

[root@XXX]# cd /usr ; /usr/bin/mysqld_safe

Starting mysqld daemon with databases from /var/lib/mysql



MYSQL再起動

mysql -u root -p

SET PASSWORD FOR root@localhost=PASSWORD('XXXXX');

権限追加

mysql> SET PASSWORD FOR root@XXX=PASSWORD('XXXXX');

Query OK, 0 rows affected (0.00 sec)

mysql> select user,host,password from mysql.user;

+------+------------------------+------------------+

user host password

+------+------------------------+------------------+

root localhost XXXXXXXXXXXXXXXX
root XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
root 127.0.0.1 XXXXXXXXXXXXXXXX
XXXX localhost XXXXXXXXXXXXXXXX
XXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX

+------+------------------------+------------------+

5 rows in set (0.00 sec)


そのほか気づいたこと

もしかしたらやらないといけないこと

MYSQLユーザ作るか、作らないか

再構築後は、最初はクエリーキャッシュがのるまで結構時間がかかる。しょうがない。ちょっとおもい。

<

2011-08-07

はじめての献血とその値段@新橋

17:30

f:id:Soogle:20110807170646g:image:left

生まれてはじめて、献血をしてきたが、痛みはなかった。

約400mlをぬきとられる。その値段が気になったので、少しだけしらべてみた。メモ。

儲けるわけではなく、儲かるわけでもなく、世の中には手術のために、輸血をほしている人が

たくさんいると思うので、今後も定期的に行っていこうと思った本日。

献血制度が整備される以前は売血によって血液の需要を充たしていたが金銭を得る目的で過度に売血をする者が多数現れ、これらから得られる血液は血液としての質(「黄色い血液」)および供血者の健康の面で問題があることが多かったため、2010年現在は日本では輸血用血液は専ら献血によりまかなわれている。

上記wikikepediaの引用より、昔は売血によって日銭を稼いでいたものがあったが、通常の生活をしていれば売血などする必要はないのに、それであっても行うということはよほどの何かを背負ってきた人たちが多く、そうなると生活自体が困窮しており、当時は覚せい剤も横行しており、注射針の共有などにより、肝炎であったにもかかわらず知らずして献血をした結果、輸血者が感染してしまうということもあったそうだ。

BBC News - Lower price for donated blood saves NHS hospitals £50mの記事によると、

ちなみに血は人が生きている限り流れ続けるので、価値がよくわからないので、

献血後の値段を海外のニュースで調べてみたところ、以下であった。

0.25リットルが、125ポンド→1万5千円程度で、イギリスでは取引されているそうだが、(ただしこれは、ドナーからの提供によるものを医学的にやりとりする場合の相場だと思われるので売血の値段ではない。テストや正しい管理をされたうえで、病院に届けた場合の必要経費を足した金額くらいだろう)

The price of a quarter of a litre of blood has gone down from £140 to £125.

1英ポンド = 128.387603 円

2011-08-01

想田和弘監督作品 Peaceが見せてくれる偶然かつ意図的な日本の日常風景 そしてストーリーについて

00:35

f:id:Soogle:20110326092009j:image:left

「選挙」「精神」と毎回期待以上の映像を見せてくれている想田監督の最新作が渋谷のシアターフォーラムで上映されていってきた。

映画をまったく観ない人に「猫と平和の映画だよw」と完全なる欺瞞をもとに観てきたわけだが、

横でぐっすりとお休みになっていたので、人によって刺さる刺さらないがあると想いました。

ネタバレも何もないけれど、今回のPeaceの舞台は岡山県北区、30万人が住む地方の中では政令指定都市の大きな町と考えられる。原研哉がうまれたところでもあるところのようだ。自分の母親や、同居人が岡山出身であったりで、

何かと縁のある場所でもある。

そんな地方都市で、ギリギリの収入でなんとかやっていく70歳に手が届くような老人が

実施している訪問介護事業所の周辺の日常を監督の観点で映している。

雑誌「真夜中」での想田監督の寄稿では

ドキュメンタリーフィクションであるが、予想できない現実が起きるというのも魅力である」

というようなことが書いてあったと思うが、一度この監督がレンズをむけると予想外の出来事が色々おきるし、

出てくる人々の日常の中の、非日常というものが、レンズをむけられる客体の恍惚感からなのか、増幅装置にかけられたかのように、クローズアップされ、細切れな場面にコンテクストがつくられていく。もしくはコンテクストの中に、

選ばれたパーツたちが置かれているだけなのかもしれない。

猫をとるはずが、人間を、人間をとるはずが、職場を、職場をとるはずが世間を、世間をとるはずが、戦争を

とまるで何かに引き寄せられていくかのように、物事は核心にむかって。。

となっていくと思わせて、核心は何もない。だから最後をむかえたときも、え?ここ?というところでおわる。

予定調和でなく、勧善懲悪でもなく、ゆるりとした日常に失われていく日常と、新たにうまれるもの、残されるものの生活を覗く中で自分らで答えを作れよ ってそういう意味なのかなぁと勝手に解釈をしてみる。

なぜ、岡山?なぜ猫?なぜ戦争?疑問に思うところはたくさんある。

けれど、映像のパズルの組み合わせ、また東京に住んでいては体験できない、今の年では、もしくは都市wでは体験できない日常を自分には見せてくれた。プライド、やさしさ、生きること、自分ができること、そんなことを答えもなくふわふわと今後考えていかなくてはいけないと思わせた映画だったことは間違いないだろう。

変に恐怖感を持ったのもあり、今日からまともに勉強をしはじめた8/2。

ドキュメンタリーはだから面白い。答えを勝手に考えられる。答えがわからないから、

ひたすら考える。でもわからないんだけれどね。地方都市の生活、日常。都会と都市の違い。

お金が循環しているところ、していないところ。でも最低限必要なお金は循環している。

僕らはどこでうまれ、どこで生活し、どこで死ぬべきなのか、なんて考えるいいきっかけになるかもしれない。

  • 参考

『Peace』エココロ試写会レポート エココロ.com

  • 喫茶去(きっさこ)の意味 これは意味深い

禅語に親しむ

共助グループ喫茶去訪問介護事業所 - WAM NET介護事業者検索

ずぶの素人を政治家にしていく映画

2011-07-30

cakephp, facebookのwebtechnick pluginでユーザ情報がとれなかった場合の対応方法

17:19

cakephp, facebook connect webtechnick plugin problem - Stack Overflow

ここに参照のとおりだけれど、cakephp facebook用のpluginを使ってた際にいきなり、

以下のメソッドでユーザ情報がとれなくなったので、調べたところ

Terms of Service URLに何も入っていなかったのが、問題だったようだ。

上記URLでもサブドメインが間違っていたそうで、ここを正しいのにする必要あり。

サブドメインが何個にもまたがる場合にはどうするんだろう?ログインは一個からにしとけってことだと思うけれど。


$this->Connect->user();

2011-07-23

画像サイズをCSS変更なしで、jqueryのみで伸縮ができるjquery.MyThumbnail.jsの設定の仕方[注意事項]

14:09

通常画像を切り抜く場合はCSSでclip rectでサイズを変えるものだとおもっていたのだが、

jqueryでサイズ変更をするのがトレンドらしい。これは簡単。

スタイルシート[CSS]/イメージ/画像を切り抜く - TAG index Webサイト

img {
position: absolute;
clip: rect(50px 500px 300px 100px);
}
  • 参考リンク

Official Demo page for MyThumbnail jquery plugin

異なるサイズの画像を並べて瞬時にサイズを揃えられるjQueryプラグイン「MyThumbnail」:phpspot開発日誌

いくつかのサンプルから拝借する、

wordpressコーディング規約にも書いてあるが、タグはダブルクォートで囲っておいてほしいが、、それは別として

WordPress コーディング基準 - WordPress Codex 日本語版

ここで大切なことは、MyThumbnailが後に書かれていること。

これを決して前に書いてはいけない。HTMLは上から読まれる以上、

1.必要なjs読み込み

2.画像をレンダリング

3.その後jqueryHTMLを解析して、マッチした部分だけ画像を変形

という流れだと思われるので、ひとまず画像変換系は後に書いておいたほうがこのライブラリについてはいいのではないか?と

思われる(構文があってたのに変更がされない涙とずっとないてた人がいたので)。

中身を読んでみると、引数で渡した数値をもとにwidth,lengthなど、

background-position:center;background-size:などをかませながら、すごいhtmlをつくっていく

自力で書こうと思えばかけるかもしれないが、ちょこっとした設定でここまでハードなhtmlブラウザ側で解釈して

つくってくれるなら、とても便利だと思う。サーバ側の負荷もいくらか減りそうだし。その分ブラウザは重くなるわけですが。

<div class="myThumbDivAutoAdd myPic" style="float: left; width: 100px; height: 100px; overflow: hidden; background-color: rgb(204, 204, 204); background-image: url("http://a5.sphotos.ak.fbcdn.net/hphotos-ak-snc6/DEMODEMO.jpg"); background-repeat: no-repeat; background-attachment: scroll; background-clip: border-box; background-origin: padding-box; background-position: center center; background-size: 138.235px 100px;"></div>
  • sample
<div id="thumbnailList1'> 
<a href="http://www.google.com"><img src="images/1.jpg"></a> 
<a href="http://www.yahoo.com"><img src="images/2.jpg"></a> 
<a href="http://www.kfsoft.info"><img src="images/3.jpg"></a> 
</div>
$("#thumbnailList1 img").MyThumbnail({ 
    thumbWidth:120, 
    thumbHeight:100, 
    backgroundColor:"#ccc", 
    imageDivClass:"myPic" 
});