takasick のすべての投稿

CentOS 5.7 にMySQL 5.1を公式rpmからインストール

MySQL の公式 RPM を使おう を参考に。

まずはここから必要なファイルをダウンロードして

  • rpm -ivh MySQL-client-community-5.1.59-1.rhel5.i386.rpm
  • rpm -ivh MySQL-shared-community-5.1.59-1.rhel5.i386.rpm
  • rpm -ivh MySQL-server-community-5.1.59-1.rhel5.i386.rpm
  • rpm -ivh MySQL-devel-community-5.1.59-1.rhel5.i386.rpm

これで /etc/ini.d/mysql start から起動して、 mysqlコマンドでもアクセスできたので以上終了。

と、思いきや yum install php-mysql してみたら libmysqlclient.so.15 が原因で競合が発生してしまったので、

  • rpm -e MySQL-shared-community-5.1.59-1.rhel5.i386.rpm
  • rpm -ivh MySQL-shared-compat-5.1.59-1.rhel5.i386.rpm

と、した後に yum install php-mysql が通ったので、ディストリビューションの用意しているリポジトリとの共存を考えると、MySQLの共有ライブラリは互換ライブラリを使った方が良さそう。

リモート側に負荷をかけないようにrsync

nice値を上げてもI/O負荷が下がらないしどうしよう。。という時に、ふと「ioniceとかないの?」と検索してみたらあったw

ionice -c3 rsync -a path REMOTE:/path/

とやってみたら、ほとんど負荷をかけずにrsyncできたので(すげー時間かかったけど)、今度はリモート側から実行するときはどうしよ?と、思ったらいい例があって助かった。

rsync -avz -e 'ssh -c arcfour' --rsync-path="ionice -c3 rsync" --delete REMOTE_HOST:/path /path/

これでオッケー。 参考: リモートサーバー側の負荷を抑えてrsyncを実行する方法

EC2の/bootを含む/(root)のEBSボリュームを拡張したい

Micro Instanceに入れたAmazon Linuxが10GBで、ちょっと手狭になってきたので拡張した時の手順。

  1. instanceをstopする
  2. 停止したインスタンスにatachされているEBS Volumeのsnapshotをとる
  3. snapshotから新しいEBS Volume(ここでサイズを指定できる)
  4. instanceからEBS Volumeをdetachする
  5. 新しいEBS Volumeを/dev/sda1にatachする
  6. instanceをstart
  7. resize2fs

ポイントはあせらないことw

MySQLのtmpdirをtmpfsにしてusing filesortのSQLも高速化?

未検証だけど、動きそうな気がする。

ただし、レプリケーションしているときのslave側はちょっと注意が必要で、「MySQLがテンポラリファイルを格納する場所」を読む限りダメって書いてあるんだけど、「レプリケーションスタートアップオプション」を読むと、–slave-load-tmpdir=filename に揮発しないストレージを指定すればよさそう。

MongoDBの起動スクリプト

10genのドキュメントを見ながらCentOS, Fedora用のリポジトリを追加してインストールしたら、mongodの起動スクリプトはパッケージに含まれてたけど、mongosの起動スクリプトがなかった。

mongodのを参考に作ったんだけど、起動してみるとpidファイルが無い。。mongodは起動するとdatadirにmongod.lockを作るのでこれでpidが特定できてるんだけど、mongosはどこに出るの?と思ったら、起動時に –pidfilepath で指定しないとどこにも出ないようなので /var/run/mongo/mongos.pid とか指定すればオッケーでした。