MySQLレプリケーションの導入からネットワーク経由のログインまで

MySQLレプリケーションに挑戦。
OSはUbuntu Server。MySQLのバージョンは5。
とりあえずここに書いてある通りに進める。


現場指向のレプリケーション詳説
http://www.irori.org/doc/mysql-rep.html


my.cnfの場所は /etc/mysql/my.cnf なので注意。
スレーブの設定までやったら、マスタ側の/etc/mysql/my.cnf の bind-address をコメントアウト
セキュリティが心配なら、コメントアウトせずに127.0.0.1に加えて、スレーブ側のIPアドレスを追加しておくべし。


注意点としては、余計な心配をさける為にマスター、スレーブ共にmysqldをstopさせておくこと。
/etc/init.d/mysql stop

また、各種設定をする際ははmysqlを起動するけど、スレーブ側の設定をする時などは念のために
mysql>stop slave;
をしておくべし。
初めてなので色々慎重に。

スレーブにマスタのデータをコピーして、スレーブ側でmysqlを起動すると、debian-sys-maint の
パスが云々言われるので以下のサイトを参考にパスワードを変更する。

再インストールすると debian-sys-maint がアクセスできない?
http://pelican.ddo.jp/fukurou/mediawiki/index.php/MySQL%E3%81%AE%E8%A8%AD%E5%AE%9A


スレーブ側にマスタの情報を書き込んで
mysql>start slave;
したら
mysql> show slave status\G;
で状態を確認。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

ならば準備OK。
だめならば、設定の再度確認を。


ちなみに私はスレーブに設定するマスタ側の情報は、my.cnfじゃなくて、change master toで設定しました。

MySQLのレプリケーションを試してみたので注意点など - (゚∀゚)o彡 sasata299's blog




最後に

例えばスレーブ側はselect専用のMySQLサーバーにして、ネットワーク越しにmysqlにログインして使う場合。
忘れずにスレーブ側の/etc/mysql/my.cnf の bind-addressをコメントアウトするか、クライアントのIPの追加を。
次にselect限定ユーザの追加をする。

追加の仕方
http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html#doc1_id351

例えばこんな感じで
GRANT SELECT ON *.* TO usr_name@192.168.*.* IDENTIFIED BY 'pass';



その後、クライアント側から、MySQLサーバーに接続できるか試してみる(3307はmy.cnfで設定したポート番号)
telnet 192.168.***.*** 3307
以下のようにmysqlのバージョンを含む応答があればOK。

Server version: 5.*.**等。(すぐに切断される)


こうなればもう後は使うだけ。-pの後は半角スペースを空けずに以下のコマンドでログインできる。-hの後はMySQLサーバのIPアドレスを。
mysql -h 192.168.***.*** -P (ポート番号) -u (ユーザ名) -p(スペース空けずにパスワード)

Ubuntuでcronを設定してrubyを動かす

cronの設定ではまった。

cron(crontab)の簡単な使い方 - satake7’s memo


上記を参考にしてこのように設定してみるが動かない。


*/10 * * * * ruby /home/ログイン名/hoge/hoge.rb > /dev/null 2>&1


絶対パスじゃないと駄目な事があるらしいので絶対パスで記述する。


*/10 * * * * /usr/bin/ruby /home/ログイン名/hoge/hoge.rb > /dev/null 2>&1


これでも駄目。
しばらく頭を抱え込む。みんな環境変数を書いたり、色々工夫してるようだ。
とりあえず一番簡単なグループの設定をしてみる。

# sudo vigr
# sudo vigr -s


それぞれ、crontabの所に自分のログイン名を書き込む。
これでもだめ。

あ、そういえば自作のライブラリをrequireしてたんだ。
作業ディレクトリに移動してやらないと駄目かも。


*/10 * * * * cd /home/ログイン名/hoge/; /usr/bin/ruby /home/ログイン名/hoge/hoge.rb > /dev/null 2>&1


無事動きました。

Net::HTTPでのタイムアウト補足

引数無しのrescueで例外補足できるかと思ってたけど、
なぜかタイムアウトエラーは拾ってくれない。

なんでかと思ってググったら簡単な事でした。

引数無しのrescueはStandardErrorとそのサブクラスしか受け付けてくれない。

けれどもTimeout::ErrorはInterruptのサブクラス。
Net::HTTPの例外補足方法 - OVERT MEMO


ああ、なるほど。ちゃんと引数書かないと駄目なのね。
引数無しはどんなエラーでも拾うのかと思ってた。StandardErrorだけか。
という訳で

rescue Timeout::Error

と書いて無事解決。



…じゃねえええ!
net/httpの例外捕捉方法(2) - OVERT MEMO


rescue Exceptionとの併用が必要らしい。
とりあえずまだお目にかかった事が無いのでエラーが出たらrescue Exceptionも追加してみよう。

hpricotでsegmentation fault

hpricotでウェブスクレイピングしてたらsegmentation faultが。
何度やっても出るので困ってたけど0.8.1にアップデートしたらとりあえず解決した。
たしかバージョンアップ前は0.6だったかな。

現状、速度的な不満は無いけど調べてみたらhpricotは遅いみたいな記事が沢山出てきた。
nokogiriも試してみようかな。

Athlon X2 7750 BEの電圧下げ

暑いので電圧下げを行った。

BIOSでVCORE 1.0000に設定。(元は1.2750だっけ)
CPUID Hardware Monitorで0.98V
AMD OverDriveでも0.98V表示。


CPUクロックは2.6GHzから2.2GHzにダウン。
2.3GHzだと、OSの起動直後ぐらいにブルースクリーンになった。


発熱は結構抑えられてる感じ。
ただし、ケースがAntec Soloという窒息ケースな上に、
ホコリ侵入を防ぐ為に色々な所に目張りしてあるのでケース無い温度は高い。
よってCPUFANは結構回ってる。
CPU使用率100%で10時間以上回して、2900RPM〜3000RPM程度。
CPU温度45℃、core温度22℃前後。CPUID読み。
リテールクーラー。

いよいよQuad Coreの時代

2009年も半分が過ぎようとしているが、いよいよクアッドコアの時代が来たという感じがする。
今まではデスクトップPCを組む時でも、クアッドコアというのは(動画のエンコード職人、ゲーマーが買うような)半ば趣味のCPUだった。


でも最近は徐々にではあるけれどマルチコア前提で作られるアプリが増えてきたように思う。
こうなってくると、もはやクアッドと言わずにコアは多ければ多いほど良い。
凄く単純に考えて、クアッドコアならばデュアルコアの倍の速度で、オクタコアなら4倍の速度で処理できちゃう訳だから。


core i7はHTぐらいしかインパクト無かったし、2010年にまた大きな変革が来るとは言われてるけど、
これがどれほどの物になるかはまだ分からない。

45nmにまでなっているプロセスルールもそろそろ限界じゃないの。
GPUだけど、AMDは40nmのRadeon HD 4770で酷い目に会ってるらしいし。
例え32nmがスムーズに行ってもその先は大丈夫なのかと思っちゃう。
そうなるとコア一つあたりの性能は2,3年のうちに限界が見えそう。


ここ数年、クアッドコアで止まってたマルチコアの流れも、Nehalem-EXはオクタコアになるという話だし、AMDイスタンブール(だっけ)でヘキサコアになってる。
今はまだまだデュアルコアがメインストリームだけど、2010年にはデュアルコアは廉価版という位置づけになるだろうなー。

そういえば既にceleronデュアルコアになったし、Core2の下位にラインナップされてるPentium-Dual Core E6300なんか2.8GHzで、初期のCore2Duo E6300(1.86GHz)を大きく上回るスペックになってる。
そう考えるとコアあたりの性能は随分底上げされたのかなー。
単純に上位が詰まってる間に下位のスペックがどんどん底上げされただけな感じはするけど。
何にせよすごい時代だ。