MCCT20130926 tsakuradac2. 自己紹介
• 氏名:櫻田 剛史(さくらだ たけし)
• 所属:株式会社アルティネット
• Twitter id: @tsakurada
• MySQL Clusterと商用で丸4年関わった経験
を買われて(?)MCCTにお声がけ頂きま
した。どうもありがとうございます。
5. MySQL Clusterって?
• ユーザ視点で見ると、
– インメモリDBかつ高可用(MySQL CGE)
– ストレージエンジンがMyISAMでもInnoDBでは
なくてNDBであるものです(なので、関係者内
ではNDBとかNDBCLUSTERと呼ばれることが多
いです)
– もともとはNDBは全く別に開発されていたも
ので、MySQL AB(当時)に買収されて統合さ
れた(と聞いてます)
6. タイムライン
2008 2009 2010 2011 2012 2013 2014
構想・検証
★V7.0.5(GA)
★V7.1.3(GA)
★V7.2.4(GA)
★V7.3.2(GA)
★V6.3.8(GA)
運用中
14. MySQL Cluster構成検討
• 基本的な構成
SQL MGM
SQL/MGM 1号機
SQL MGM
SQL/MGM 2号機
データー 1号機
DATA
L2 SW
L2 SW
Web server Web server Web server Web server Web server Web server Web server
アプリケーションレイヤー
データベースレイヤー
データー 2号機
DATA
データー 3号機
DATA
データー 4号機
DATA
14
19. ノード構成のパターン検討
構成
タイプ
MGM
ノード
SQL
ノード
DATA
ノード
合計ノー
ド数
説明
I 1 1 1 3
最小構成(冗長化無し)
試験・開発環境ならば使えるがそれ
以上の意味が無い
II 2 2 2 6 単一障害点(SPOF)無しの冗長構成
(基本形)
III 2 2 4 8 保存するデータ量(件数)が大きく
なった場合
IV 2 4 2 8 アクセスピークに応じて処理性能を
向上させたい場合
V 2 8 4 14 データ量と処理性能の両方に要求レ
ベルが高い大規模システム
VI 2 2 3 7 データノードの冗長化を2重ではな
く、3重にした場合(レプリカ数3)
VII 2 2 6 10
データ量が多く、データノードを増
やして対応した場合(レプリカ数
2)
※完全にPK(主キー)に帰着できるアプリにできないのであれば、データノードの数は最大でも4程度に止めた方が良い。
19
25. GCP Stop!
• GCP: Global Check Point
• GCPは(デフォルトだと2秒毎に) HDDに
メモリ上の更新ログを書き出しています
が、これが何らかの理由で停止すると…
• データノードがシャットダウンしてしま
います
26. GCP Stop!
• 例えば…
– UPDATE テーブル名 SET カラム名=値 WHERE 条件
– 一度のコミットにかかる時間が一定閾値を超過し
た場合(=更新対象となる行数が多数(数万件)
になった場合など)に発生してしまいます
– なので、UPDATEする時には実際に何件が更新対
象となるのかアプリ側で把握してクエリを発行す
る必要があります
– 最新バージョン(V7.3)では閾値を無制限に指定で
きるのでその策で逃げる方法もありますが、本当
に異常が発生した場合のDBが固まってしまうリ
スクが発生します。