学習したことや試行錯誤を後で再利用できるように自分のためにまとめたものです。 特にオープンなIT技術は世界の一人ひとりの活動によって支えられていると思います。 メモの内容が微力ながらそれに貢献できるのではないかと思い公開しています。 記述内容に誤りもあるかもしれません。試す方はご自身で十分検証し自己責任でお願いします。リンクは自由です。
これだけ見れば大丈夫!ーMySQLパフォーマンス監視のツボ(クエリ編) こんにちは、インフラ担当新人の nob です。 サーバー監視ツールで MySQL を監視しているのにデータが多すぎて活用していない。という方はいませんか?その豊富なデータをパフォーマンス・チューニングに活用しない手はありません。今回はサーバー監視ツールのグラフを読み解いた実戦経験を元に、「これだけ見れば大丈夫」というツボをまとめてみました。 これだけ見れば大丈夫! クエリ編 3つのつぼと5つのグラフ (その1)監視ツールが何を見ているのか知る (その2)監視のキモ、グラフ3点セット (Questions, Lock Waits と Transaction Handler) (その3)グラフでチェックする SQL チューニング ( Select Type と Handler) シンプルでお勧め、サーバー監視グラフ化ツール
MySQLには日本語・英語で様々な良本があるのですが、もちろん無料で読めるWeb上の記事にもそれに迫る(いや一部それ以上の)良い記事があります。特に今ちょうど連載されている記事は毎記事ごとに臨場感があってGoodではないでしょうか? いや、読まないなんてもったいない!! ビギナーのあなたにはこの連載記事などどうでしょうか? MySQL事始 また、MySQL 5.6.xの動向が気になったり、今後採用を検討している人がざっくり新機能を知りたい場合には次の連載記事をお勧めします。 MySQL製品最新事情 上記の二連載はエバンジェリスト梶山さんのものですが、MySQLといえば、そう漢(オトコ)を忘れてはいけません。たっぷり「濃い」説明を堪能したい中〜上級者のあなたは、オトコの記事でヒートアップしよう! MySQLチューニング虎の巻 ここからも参照されているオトコの一冊。各MySQLイベントで褒め殺
しわっす!DBA 兼オペレーションエンジニア兼タスクマネージャやってる riywo です。何のネタを書こうかなぁと考えたのですが、正直ネタを仕込む時間もなかったので僕がいつもやってることをさらっと紹介するということで勘弁して下さい>< MySQL がおかしい! 03:14 hidek: なんかエラー出まくってるんだけど! 03:14 zigorou: MySQL と通信してるとこっぽい 03:15 riywo: 見ます こんなやりとりは皆さん日常茶飯事ですよね?ね?ね?こんな時に、DB に責任を持つものとして真っ先に対応するのが僕らの仕事です。でも、じゃあ具体的にこのあと何をしましょう?既にサービスはエラーだらけで一刻を争う状態です。 (対応開始) まずはエラーメッセージ 今回の様な場合はアプリのエラーログにどばっと MySQL に関するエラーが出ているでしょう。まずはそれを見ることが始ま
JQuery Datatables plugin example with Php & Mysql - Share My Code jQuery+PHP+MySQLでデータグリッドを作るサンプル。 PHPでMySQLのデータを出すことってあったりしますが、単にテーブルで出すとかっこわるいですね。 次のようなインタフェースで出してあげると、検索やソート、ページング処理がついてくるので便利そうです。 単に出力するのはやめてこうしたライブラリの力を借りれば少ないステップで簡単に便利な機能を提供できそうです。 サクッと保存されているデータを確認したい、けどphpMyAdmin程の機能は必要ないし、ちょっと危ないみたいな場合に使えそうですね。 関連エントリ かっこいいページ送り付きのグリッドを簡単につくれる「OpenJS Grid」 好みのグリッドを作成してPNGやPhotoshop形式でダウンロー
入社4年目にもなってtech.kayac初登場のせいです。 ブログ書けプレッシャーにとうとう屈する時がきました。 これで夢にkyo_agoが出てうなされなくてすみます。(彼はtech.kayacの尻たたき担当でした) 先々月「ぼくらの甲子園!熱闘編」というゲームをモバゲー内にてリリースしました。 これは去年リリースした「ぼくらの甲子園!」の続編です。 モバゲーユーザの方、是非遊んでみてください。 今回はこの「ぼくらの甲子園!熱闘編」がどういうインフラ構成になってるか紹介したいと思います。 注) 題名に「カヤック流」とはつけましたが、カヤックでは多様性を善としている風潮があり、 ゲームによってインフラの構成が違うどころか、利用しているプログラミング言語すら違います。 なので全てのゲームがこのような構成になってるわけではありません。 前提 今回のインフラ構成を決めるに至って考慮した点は「ラクに
MySQL に限らず、SQL のNULL の仕様には何回か「えっ」と驚くことがあったのでメモしておこうと思います。5.1 版の日本語マニュアルがなかったものについては、4.1 のマニュアルを参照しました。 そもそもNULL は何を意味するか NULL は未定義または、不明を意味する。「電話番号を持たない」ということを表現する場合は、NULL ではなく、空の文字列を使う。 NULL 値というものを SQL 初心者はよく混乱します。SQL 初心者は、多くの場合、NULL が空文字 "" と同じであると考えてしまいます。これは違います。たとえば、以下のステートメントは完全に別のものです。 mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); どちらのス
初めてのRuby この本を買いました。 どうも評判が良いようで、おもわず買ってしまいました。 まだ、読んでないのですが。。。 著者のYuguiさんのブログを読んでいたら、以下のようなエントリーがあり、結構びっくりして、調べた結果をエントリーします。 知っている人にとっては当たり前なのかもしれませんが。。 Active Recordが不適当なキャッシュを返す(?)問題 @ 2006年05月 @ ratio - rational - irrational @ IDM ActiveRecordが誤ってキャッシュか何かを返している感じ。これで数時間嵌まった。 新規レコードをsave後、find_by_id(nil)すると、初回の呼び出しに限りsaveしたオブジェクトがマッチする。 MySQLが不適当なレコードを返す問題。 @ 2006年06月 @ ratio - rational - irrati
MySQLがダウンしたときに自動的に別のMySQLへ処理を引き継ぐことで、高可用性を実現するフェイルオーバーツール「MySQL-MHA: MySQL Master High Availability manager and tools」がオープンソースとして公開されたことを、作者の松信嘉範(まつのぶよしのり)氏がブログで伝えています。 Yoshinori Matsunobu's blog: Announcing MySQL-MHA: "MySQL Master High Availability manager and tools" 松信氏はモバゲーなどで知られるDeNAに勤務しており、MySQL-MHAによる自動フェイルオーバー機能はDeNAのインフラ運用を支えているとのこと。同氏のブログから引用します。 Difficulties of master failover is one of
情報系のサイトで情報をひらがなの五十音で振り分け,『あ行の情報』『か行の情報』のようにカテゴライズされているものがあります.そういう振り分けはどうやってやってるんだろうと思っていたんですけど,sqlを使って簡単に実現できるみたいです. 最初にテスト用のtestsテーブルを生成するためのsqlを書きます. DROP TABLE IF EXISTS tests ; CREATE TABLE tests ( id INT, title TEXT ); INSERT INTO tests VALUES (1,'とうきょう'); INSERT INTO tests VALUES (2,'さいたま'); INSERT INTO tests VALUES (3,'かながわ'); INSERT INTO tests VALUES (4,'あおもり'); INSERT INTO tests VALUES (
・ミ・、・ハ・�・愠ー、ホタ゚ト� † ノクス狎ヨ、ヌ、マ・ミ・、・ハ・�・愠ー、マタクタョ、オ、�、ハ、、、ソ、癸「ーハイシ、ホタ゚ト熙ャノャヘラ、ネ、ハ、�。」 タ゚ト�ク蝪「MySQL、ニオッニー、ケ、�。」 /etc/my.cnf [mysqld] log-bin ↑ ・ミ・、・ハ・�・愠ー、ホウホヌァ † サネヘムテ讀ホ・ミ・、・ハ・�・愠ー、ホヌァ、ケ、�。」 mysql> show master logs; +--------------------+-----------+ | Log_name | File_size | +--------------------+-----------+ | mysql-bin.000001 | 1480606 | +--------------------+-----------+ 1 row in set (0.00 sec)
こんにちは satoです。 オペミスで update に where句を付け忘れたり、プログラムのバグでデータが破損してしまったりした場合でも、バイナリログには更新SQLがすべて書き込まれるので、バックアップデータからオペミスが起こるまでの全てのSQLを流し込めれば、元の状態に戻すことは可能です。 •バイナリログを取っている •オンラインバックアップをとっている(mysqldumpやMySQLを止めた状態でのcpによるバックアップとバイナリログ) •バックアップ時点でのバイナリログの書き込み位置を保存している 以上のような状態でデータが壊れた時の復旧手順をまとめてみました。シナリオとして •ある1カラム email をupdateしようとしたら、間違ってwhere 句を付け忘れ 全レコードをupdateしてしまった •気がついたのが半日後 というオペミスが発生したとします 1) データベー
MySQLのバイナリログについて、うっすらまとめてみようかと。 RDBMSで更新ログまたはトランザクションログと呼ばれているログの機能は、 MySQLでは「バイナリログ」が担っている。 これらの内容は、「CREATE TABLE文やINSERT文といったデータベースの中身を 変更する操作を行った際の操作履歴を追跡できる形で記録した情報」であり、 コミットされたトランザクションの情報が保存される。 トランザクションログの中身はRDBMSによって異なり、「論理ロギング」と 「物理ロギング」がある。「論理ロギング」はSQL文レベルで変更履歴を管理し、 「物理ロギング」は変更があったデータブロックをバイナリイメージとして管理する。 MySQLのバイナリログは論理ロギングだが、OracleのREDOログやInnoDBログは 物理ロギングである。 バイナリログはデフォルトでは作成されないので、my.c
MySQL の勉強をせずにフレームワーク等で SQL を書かずに Web サイトを構築していました。データ数も2万件程度でしたので、そこまで困ることはありませんでしたが、今回100万弱の商品データを扱う機会ができたので、MySQL のチューニングや発行する SQL について見直す機会がありました。 この記事では MySQL を高速化するのに行った対策など勉強したものを自分用にメモしておきました。 条件式で比較するカラムにインデックスを使用して高速化 商品コードで存在しない商品を見つけて、商品をDBに登録するという処理を行っている場合、4万件超えたころから処理に2秒以上かかるようになってきます。12万件超えた頃には10秒程度かかるようになってしまいましたが、商品コードのフィールドに対してカラムインデックスを貼ることで0.2秒に短縮することができました。 MySQL のリファレンスにも以下のよ
どうも、俺@週明け仕事中です。 週末、とあるシステムでMySQLの「Too many connections」が多発する障害が発生しました。 その時調べたメモです。 このエラーは、「コネクションの数が多すぎてもう接続できないよー」というものです。 MySQLの設定は mysql> show global variables like '%max_connection%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 100 | +-----------------+-------+という状態です。 デフォルト値が「100」なのだそうで、まず単純にコネクション最大数を増やします。 mysql> set global max_conne
今日はさくらVPSに載せているWordPressのパフォーマンスをチューニングして高速化に成功したので安心して眠れるという話をします。 2.5ページ/秒だったのが70ページ/秒と30倍高速化。 以前はDaily数千PVで重くなっていたサイトがDaily3.6万PVを余裕で捌けるようになりました。 #ちなみにproxy cacheという手法はwordpressでなくても動的コンテンツ全般に有効です。 ▼サーバ気にしなくて良くなったので今週末新宿御苑に花見に行けました☆。枝ぶりがいいさくらが多くてほんといいところだと思うの。 WordPressチューニング高速化結果http://hara19.jp/のサーバ環境と測定結果は以下のとおり。 WordPress稼働環境さくらVPS 1GB/CentOS5.5/PHP5.3/MySQL5.5/WordPress3.1。 WEBサーバはチューニングにあ
http://dev.mysql.com/doc/refman/5.1/ja/group-by-functions.html GROUP_CONCAT(expr) この関数は、グループからの連結された非 NULL 値を伴うストリング結果を戻します。非NULL 値がない場合は NULL を戻します。MySQL では、式のコンビネーションの連結された値を得ることができます。DISTINCT を使用することで、重複した値を除くことが可能です。結果の値をソートしたい場合は、ORDER BY 句を使用してください。逆順でソートするには、DESC ( 降順 ) キーワードを、ORDER BY 句のソートするカラムの名前に加えてください。デフォルトでは昇順になっています。これは、ASC を使うことで明示的に指定することができます。SEPARATOR の後には、結果の値の間に挿入されるべきストリング値が続
4月11日から米サンタクララで行われた「MySQL Conference & Expo 2011」。このイベントでDeNAの松信嘉範(まつのぶよしのり)氏が、同社の大規模なMySQLの運用を支えている技術とツールについてのセッション「Automated, Non-Stop MySQL Operations and Failover」を行いました。 プレゼンテーションの中で、社内で利用しているフェイルオーバーの自動化ツールをオープンソース化することにも触れています(英語のドキュメントも作成中とのこと)。 MySQLの大規模運用における自動フェイルオーバーは、特にクラウドでのMySQLの利用が増えるにつれてニーズが高まる分野と思われます。セッションのスライドが公開されていますので、そのポイントを紹介していきます。 自動化されたノンストップなMySQLの運用 ソーシャルゲームでは高可用性が強く求
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く