Inside pixiv's infrastructure〜application cluster side〜 in PHPカンファレンス2013Read less
注意 このエントリは、会社の公式見解などでは全くありません。 社内のエンジニアたちのグループチャットで聞いて、集まった意見をまとめただけです。 このエントリはただの備忘録として書き留めただけだったのですが、 全く予想外に、多くの反響を頂き戸惑っています。。 頂いたコメントの中には「このレベルも知らないでクックパッドに入れるのか」といったものもありましたが、 一応、個人的には、例えばDB周りだとオラクルシルバ取得程度の知識はありますm()m 「良い環境にいるのだから改めて初心で勉強したい」という旨で皆に尋ねた結果であり、、 もしガッカリさせるようなことがあれば非常に心苦しいです。 良くも悪くも自分がこれらを消化できるかという話なので、 ここに並んでいる本を見てクックパッドをどうこうは思ってほしくないです。。 申し訳ありません。。。 summary the books which I have
任意のSQLクエリで取得した結果の差分から、insert/update/deleteイベントを検知するプラグインをリリースしました。イベント検知だけでなく、レコードの内容と共にElasticsearch/Solrへ同期を行う、Outputプラグインも同封しています。 これはあえてバイナリログ(MySQLBinlogAPI)は使わずに、SQLクエリの実行結果の差分を見てinsert/update/deleteイベントを検知します。 そのため、純粋なテーブル同期だけでなく、任意のJOINやVIEWテーブルを元とした差分同期処理が実現できるのが特徴です。 y-ken/fluent-plugin-mysql-replicator https://github.com/y-ken/fluent-plugin-mysql-replicator http://rubygems.org/gems/flue
俺のMySQL秘伝スクリプトが火を噴くぜ #mysqlcasualDecember 8, 2013 by Yudai Suzuki このエントリーはMySQL Casual Advent Calendar 2013 8日目の記事です。 というわけで、僕が仕事で書いた秘伝のタレの一つを紹介します。 まず、秘伝のタレを作った背景というのが、先日mysqlcasualでLTした IBM DB2からMySQLへの移行 の中で、唯一移行できなかったマーケティングの用途で使用されているDBにあります。 移行できなかった理由は、もういない人が残していった謎の集計用バッチが大量に動いており、何をしているのかわかる人もおらず、当然ドキュメントも残っていないため、動かすことができなかったからでした。 とはいえ、このままDB2を使い続けるわけにはいかなかったので、僕がブラックボックスに手を入れることになりました
この記事はMySQL Casual Advent Calendar 2013 3日目の記事です。 はじめに 以前にSELECT ... FOR UPDATEとロックの挙動 - walf443's blogの記事にTwitterで少し言及したんですが、それの補足というか、InnoDBのロックの範囲について僕はこう理解していますよという話です。 MySQLといえば、InnoDBをネットワークサーバとして使うためのフレームワークであり、SQLはInnoDBのインデックスにアクセスするためのDSLといっても過言ではないでしょう。 InnoDBのロックとはつまるところインデックス行のロックなので、InnoDBのロックの範囲を理解するためにInnoDBのインデックスについて少し前置きしておきます(だいぶ端折ったけど長くなった…)。 クラスタインデックスとセカンダリインデックス すでにInnoDBのイン
■■序論 徳丸さんのスライド「いまさら聞けないパスワードの取り扱い方」に見られるように、昨今、ウェブアプリケーションの設計要件として、サーバ内に侵入された場合でもユーザーのパスワードをできるだけ保護すべきという論調が見受けられるようになってきました。 上掲のスライドでは、その手法としてソルトつきハッシュ化を勧めています。しかしながらスライドに書かれているとおり、ソルトつきハッシュには、複雑なパスワードの解読は困難になるものの、単純なパスワードを設定してしまっているユーザーのパスワードについては十分な保護を提供できないという問題があります。そして、多くのユーザーは適切なパスワード運用ができない、というのが悲しい現実です。 ソルトつきハッシュを使った手法でこのような問題が残るのは、ウェブアプリケーションサーバに侵入した攻撃者がユーザーの認証情報をダウンロードして、認証情報をオフライン攻撃するこ
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_
数年前になんとなく面白がって書いてた「Linux系インフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)」というのが、昔の資料をあさってると出てきて、意外と面白かったので少しだけ手を加えて(古い情報とかあったので)公開しようと思います。 意外とリアルなものがあって懐かしい気分になりました。過去に書いた以下の記事もどうぞ参考にして下さい。 「Linuxエンジニアを目指して入社一年目にやって役にたったと思う事」 「Linuxエンジニアを辞めて大学院に入学しました」 追記: 設問1があまりによくないので、@tagomorisさんのアドバイスを頂きつつ変更しました。1を消して3を追加しています。ありがとうございます! 2000台以上のサーバー運用経験はありますか? サーバやネットワーク機器のキッティング経験はありますか? サーバやネットワーク機器の交換を現地のデータセンター職員に
http://blog.fusic.co.jp/archives/1765 ↑postgresの記事ですが、mysqlでも同様に実行できました。 SELECT * FROM test_table WHERE (col,co2) IN -- 複数のカラムを指定 (SELECT subcol1,subcol2 -- 副問いの戻り値も複数のカラムを指定 FROM subtable WHERE id > 10 ) 知らなかったなんて、お恥ずかしい ※手元にあるmysqlはv.5.1.61ですが、v.4.1から使えるらしい sqlの仕様として、mysqlのdocでは分かりませんでしたが、sql99から利用可らしい http://dev.mysql.com/doc/refman/5.1/ja/comparison-operators.html ↑では、分かりませんでしたが、次のurlよれば、sql99
おそらく世界でもっとも大規模にMySQLのクラスタを展開し、運用しているのがFacebookでしょう。複数のデータセンターにまたがり何千台ものMySQLサーバを運用するために、自動化の仕組みは欠かせません。 その自動化がどのような仕組みになっているのか。FacebookのデータベースエンジニアであるShlomo Priymak氏が、Under the hood: MySQL Pool Scanner (MPS)という記事をFacebookで公開しています。 かなり長い記事なので、ここではそのポイントをまとめて解説してみました。詳細はぜひ原文をあたってみてください。 MPSのおもな3つの機能 Facebookで稼働しているMySQLは、つねに1つのマスターとそこからレプリケーションされた複数のスレーブによるレプリカセットを構成しています。このレプリカセットの構造を維持し続けることで、可用性と
MySQL Casual Talks vol.5 メモ 2013-10-26 MySQL Casual Talks vol. 5に行ってきたので、自分なりのメモと資料へのリンク。 途中、アラートが鳴り始めて確認してたりしてメモが適当なところがあるが仕方なしw かなりのスピードでじゃんじゃんプレゼンが進んで行ったが、どれも面白い・役立つ内容ばかりで、楽しいひと時でした。発表者の皆様、会場の提供や調整などしてくださった@myfinderさんはじめとする皆様、ありがとうございました。自分の隣でビール缶を次々と「カシュッ」と空けていた@oranieさんのような余裕を持ちつつ、次回は自分も何かネタを提供できるといいなあ。 @yuryuさん GTIDを使い始めてやめた話 GTID - 全てのトランザクションを一意に識別、一貫性保証 マスタを切り替えると、マスタのUUIDが変わるのでGTIDが2個になる
https://www.facebook.com/notes/facebook-engineering/under-the-hood-mysql-pool-scanner-mps/10151750529723920 Facebookがエンジニアブログで、MySQLの運用を自動化している事例を紹介しています。このレベルまでくると、意思をもった大規模なロボット群みたいで、すごいですね。前半はマスタ/スレーブの基本的な自動化の話ですが、後半ではオペレーションの自動化ロジックをどのように自動化して増やすかという手法まで言及してます。 FacebookのMySQL DBクラスタは、2つの大陸にまたがる複数のデータセンタにある数千台のサーバで構成されている。通常、DBアドミンが担当するルーティーンワークは、MySQL Pool Scanner (MPS) で自動化されている。 1) DBノードを詳しく
いやまあ、マニュアルに書いてあるけど。 http://dev.mysql.com/doc/refman/5.6/en/option-files.html Linuxで公式MySQL、--defaults-file, --defaults-extra-fileを指定しない場合は、 /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf SYSCONFDIR/my.cnfのこと。 公式のバイナリーはSYSCONFDIR== /usr/local/mysql/etc。cmakeのオプションで変えられる。 MariaDBはこいつが設定されていないっぽい。 /usr/local/mysql/my.cnf $MYSQL_HOME/my.cnfのこと。 basedirを設定してれば$MYSQL_HOME== basedirになる。 /home/
1. MySQL Admin が見た Devs の常識、 DBA は非常識 2013/09/14 yoku0825@MyNA PHP Conference 2013 2. \こんにちは!/ ● yoku0825 ● とある企業の DBA ● MySQL 歴 5 年くらい ● オラクれない ● ポスグれない ● 嫁の夫 ● せがれの父 ● 日本 MySQL ユーザ会 (MyNA) のスベり担当 3. \しゃべること!/ ● 日常的に MySQL のソースコードに触れる変態 DBA がフツーの Devs に投げた愛のマサカリ集 ( のつもり ) ● ウチの開発言語は PHP > Java >> Ruby らしいです ● ウチでは DBA がサーバーの構築、 Devs が設計・ テーブル構築・運営、 DBA はトラブルシュートや改 善提案 ( 運用 ) 、というサイクルで回しています。
FrogApps 技術ブログ始めました! RailsやiOS、HTML5の情報を発信中!! → http://qiita.com/teams/frogapps データベースを運用していると、一気にデータを投入したり、更新する必要が出てきます。 MySQLではINSERT文では複数行同時に更新できますが、UPDATEでは用意されていません。 そこで、UPDATEとJOINを組み合わせて、既存のテーブルを一気に更新してみます。 例) original_dataテーブルのbodyの値を複数行一気に更新する まずは元データを作ります。 CREATE TABLE tbl1(id INTEGER PRIMARY KEY, body VARCHAR(255)); INSERT INTO tbl1(id, body) VALUES(1, '001'); INSERT INTO tbl1(id, body)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く