タグ

mysqlに関するouestのブックマーク (267)

  • MySQLでレプリケーション構成したスレーブでエラーが出たときの対応 | ホゲホゲロック

    MySQLのスレーブサーバをマスタに同期してる時に Duplicate entry '238158-966' for key 1' onMySQLのスレーブサーバをマスタに同期してる時に Duplicate entry ‘238158-966′ for key 1′ on query. みたいなエラーに悩まされた。 結論としては以下のようなシェルスクリプトで対応。 #!/bin/sh while [ 1 ]; do if [ `mysql -u root -e "show slave status \G;" | grep "Duplicate entry" | wc -l` -eq 1 ] ; then mysql -u root -e "stop slave; set global sql_slave_skip_counter=1; start slave;" fi sleep 1

  • ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門 広く浅くを担当してます、ota です。 技術ブログ第一回から早速流用スライドで申し訳ありませんが、社内勉強会資料として作成した「MySQL INDEX + EXPLAIN入門」です。 当社でもソーシャルゲームの開発を行っていますが、このような大量のデータを使用する・クエリの速度が求められる場合にインデックスは大変重要です。 インデックスの有効な利用にはDB設計者だけではなくプログラマにもある程度の知識が最低限必要となりますが、インデックスについての初心者向け資料があまりないようです。 このスライドではプログラマに知っておいて欲しい以下の基的な点をまとめました。 INDEXを使用する時に気をつけること WHERE句 !=、<>はインデックスが使用できない WHERE句の全てのANDにかかっていないイン

    ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
    ouest
    ouest 2011/03/29
  • 『【研究課題レポート抜粋】各無償OSにおけるFSとMySQLの性能』

    これは第1回研究課題(2008年前半期)におけるDaikoku氏のレポート「Linux,OpenSoralis,FreeBSDの各ファイルシステムにおけるMySQLの性能評価」からの抜粋です。当時の環境、状況における結果の有用性から、最優秀賞を受賞しました。 1. はじめに これまでは,Linux上でMySQLを利用することが多かったが,昨今,他のOSもオープン化や利便性向上,新しいファイルシステムへの取り組み等,注目すべき点がある.稿では,IAサーバにLinux,OpenSolaris,FreeBSDをインストールし,MySQLを稼動させ特徴や性能の評価を行う. 2. ファイルシステムについて 現在のところ,アメーバで利用しているMySQLはext3を利用している.その他の主なファイルシステムとしては,下表のようなものがある. 稿では,特に実用性が高いと思われるext3,UFS2(以

    『【研究課題レポート抜粋】各無償OSにおけるFSとMySQLの性能』
  • ソーシャルゲームのためのMySQL入門その2 | BLOG - DeNA Engineering

    こんにちはこんにちは。11インチMacBook Airが欲しくてたまらないiwanagaです。 前回の記事 が幸いにもご好評を頂けた様で非常にうれしいです。嬉しくなって、ついがんばって第2弾を書いてしまいました。引き続き、ソーシャルゲームでよく使われるテーブルタイプ毎にちょっとしたテクニックを紹介していきます。 今回はちょっとライトな感じ&読み物になってしまっていますが「ユーザID単位で1つだけ持つデータ」と「パラメータなどのマスターデータ」についてご説明したいと思います。ちなみに次回はInnoDBのデータ構造の簡単な説明と複合プライマリーキーのデータについて、その次で紹介し損ねたちょっとマニアックなテクニックや性能管理のための手法を紹介することを予定しています。 その前に。。。 先日行われた JAPAN INNOVATION LEADERS SUMMIT で弊社松信が「ソーシャルゲーム

    ソーシャルゲームのためのMySQL入門その2 | BLOG - DeNA Engineering
    ouest
    ouest 2011/02/17
  • おっと萌えキャラの悪口はそこまでだ : プログラミング

    2010年11月14日03:48 カテゴリプログラミング CentOS5.5(64bit版)にて、yumでインストールしたmysql-5.1.51にHandlerSocket plugin for MySQLをインストールしてみた Q4Mに続き、HandlerSocketを入れてみた。 Q4Mのインストールをやっていたおかげで、autogen.sh実行時libtooliezがどうのと怒られたのみで HandlerSocketのインスールは滞り無く出来た。 # HandlerSocket Donwload cd ~/download git clone git://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL.git cd HandlerSocket-Plugin-for-MySQL # for libtooliez yu

  • Good night, Posterous

    Posterous Spaces is no longer available Thanks to all of my @posterous peeps. Y'all made this a crazy ride and it was an honor and pleasure working with all of y'all. Thanks to all of the users. Thanks to the academy. Nobody will read this.

    ouest
    ouest 2011/02/15
  • Range Partitioning と日付型の選び方 - 日向夏特殊応援部隊

    だいぶ前に身を持って知った訳ですが、どう見ても BK なのでここに書いておきますよと。 型 データサイズ 日付演算 1日未満の分割 刈り込み (pruning) datetime 8 byte ○ × ○ timestamp 4 byte ○ ○ × uint(10) 4 byte × ○ ○ 1日未満の分割が必要無く、データサイズもへっちゃらと言う御仁は datetime を、日付演算なんぞ要らんという方は uint(10) がお勧め。timestamp は pruning が効かないのが泣けるです。

    Range Partitioning と日付型の選び方 - 日向夏特殊応援部隊
  • MySQLのserver-idの振り方 - blog.nomadscafe.jp

    たくさんのMySQLサーバを運用している際に、一意なserver-idを生成するルールを作っておくと急な負荷上昇でslaveサーバを追加しないと行けなくなった時に、masterや他のslaveのserver-idを調べてユニークなidを考える手間を減らす事ができます。 自分はプライベートIPアドレスの第三オクテットと、第四オクテットを使い server-id = 第三オクテット*256 + 第四オクテット としています。192.168.67.135 なら server-id = 67*256 + 135 = 17287 です。/16 以下のネットワークならIDが被る心配ありません。セットアップツールなどで自動でmy.cnfに入れてしまうこともできると思います。 もし /16 ネットワークよりも大きなネットワークなら第一、第二オクテットも計算に含めればいいんじゃないでしょうか。server-

    ouest
    ouest 2011/02/14
  • MySQLのRANGEパーティションを使う | 村式流 イッパシエンジニアへの道

    MySQLのRANGEパーティションのお話です。 MySQL5.1からサポートされているパーティショニングですが、ログテーブル等、レコード数が多くなりがちなテーブルに日付でパーティショニングしてます。 最初から遠い未来までのパーティションを切るのは気持ち悪いし、長く運用されるサービスの場合は忘れる可能性もあるのでバッチを回すのがいいと思いますが追加する場合の手順と注意点です。 ・まずはパーティションを作成 CREATE TABLE `mura`.`test1` ( `date` DATE NOT NULL , `name` VARCHAR( 40 ) NOT NULL , `contents` VARCHAR( 255 ) NOT NULL , `created_at` DATETIME NOT NULL ) ENGINE = InnoDB PARTITION BY RANGE (TO_

  • MySQLでslave追加時にmasterが全力でbinlogを送って困る時 - As a Futurist...

    たまにはしょうもない TIPS でも。MySQL の魅力といえば言わずもがな 10 年の歴史を誇る「レプリケーション」の仕組みだと思います。これさえあれば 1 つの筐体で必死にデータ保全しなくてもコピーがいくらでも増やせるし、@nippondanjiさんのスライドにある通り、レプリケーションの妙技を駆使することで様々に柔軟な運用を行うことができます。 Art of MySQL Replication. slave 追加とは? さてそんなレプリケーションですが、実運用で最も多く行われるオペレーションは「slave の追加」だと思います。追加の方法は大きく分けると 2 通りです。(ストレージエンジンは InnoDB を想定。というか InnoDB 以外認めません><) 論理バックアップを利用 mysqldump 等を利用して論理的にデータの静止断面を作る&その時の binlog のポジションを

    MySQLでslave追加時にmasterが全力でbinlogを送って困る時 - As a Futurist...
  • mysqlコマンドをより便利に安全にするための小粒なTIPS集|サイバーエージェント 公式エンジニアブログ

    初めまして。2010年の3月に入社した oinume です。新年1月からウィルス性胃腸炎に罹りながらもなんとかこのエントリーを書いています。今回は、mysqlコマンドに関する自分が今まで学んだ&教えてもらった細かい実践的なTIPSを紹介します。小粒ですが何かの役に立てば幸いです。 edit (¥e)コマンド mysqlプロンプトにいながら任意のエディタでSQLが編集できちゃいます。具体的には、mysqlコマンドでプロンプト待ちの状態で mysql> edit のように edit または ¥e と入力すると、環境変数EDITORで設定してあるエディタが立ち上がりSQLが編集可能になります。編集が終わったらエディタを終了して ; とやればSQLが実行されます。viなどターミナルで動くエディタに慣れている人は長いSQLを編集する時に重宝する機能でしょう。この技は前職の同僚に教えてもらって、以降便

    mysqlコマンドをより便利に安全にするための小粒なTIPS集|サイバーエージェント 公式エンジニアブログ
    ouest
    ouest 2011/01/19
  • ソーシャルゲームのためのデータベース設計

    2. 自己紹介  MySQL/Linux周りのスペシャリスト  2006年9月から2010年8月までMySQL家(MySQL/Sun/Oracle)で APAC/US圏のMySQLコンサルティングに従事  主な著書に「現場で使えるMySQL」「Linux-DBシステム構築/ 運用入門」「Javaデータアクセス実践講座」  DeNAでの主な役割  安定化/パフォーマンス/運用周りの中長期的な改善活動  L3サポート/運用/トラブルシューティング – 難度の高いMySQL周りの問題の根原因の特定と解決  多くのプロジェクト支援  社内勉強会/トレーニング – MySQLやデータベース周りのベストプラクティスを社内で共有し、 技術スキルを底上げする  技術マーケティング – 国内外のカンファレンスや、技術雑誌等

    ソーシャルゲームのためのデータベース設計
    ouest
    ouest 2011/01/18
  • xtrabackupをちょっと便利に使う - かみぽわーる

    xtrabackupにはinnobackupexというラッパースクリプトが付属していて、MySQLのプロセスを止めることなくバックアップを取れて便利なんですが、innobackupexでバックアップ取ると以下の点が不満だったりする。 --slave-infoで生成されるCHANGE MASTER文が不完全なのでslaveの複製が面倒 InnoDBとMyISAMのファイルしかバックアップされない tritonnでsennaのインデックスファイルがバックアップされなくて困る そこで、innobackupexはPerlで書かれてるので直接書き換えてmaster.infoとsennaのインデックスファイルも一緒にバックアップするようにしたらslave簡単に複製できるようになって便利ですよ!

    xtrabackupをちょっと便利に使う - かみぽわーる
  • 性能調査は続く。。。

    SSD向けのチューニングは一段落ついたので、今回は別の話題です。 チーム内部では5.5版のXtraDBが色々ベンチマークされていて、その中で興味深い事象が発生しました。 ストレージはRAID10。SSDではないです。 書き込みも読み込みも両方のIOが激しくなる条件でベンチマークすると、書き込みが疎かになって modified_age が肥大化して同期flushを伴うチェックポイントが頻繁に発生してスループットが安定しないと言うのです。。。 「そんなのは、XtraDB側の問題じゃなくて OS/ハード の問題だろ!」 とは思ったのですが、読み込みIOのスループットを制限するパッチを作ってみました。modified_ageが大きくなったときに指定された割合で過去の最大スループットをベースに制限します。。。。 なかなか興味深いパッチができたのですが、その前に先方では解決した模様でした。 件の事象は

  • MySQLで多段slave

    いまデータベースサーバを物理的に交換する必要が発生してしまい メンテナンス準備をしています。 現在の構成としては db1.local(master) db2.local(slave) という構成なのですが、なるべくダウンタイムを短くしたいのが世の常でしょう。 そこで稼働中のサーバを止めずに準備をします。 目指す最終型はこんなの db1.local(master) db2.local(db1.localのslave) db3.local(db1.localのslave & master) db4.local(db3.localのslave) こんな構成にしておけば一瞬メンテナンス画面にして、DBへのアクセスを遮断 db3.localのslaveがmasterに追いついた時点でアプリケーションのDB接続先をdb3.localにして 運用という形にできるかなと。 メンテ中にファイルコピーとか

  • HA化機能を手に入れたSPIDERストレージエンジンにはもはや死角はなかった。

    ブログでも何度か取り上げたことのあるあのSPIDERストレージエンジンがさらにパワーアップして便利になった!8月にリリースされたバージョン2.22では次の2つの強化が行われている。 HA機能の追加(データノードの冗長化) LinuxおよびWindows用ビルド済みMySQLパッケージの配布 インストールが簡単になった!前回SPIDERストレージエンジンを紹介したときには、ソースコードからコンパイルする必要があり、なおかつMySQL体にパッチを適用しなければならず、利用するまでの敷居が高かったように思う。しかし、バージョン2.22よりSPIDERを含んだビルド済みバイナリが提供されたことにより、SPIDERを利用する手間はぐっと少なくなった。しかもこのビルド済みのバイナリにはSPIDERだけでなく各種パッチと、さらにはVPストレージエンジンまで含まれているという気の利きようだ。コンパイル

    HA化機能を手に入れたSPIDERストレージエンジンにはもはや死角はなかった。
  • 漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。

    InnoDBを使うとき、MyISAMと比較して度々やり玉に挙げられるポイントとして「COUNT()が遅い」というものがある。確かにInnoDBにおいて行数を弾き出すのにはテーブルスキャンが必要なのだが、そもそもMyISAMのCOUNT()が速い(テーブルの行数を保持してる)のが特殊なのであって、InnoDBが遅いわけではないのである。とはいえ、高速なCOUNT()については需要が多く、この問題には多くの人取り組んでおられるようだ。しかしながら、COUNT()のチューニングについては未だ語られていない点があるように見受けられるので、今日はCOUNT()のチューニングについて解説しようと思う。 COUNT(*)、COUNT(col)、COUNT(1)の違い基的なことではあるが、COUNT(*)とCOUNT(col)では意味が異なるため、異なる結果が返される場合がある。COUNT(*)はフェッ

    漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。
  • 知って得するInnoDBセカンダリインデックス活用術!

    InnoDBはクラスタインデックスという構造になっている。今日はクラスタインデックスがどういうことかということを、皆さんに理解して頂きたい。もっとも理解して頂きたいポイントは「セカンダリインデックスのリーフノードには主キーの値が含まれている」ということだ。 主キーの構造InnoDBの主キーは次の図のように「データが主キーのリーフノードに含まれる」という構造になっている。このような構造をクラスタインデックスという。 このような構造になっていることには利点と欠点があるが、大きな利点は主キーの値で検索をすると非常に高速だということだ。主キーのリーフノードにたどり着いたときには、既にデータのフェッチも完了している。データとインデックスが別々に格納されているタイプのストレージエンジンでは、インデックスからデータの位置を読み取って、その後データファイルからデータをフェッチする。このように二段階の操作が

    知って得するInnoDBセカンダリインデックス活用術!
  • MySQL 5.1.50リリース - SH2の日記

    すでにMySQL 5.1.51がリリースされていますが、最近のバージョンについて順番に確認していきたいと思います。 MySQL 5.1.50では24件のバグ修正が行われており、そのうちレプリケーションに関するものが1件、パーティショニングに関するものが2件となっています。InnoDB Pluginは順調にバージョンが上がって、1.0.11になりました。 今回はバイナリログまわりでImportant Changeが出ているので、内容をおさえておきましょう。 LOAD DATA INFILE文は、ステートメントベースのバイナリログにおいて安全でないと見なされるようになりました。ステートメントベースのバイナリログを使用している際にLOAD DATA INFILE文を実行すると、今後は警告が出力されるようになります。ミックスフォーマットを使用している場合は、LOAD DATA INFILE文を実行

    MySQL 5.1.50リリース - SH2の日記
  • 大人のためのInnoDBテーブルとの正しい付き合い方。

    InnoDB関連でよくある質問のひとつに「テーブルのメンテナンスは何をすればいいんですか?」というものがある。InnoDBMySQL 5.5でデフォルトストレージエンジンとなるため、InnoDBのテーブルメンテナンス計画を立ようと思う機会も増えることだろう。そこで、今日はInnoDBのテーブルメンテナンスの各種方法となぜそうしなければいけないかという理由を解説しようと思う。 ANALYZE TABLEテーブルメンテナンスの代名詞といえば、インデックス統計情報の更新ではなかろうか。運用を続けるうちに、知らず知らずインデックス統計情報が狂ってしまい、思うような性能が出ない。RDBMSにはそのような問題がつきものであるが、InnoDBの場合、ANALYZE TABLEは不要である。なぜなら、InnoDBが自発的に統計情報を更新するからだ。InnoDBは以下の条件に適合すると、ANALYZE T

    大人のためのInnoDBテーブルとの正しい付き合い方。