タグ

ブックマーク / hirose31.hatenablog.jp (15)

  • 実録MySQLのチューニング 春の陣 - (ひ)メモ

    long_query_time = 0.5 とか閾値を小さめにしてもスロークエリが出なくなったけど、CPU(user)使用率高いとか、なんか足引っ張ってるクエリがあるっぽいなぁという場合のお話です。 「実録」の通り、現在絶賛進行中ですので、逐次動きがあったら書き足していくつもりです。 「あれを見た方がいい」とか「これをあーした方がいい」とかあれば、コメントかTwitterで @hirose31 までお知らせいただけるとうれしいです! 使用しているのは、MySQL 5.1.41 です。 前提: サーバーリソースのグラフ GangliaでもCactiでもMuninでもなんでもいいんですが、サーバリソースのグラフ化は必須です。チューニングした際の効果測定や、そろそろリソースい潰してやばいとかの予測にも使えます。 自分はDBサーバの場合このあたりをグラフ化してます。 CPU使用率 (user,

    実録MySQLのチューニング 春の陣 - (ひ)メモ
  • MySQL 5.1→5.6のmy.cnfの差分とか - (ひ)メモ

    MySQL 5.1で使ってたmy.cnfを試しに5.6で動くようにしたときの差分す。網羅的には調べてないんで他にも廃止になったパラメータはあるかもです。あくまで参考までに。 # log-binにパラメータ指定しないと怒られます -log-bin +log-bin = mysqld-bin # old-passwordsはオン、オフだけじゃなくて引数(0, 1, 2)が必須になって、引数の値によって挙動がかわります。 -old-passwords +old-passwords = 1 # これ指定しないと、リモートからのpre-4.1な認証方法で接続できないです +skip-secure-auth # これ指定しないと、pre-4.1な認証方法で接続できないです★下に追記あり +default-authentication-plugin = mysql_old_password # パラメー

    MySQL 5.1→5.6のmy.cnfの差分とか - (ひ)メモ
  • dstatの万能感がハンパない - (ひ)メモ

    サーバーのリソースを見るにはグラフ化は重要ですが、推移ではなくリアルタイムな状況、例えば秒単位のスパイキーな負荷を見るには、サーバー上でvmstatやiostatなどの*statファミリーを叩く必要があります。 さて、vmstatはメモリの状況やブロック数単位のI/O状況は見られますが、バイト単位のI/O状況やネットワークの送信、受信バイト数を見ることはできません。 # vmstat 1 procs -----------memory---------- ---swap--- -----io----- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 3 1 0 4724956 355452 726532 0 0 54 484 3 3 1 0 99 0 0 2 0 0 47

    dstatの万能感がハンパない - (ひ)メモ
  • Kyoto Tycoonの運用TIPSなどなど - (ひ)メモ

    チャオ!みんな、Kyoto Tycoonライフをエンジョイしてるかい!? 今日はKTライフを満喫してるミーからの運用TIPSアンドソーオンをお届けするYO! kchashmgrとktremotemgrコマンドの補完 人間の脳活動のピークは22歳の今日このごろ、みなさんいかがおすごし? もうね、ミーは全然コマンドオプションとか覚えられないからシェル(bash)で補完しまくってるYO! kchashmgrとktremotemgrだけだしオプション網羅してないし補完ルールもアレだけどオープン&シェアなマインドとガッツで気になる人はfork & push! Nagiosで死活監視 ナギオス!みんな使ってるよね? ミーはcheck_httpでKTのHTTP RPCのechoにアクセスしてデッドオアアライブの監視してる! define command { command_name check_kyot

    Kyoto Tycoonの運用TIPSなどなど - (ひ)メモ
  • rsync -Rで中間ディレクトリがシンボリックリンクな場合の注意点 - (ひ)メモ

    複数サーバを管理する場合、管理コストの増加やオペレーションミスを避けるための施策として、「すべてのサーバの内容を同一に保つ」という管理方法があります。 サーバの内容を同一に保つには、小中規模ならrsyncと、パス指定の簡便化とミスを防ぐために-a -R (--relative)オプションを使うのがベストでしょう。 ただ、-Rを指定しているときに、同期コピー対象のパスにディレクトリへのシンボリックを含んでいる場合には注意が必要です。そこで今回はrsync 2.6とrsync 3のそれぞれについて、ふたつのケースについて検証してみたいと思います。 ケース1: 実ディレクトリが同じ 物理的なディレクトリ構造をそのまま見せるのではなく、論理的な意味あるディレクトリ名/構造として見せたい場合には、ディレクトリのシンボリックリンクを使うとよいです。 例えば: RAID等のストレージにあるディレクトリの

    rsync -Rで中間ディレクトリがシンボリックリンクな場合の注意点 - (ひ)メモ
  • 明日から現場で役立つ極選 rsync filter レシピ大全集からマニア向けのを2つ - (ひ)メモ

    #!/bin/bash # Time-stamp: <2010-01-26 21:32:06 JST, hirose31> beginning_of_the_world() { files=" hrpc/oreno/katsu/chikin/recipe.txt hrpc/oreno/katsu/pork/recipe.txt hrpc/oreno/soup/recipe.txt hrpc/oreno/dry/recipe.txt hrpc/oreno/hayashi/recipe.txt " rm -fr hrpc mnpc for fp in $files; do fpd=${fp%/*} mkdir -p $fpd touch $fp done } end_of_the_world() { tree -F mnpc rm -fr hrpc mnpc } ### oreno/katsu

    明日から現場で役立つ極選 rsync filter レシピ大全集からマニア向けのを2つ - (ひ)メモ
  • kumofsの死活監視はこんな感じでNagiosでやってます - (ひ)メモ

    分散Key-Valueストア「kumofs」を公開しました! - 古橋貞之の日記 \(^o^)/ kumofsは、弊社のフォトストレージサービス Ficia で現在大絶賛モリモリ稼働中なんですが、その死活監視は自家製の Nagios プラグインで行っています。 というわけで、kumofsをサービスで使いたい人の一助になればと思い、ぼくが実際に行っている kumofs の監視について紹介したいと思います。 サーバノードとマネージャノード サーバノードとマネージャノードの監視には、それぞれのノードに対してステータスを問い合わせるコマンドを発行して、その応答で死活を判断するスクリプトを書いて使っています。 kumofs公開記念ということでgithubにpushっておきました。 http://github.com/etolabo/nagios-check_kumofs 問い合わせの処理は、管理用コ

    kumofsの死活監視はこんな感じでNagiosでやってます - (ひ)メモ
  • リモートのマシンで、iptablesでなんかいじる前に保険をかけておく - (ひ)メモ

    #!/bin/sh # 保険をかける # echo '/root/clear-iptab' | at now + 3min # とか # echo '/root/clear-iptab' | at 13:00 # で。 # # そしたら iptables でなんかいじって、 # iptables ... (as you like) # 成功したら at の job を削除しておわり。 # atq # atrm N # 失敗したら正座して祈る。 iptables -F iptables -X iptables -Z iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT 追記: 2010-01-09 http://ya.maya.st/d/201001a.html#s20100107_1 で言

    リモートのマシンで、iptablesでなんかいじる前に保険をかけておく - (ひ)メモ
  • メモ: InnoDB Pluginのバグ - (ひ)メモ

    自分も含め、InnoDB Pluginの使用を検討してる人も多いのではないかと思うのですが、ちと気になるバグを見かけたので追試してみました。 Bug #47621 MySQL and InnoDB data dictionaries will become out of sync when renaming columns http://bugs.mysql.com/bug.php?id=47621 http://bugs.mysql.com/bug.php?id=44571 現象 カラムの名前を替えて、新しい名前のカラムに対して index をつけると、InnoDB Plugin 1.0.4 以前は mysqld がクラッシュし、1.0.5 以降はエラーが出て index がつけられない。 対処法 別テーブルを作ってデータをコピーする。 再現方法 DROP TABLE IF EXISTS

    メモ: InnoDB Pluginのバグ - (ひ)メモ
  • 接続しているネットワークの変化をトリガとして、任意のスクリプトを実行する方法 - 例えばSSHトンネルの掘り直し - (ひ)メモ

    いままで、 小さいターミナルでこんな感じでSSHのトンネルを掘って while true; do rebuild-ssh-config; ssh -N -o "BatchMode yes" -L ... -R ... TUNNELHOST; echo retry; sleep 3; done ネットワークが変わった場合(会社に着いたとか家に着いたとか)、手動でkillall sshしてトンネルのsshプロセスを殺して掘り直す ということをやっていたのですが、 無線APによって自動でhostsを変える方法 - unknownplace.org を読んで、ネットワークが変わったタイミングでスクリプトを実行する方法を知った(id:typester++)ので、この手法を使って自動的にkillall sshするのと、あとついでに、ターミナルの中で実行してたsshプロセスを、AppleScriptでラ

    接続しているネットワークの変化をトリガとして、任意のスクリプトを実行する方法 - 例えばSSHトンネルの掘り直し - (ひ)メモ
  • 実録、ほぼ無停止なMySQLのフェイルオーバ (動画もあるよ) - (ひ)メモ

    レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン でも掲げたゴールである、「マスタが落ちてもぐーすか寝ていられるようにしたい」がほぼできたので、ほとんどサービスが停止することなく、フェイルオーバする様をスクリーンキャストに収めました。 埋め込みプレイヤーだと、小さくてわからないと思うので、リンク直接でみてください。 http://www.irori.org/pub/mysql-mm.mov 登場するホスト 登場するホストは2台、db901db902です。 最初は、db901が更新系クエリを受けるプライマリでdb900の浮動IPアドレスを持っています。 画面分割 画面は5分割しています。 左上 = 「select sysdate(),@@server_id」をdb900に対して(sleep 1しながら)延々と実行しまくりんぐ 右上 = ping -n

    実録、ほぼ無停止なMySQLのフェイルオーバ (動画もあるよ) - (ひ)メモ
  • レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ

    MySQLで、レプリケーションベースのHAな構成について考えたメモです。 3台(というか2台+1台)がいいかなぁと思っていて、前半はその理由を、後半では{マスタ,スレーブ}が{再起不能になった,ちょっとダウンしてすぐ復帰した}場合のリカバリプランについて書きます。 今のところはこれがベストかなと思っているのですが、「こうしたほうがいいと思う!」「ここがおかしい!」などなどのご意見はコメント、TBなどでいただけるとうれしいです。 ゴール マスタが落ちてもぐーすか寝ていられるようにしたい リカバリの作業はできるだけ単純に、かつ、短時間で完了するようにしたい めんどくさいのはいや 基構成、方針 2台+1台 サービスで使うのは2台 (db1, db2) もう1台は管理用 (db3) スレーブを多数並べる構成にはしない 台数増えると管理コストが上がる マスタダウン時のフェイルオーバとそのフェイルバ

    レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ
  • InnoDBテーブルでunique keyがある場合、それをprimary keyにするべきかどうか - (ひ)メモ

    InnoDBなテーブルのお話です。 とあるテーブルで、いくつかあるカラムのうち、ただひとつのカラムがunique keyになり得るものだとします。 こういうときは、そのunique keyは無条件でprimary keyにしたほうがイイ!と思ってたんですが、調べてみると必ずしもそうでないようなので、今のところのモヤモヤをまとめてみます。 教えて! 偉い人!! 予備知識 High Performance MySQL 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz出版社/メーカー: Oreilly & Associates Inc発売日: 2008/06/01メディア: ペーパーバック購入: 4人 クリック: 33回この商品を含むブログ (8件) を見るからの超抜粋。しかしこのは神

    InnoDBテーブルでunique keyがある場合、それをprimary keyにするべきかどうか - (ひ)メモ
  • DNS NOTIFYを受け取ってくれる無料のセカンダリDNSサービスと、NOTIFYを送るスクリプト - (ひ)メモ

    個人所有のドメインのDNSサーバは、マスタは自宅サーバ(djbdns)でセカンダリはXNameの無料のセカンダリネームサーバのサービスを使っていました。 それなりに動いてくれていたXNameですが、不満な点が1つありました。それは、マスタを変更したときのゾーン情報の伝搬に時間がかかる点です。XNameは数台のセカンダリネームサーバを提供していて、伝搬速度はサーバによってもタイミングによってもばらばらですが、早いときは数十分、遅いときは5,6時間たってようやく更新されることもありました。 XNameもDNS NOTIFY受けてくれたらいいのになーなんて思いつつも、個人所有ドメインでそんなシビアなサービスもしてないので、ま、いっかーと思っていたんですが、先日、EveryDNS.netがダウンして巷でわーぎゃーわーぎゃーな騒ぎになったときに、ちょろっと調べてみたらいくつかDNS NOTIFYを受

    DNS NOTIFYを受け取ってくれる無料のセカンダリDNSサービスと、NOTIFYを送るスクリプト - (ひ)メモ
    nekomori
    nekomori 2009/04/10
  • mod_log_rotate がよさげかも - (ひ)メモ

    mod_log_rotate のススメ で紹介されていた mod_log_rotate がよさげです。 http://www.hexten.net/wiki/index.php/Mod-log-rotate ドキュメントには書いてない(と思う)んですが、CustomLogのファイル名にstrftimeの書式指定が使えるようになります。 ついでに、rotatelogs より cronolog の方がフットプリントが小さそうなので、ErrorLogcronologを使うようにしてみました。 before ErrorLog "|/usr/local/bin/rotatelogs /var/log/httpd/irori.org/www.err.%Y-%m-%d 86400 +540" CustomLog "|/usr/local/bin/rotatelogs /var/log/httpd/ir

    mod_log_rotate がよさげかも - (ひ)メモ
  • 1