DeNAにおけるMySQL高可用ソリューションとオープンソース戦略 #ragpress #rag_tech0913

2011.9.13にリクルートエージェント 東京本社殿の会議室をお借りして開かれた、「DeNAにおけるMySQL高可用ソリューションとオープンソース戦略でのつぶやき」をまとめました。 講演: DeNA社「MySQLスペシャリスト Oracle ACE Director」松信嘉範氏 http://www.r-agent.co.jp/info/rss/event/oracle_ace/
13
きりの @imksoo

http://t.co/RPiyFmq ←これ RT @wasaist: MHAのアーキテクチャ マスターの稼働監視およびダウン時の自動フェールオーバーを実現するツール http://t.co/AqDB1JP にてOSSで公開されている #rag_tech0913

2011-09-13 19:42:11
MATSUO a.k.a マッツォ @understeer

#rag_tech0913 RT @uorat: MHA、モジュールの依存関係は少なくしているとのこと。インストール楽チン。

2011-09-13 19:43:58
きりの @imksoo

#rag_tech0913 たくさんの台数に導入することを考えて、CPANなどのモジュールにも極力依存しないようにしている。

2011-09-13 19:44:20
Neofact @NeofactJ

MHAの内部的動作の説明。差分同期の取り方を図解。 #rag_tech0913

2011-09-13 19:44:52
きりの @imksoo

#rag_tech0913 MHAの特徴: フェイルオー場の自動化。フェイルオーバーは秒単位で可能。非同期レプリケーションにもかかわらず、スレーブ間の同期が取れている。任意のスレーブを新マスターに出来る。いくつかのところから外部スクリプトを呼ぶ拡張ポイントを容易。

2011-09-13 19:46:31
和彩 @wasaist

主な特徴 マスターの稼働監視からフェイルオーバーまでを自動でできる。 フェイルオーバーが秒単位で可能。非同期オペレーションにもかかわらずスレーブ間での同期がとれる。 任意のスレーブを新マスターにできる。幾つかの箇所から外部スクリプトを呼ぶ機能がある #rag_tech0913

2011-09-13 19:47:02
Neofact @NeofactJ

DRBDについてのコメント、数分単位のリカバリが発生するため、サービスで使いにくい。MHAはact/act型なのでフェイルオーバが秒単位で可能。 #rag_tech0913

2011-09-13 19:47:34
Taro HIROSE @uorat

マスタの稼働監視からFOまでを自動化、FOが秒単位で可能、非同期レプリにも関わらずSlave間の同期が取れる、任意のSlaveをマスタに昇格出来る #rag_tech0913

2011-09-13 19:48:15
和彩 @wasaist

MySQL5.0以降であれば標準のMySQLで動作する。 インストール/アンインストールにあたり現在のmysqldプロセスやレプリケーションを止める必要はない #rag_tech0913

2011-09-13 19:49:35
Taro HIROSE @uorat

MHAインストール時に、今稼働中のmysqldを止める必要がない。Like! #rag_tech0913

2011-09-13 19:49:40
きりの @imksoo

#rag_tech0913 MHAの特徴続き: MySQL 5.0以降であれば標準MySQLで動作可能。MHA導入時にmysqldプロセスを止めずにすむ。MHA自体は追加の負荷をかけない。ストレージエンジン非依存。バイナリログのフォーマットにも非依存。

2011-09-13 19:49:55
Neofact @NeofactJ

MHAのインストールは既存のDBを止めずに行うことが可能。また追加の負荷をかけない。#rag_tech0913

2011-09-13 19:50:03
和彩 @wasaist

MHA自体は追加の負荷をかけないため、パフォーマンスが低下せず、追加のサーバも不要。 ストレージエンジンに依存しない。 #rag_tech0913

2011-09-13 19:50:11
和彩 @wasaist

拡張ポイント secondary_check_script マスターがダウンしたかどうかを複数のNW経路から判定するために呼ばれる マスターが接続エラーになったときに呼ばれる #rag_tech0913

2011-09-13 19:51:17
Taro HIROSE @uorat

電源オフスクリプト、これ大事。 #rag_tech0913

2011-09-13 19:51:57
和彩 @wasaist

shutdown_scipt 電源強制OFF フェイルオーバーの直前に呼ばれる master_ip_failover_script マスターIPあアドレスの更新やアプリケーションから接続するためのユーザ作成など #rag_tech0913

2011-09-13 19:52:36
Taro HIROSE @uorat

#rag_tech0913 RT @uorat: 内部動作の説明。転送の遅れたSlaveでRelay処理を実行、途中できれたトランザクションは、その一つ手前まで実行。その後、他のSlaveと同期を取る。

2011-09-13 19:52:51
Taro HIROSE @uorat

#rag_tech0913 RT @uorat: 単にチェンジマスタしてもデータが抜ける事もあるので注意しなければならない。どのスレーブにも転送されてないバイナリログをマスタから転送、スレーブ間のズレを解消、これらの作業が必要。

2011-09-13 19:53:13
きりの @imksoo

#rag_tech0913 MySQL自体は滅多なことでは落ちなくなってきたが、OS/HWなどの障害によって落ちることが多い。

2011-09-13 19:53:25
和彩 @wasaist

ケーススタディ DeNAのサービス(ソーシャルゲーム)において、150を超えるマスター/スレーブのペアに対して導入している #rag_tech0913

2011-09-13 19:53:47
和彩 @wasaist

OSダウンによりフェイルオーバーにはダウン検知に10秒、フェイルオーバーに4秒程度かかっている #rag_tech0913

2011-09-13 19:54:48
きりの @imksoo

#rag_tech0913 マシンダウンに9秒程度、その後フェイルオーバーで3~4秒ほど。

2011-09-13 19:54:56
Taro HIROSE @uorat

OSダウンによるFOには、ダウン検知に10秒、FOに4秒。速いなー。 #rag_tech0913

2011-09-13 19:55:02