apoteketse.com

障害発生。。。

本日はまたしても障害対応。
とりあえず、原因は、MySQLのアクセス過多でのファイル破壊。。
今時なかなかリソース使い切るシステムを作るっての自体大変なんだけど。
そういう仕組みなので現状しょうがない。(というのも原因か・・胃が痛い)

DB構成は、一応MasterとSlaveホンのちょっとだけスケールアウト(?
INSERT、UPDATE負荷でMaster側が逝っちゃいました。
しかもSlave側で多少データ量が異なる(Slave側のほうがcount数多め。)
うーん、Slave->Master昇格が一番楽そうだったけど、
何気に一部Master側テーブルが更新されてるし・・・

で、また起きそうなのでアバウトな備忘録ってことで。
[基本的に処理としては、MASTER の壊れたテーブルデータとSLAVE側テーブルデータだけ差し替え]
とにかく前も参考にさせてもらった、
現場指向のレプリケーション詳説 で十分でしたとさ。。
MySQLのドキュメントにもよく書いてあったりするけど。

まず、SLAVE STOP;
MASTER側もApache停止。
MASTER側にSLAVE側のテーブルデータを持ってきて、
展開。(動くもんだね。。。そういうテーブル構造ってのも微妙?)
[その間予備含めsnapshotファイルとしてのバックアップも取っておく]

MASTER側開始で、
SHOW MASTER STATUS;でチェック!
binログのPOST位置とかを要チェック。

で、SALVEにSNAPSHOTをもってきて、
展開。
あとはSLAVE側もスタート。(後でmy.cnfをSLAVE仕様に変更。)
–引用–
mysql> CHANGE MASTER TO
-> MASTER_HOST = ‘master’,
-> MASTER_USER = ‘replication-user’,
-> MASTER_PASSWORD = ‘passwd’,
-> MASTER_LOG_FILE = ‘master-bin.001′,
-> MASTER_LOG_POS = 359;←上でチェックした奴。
—-
で、で、なぜかMASTERとSLAVEのPOST位置が合わない・・・ので、
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n
(3.23.xはGLOBALはずす!で、SLAVEはSTOPしとかないとダメ)
でOKかな。超アバウトだけど。。
ってことでひとまず自己(中)解決。
あとはユーザーさんへの対応か。。何気にコレが一番凹む。。

[PR] iPod touch 新登場。 指先から始まる、まったく新しい体験。 8GB¥36,800〜

ということで他にもあって疲れました。。知恵熱が・・・

引き続きというか、↑の前にCentOSApacheSuExecでハマル・・・。
ネットでよく調べたところ。
FTPのアップロード時の改行コードでしょ。とか書いてあったけど。。。
自分のは違う!と思ってたらそのご指摘どおりでした。(恥&泣)
SuExecのドキュメントから読み直してしまった。。;
パーミッションとか設定間違えてなかったのね。。。
(コマンドラインでチェックしてやっと気づいた。。最初からやれよ)

というのは置いといて、
rpmbuildでのRPM作成(Apache-2.2.x)。面白ぇ。
すげぇー。FreeBSDのports最高!とかpkg_installも楽と思ったけど、
こういうのも面白い。

yum install rpm-build でインストール。
(最初からは入ってないのね。)
/usr/src/redhat にいろいろ作成。
で、どっかしらで、src.rpm をゲット。
rpm -ivh *.src.rpm
で展開。->/usr/src/redhat/SRPM、SPEC 各所へ
予めSPEC内にhttpd.specファイルができてるので、カスタマイズ。
今回はSuExec絡みでcontent_dir だったかを変更。
最後に、
rpmbuild -bb httpd.spec
で、RPM/* 内に出来上がり!へぇぇぇぇ。
ちゃんとmanualとかもrpmにしてくれてる。。イマサラすげぇ。
ということで、rpm -i でインストール、うーん、問題なし。

あとは、rsync絡みもテスト中。。
あぁ楽しかった。(のに)
明日はこんな感じで障害ありませんように(南無南無)

Leave a Reply

Dansette