MySQL Cluster構築・運用バイブル
~仕組みからわかる基礎と実践のノウハウ
~仕組みからわかる基礎と実践のノウハウ
2012年4月10日紙版発売
2013年1月29日電子版発売
奥野幹也 著
A5判/448ページ
定価4,730円(本体4,300円+税10%)
ISBN 978-4-7741-5053-6
ただいま弊社在庫はございません。
書籍の概要
この本の概要
MySQLのストレージエンジンとして動作し,スケールアウトや高可用性のニーズに応えてくれるのがMySQL Cluster。RDBMSとNoSQL両方のインターフェイスを持つ「NewSQL」の先駆けといえる同ソフトの日本ではじめての解説書です。やや難解な部分も,現場で数々のサポート経験を持つ奥野幹也氏の濃くわかりやすい解説で対応。特有の落とし穴にはまらないためのポイントを,コンパクトでどこでも参照できるサイズに詰め込みました。memcached APIをサポートしたバージョン7.2に対応。
こんな方におすすめ
- システムの可用性を高めたい方
- 複数のサーバで同時に更新と参照を行えるようにしたい方
- 既存のアプリとSQLの互換性を保ちたい方
著者の一言
昨今,サーバーサイドアプリケーションの重要性は高まるばかりです。当初は単一のコンピュータで運用していたRDBMSでも,求められるサービスレベルが高くなれば様々なニーズが生じてきます。
- 「高可用性構成にしたい」
- 「複数のサーバーで同時に更新と参照を行えるようにしたい」
- 「既存のアプリと SQL の互換性を保ちたい」
そのような悩みを一手に解決する手段の1つがMySQL Clusterです。
MySQL ClusterにはRDBMS機能だけでなく,スケールアウトや高可用性を実現する機能が搭載されています。他に追加でソフトウェアを導入する必要はなく,MySQL Clusterを使えば,大規模な並列分散型のシステムであってもアプリの開発やデータベースの管理がとてもシンプルになります。
さらに最近「NoSQL」というキーワードが流行していますが,MySQL ClusterにもNoSQLインターフェイスが備わっています。RDBMSとNoSQL,両方のインターフェイスを持つソフトウェアを「NewSQL」などと呼ぶようになっていますが,MySQL Cluster はまさにその先駆けです。登場した当時からNDB APIという独自のNoSQLインターフェイスを持っていました。
それだけでなく,バージョンが上がるごとに様々な新しいNoSQLインターフェイスが追加されてきました。最新のバージョン7.2では,Web開発で人気の高いmemcached APIをサポートするようになっています。APIこそmemcachedですが,データはMySQL Clusterに蓄積されるため,データは永続性を持ちます。しかも同じデータにSQLでもNoSQLでもアクセスできるのです!
そのような素晴らしい技術ながら,「複数のコンピュータを使って構成する」という複雑さのため,そして日本語の解説書がないため,MySQL Clusterに手を出しにくい方は多いのではないでしょうか。そこで,筆者は筆をとりました。
本書はかなり幅広いトピックをカバーしています。MySQL Clusterは複数のコンピュータで運用するため単体のコンピュータで動くRDBMSよりも管理が難しい側面もありますが,本書を手にしたならば恐れることはありません!
MySQL Clusterという尖った技術を,みなさんが役立てられることを願っています。
この書籍に関連する記事があります!
- 大規模Webサービスの開発と管理を効率化するMySQL Cluster,世界に先駆けてバージョン7.2対応の書籍がリリース!
- 大規模化するにつれ,高いサービスレベルが求められつつあるサーバーサイドアプリケーションにおいて,「開発や管理をもっと効率化したい!」と思う方は少なくないはず。そのような悩みを一手に解決する手段の1つがMySQL Clusterです。
目次
第1章 MySQL Clusterのコンセプト
1-1 MySQL Clusterの特徴
- MySQL Clusterのユースケース
- MySQL Clusterの13の特徴
- シェアードナッシングアーキテクチャの強み
- コラム NDBCLUSTERストレージエンジン
1-2 アーキテクチャ概要
- 3種類のノード
- ノード間でデータの連係をとる仕組み
- 複製されたデータが同じであることを保証する2フェーズコミット
- データを永続化するための2つのチェックポイント処理
- 全体の性能低下を防ぐための仕組み
- データノードの内部構造をのぞく(NDBカーネルブロック)
第2章 インストールと設定
2-1 システム計画のポイント
- 3つ以上のレプリカ数を選択する際は慎重に
- ネットワークの分断でシステムを停止させない仕組み
- トポロジーの4つの方針
- コラム マルチサイトクラスター
2-2 システム要件のポイント
- サーバマシンを選定するうえで確認すべきこと
- 各ノードごとのハードウェア選定基準
- ネットワーク設計の2つのポイント
- コラム MySQL Clusterにとってのサーキット
- ディスクオブジェクトを利用する
- コラム ディスク型テーブルのクラッシュリカバリ
2-3 パッケージをインストールする
- RPMパッケージのインストール
- 全部入りパッケージのインストール
- コラム 権限テーブルを同期させる
2-4 設定ファイルを変更する
- config.iniの書式
- 管理ノードのオプション
- コラム 運用中にオプションを変更したいときに知っておきたい4つの再起動
- データノードのオプション
- メモリ割り当て
- トランザクション
- チェックポイント
- コラム REDOログのサイズはLCPとGCPのデータサイズに依存する
- バックアップ
- その他のオプション
- SQLノードのオプション
- トランスポーター(TCP)のオプション
- config.iniの設定例
- コラム 直結する場合もBondingドライバなどで経路を冗長化しておく
- コラム InfiniBandは利用できるか?
- コラム 仮想環境における設定値
第3章 基本操作を身につける
3-1 本章で利用する設定
3-2 MySQL Clusterを起動/停止する
- 下準備
- 起動手順
- 停止手順
3-3 コマンドオプションを把握する
- 共通の起動オプション
- 管理ノードの起動オプション
- データノードの起動オプション
- SQLノードの起動オプション
3-4 状態を確認する
- 管理ノード上でステータスを確認する
- SQLノード上でステータスを確認する
第4章 アプリケーションを開発するために知っておくべきこと
4-1 スキーマ設計のポイント
- テーブルを作成する
- 3種類のインデックスを把握する
- 主キーとユニークインデックスの2重構造の理由
- 5通りのインデックス構成を使い分ける
- コラム T-TREEインデックス=
- テーブルサイズを見積もる
- コラム 最新版に対応したサイジングツール「sizer」
- テーブルの定義を調べる
- ディスクオブジェクトを利用する
- コラム ディスク型テーブルを使う上での7つの注意点
- テーブルスペースを作成する
4-2 テーブルのデータを操作する
- テーブルへアクセスする2つの方法
- アプリケーションとSQLノードを同居させる
- SQLに関する制限事項
第5章 NoSQLとしてのMySQL Cluster
5-1 SQLより高い性能を発揮するNDB APIとは
- NDB APIを利用するのに必要なもの
- NDB APIを用いてアプリケーションをビルドする
- コラム GNU Autotoolsを利用して移植性を高める
5-2 プログラミングのポイント
- プログラミングの流れ
- 例1:レコードの参照
- 例2:レコードの挿入/更新/削除
5-3 スキャンの概要
- 例3:スキャン
5-4 リトライ処理を実装してエラーハンドリングする
- 例4:エラーハンドリング
5-5 ClusterJを利用する
- ClusterJの使い方
- 例5:ClusterJのサンプル
- コラム:さらにもっと詳しく知りたい方は
5-5 memcached APIを利用する
- memcachedの利点
- NDB-memcachedをセットアップする
- プレフィクスを設定する
第6章 最大限の性能を引き出すパフォーマンスチューニングの原則
6-1 基本的な設定を見直す
- 省電力機能を停止する
- NUMAの利点を生かす
- スレッド数を調整する
- Hyper-Threadingをオフにする
- コネクションプールを利用する
6-2 リアルタイム処理を効率化する
- 特定のCPUにスレッドの処理を割り当てる
- リアルタイムスケジューラーを利用する
6-3 SQLを工夫する
- JOINを高速化する
- ユーザー定義パーティショニングを利用する
- エンジンコンディションプッシュダウンを利用する
- コミットのサイズを調整する
6-4 その他の対策
- SSDを利用する
- ノード追加の効果を最大化する
- 高速なインターコネクトを利用する
- NoSQLを利用する
第7章 レプリケーション
7-1 レプリケーションの基礎
- Clusterレプリケーションのメリット
- レプリケーションの仕組み
7-2 Clusterレプリケーションをセットアップする
- 新規にセットアップする
- 既存のClusterにスレーブを追加する
- デュアルチャネルでフェイルオーバーを実装する
7-3 マルチマスターレプリケーションと衝突検出
- 衝突検出の5つの方式
- 衝突検出を設定する4つのステップ
- アプリケーションを実装する際の注意点
- ステータスを監視する
7-4 InnoDBへのレプリケーション
- 前提条件
- レプリケーションの設定手順
- マスター側のSQLノードを多重化しておく
- InnoDBをスレーブにする場合の注意点
7-5 レプリケーション利用時に注意すべきこと
- バイナリログを記録するSQLノード数を調整する
- 同じぐらいのスペックのサーバーを利用する
- スレーブの更新性能を高める
- Clusterレプリケーションを監視する
- コラム レプリケーション関連のオプション
第8章 監視のポイント
8-1 プロセスを監視する
8-2 ステータス表示コマンドを利用する
- 管理ノード上からステータス情報を得る
- コラム MasterとPresident
- データのステータスを表示する
- SQLノード上のコマンドでステータスを確認する
- コラム MySQL Cluster NDB 7.0でNDB$INFOを有効にする
8-3 ログ
- クラスターログ
- ノードログ
- データノードのエラーログとトレースログ
- コラム データノードのコアファイルの注意点
- SQLノードのログ
- コラム クラスターログに記録されるイベント
第9章 メンテナンスのコツ
9-1 バックアップとリストア
- バックアップとリストアの基本
- バックアップの準備をする
- バックアップを実行する
- バックアップの進捗状況を監視する
- バックアップを中止する
- リストアを実行する
- 特定のテーブルだけをリストアする
- バックアップファイルをCSVファイルに変換する
- ログファイルを適用する
- コラム ログファイルの中身
- Epochをリストアする
- リストアを高速化する
- シングルユーザーモードを利用する
- ロールフォワードリカバリを使う
- コラム バイナリログの意味を考えてみよう
9-2 テーブルをメンテナンスする
- テーブル定義を変更する
- インデックス統計情報を更新する
- テーブルを最適化する
- コラム フラグメンテーションが起きていることを検知するには?
9-3 ローリングリスタート
- 管理ノード
- データノード
- SQLノード
9-4 データノードを追加する
- 1. マシンの準備
- 2. config.iniを編集
- 3. ローリングリスタート
- 4. 追加したデータノードを起動
- 5. ノードグループを構成
- 6. データを再分散
- 7. 空いた領域を回収
- コラム SQLノードを追加する場合のポイント
9-5 アップグレード
- アップグレードのリスクと向き合う
- ローリングアップグレード
- オフラインアップグレード
- レプリケーション構成のアップグレード
- リハーサルのポイント
第10章 典型的なトラブルと対処法
- 10-1 GCP Stopが起きたら
- 10-2 スプリットブレインが起きたら
- 10-3 エラー処理に対応するには
- 10-4 Watchdog Timeoutに対処するには
- 10-5 Swap Insanityに対処するには
- 10-6 起動時の問題に対処するには
- コラム もしもバグだと思ったら
Appendix
- A-1 データノードのオプション
- A-2 ステータス変数
この本に関連する書籍
-
データベースの限界性能を引き出す技術 ~NoSQLに飛びつく前に知っておきたい原理と最新テクニック
「RDBMSだと大規模データをうまく扱えない」といわれ,NoSQLのような代替技術が生まれてきていますが,本当でしょうか? ビッグデータ時代でもシステムの中核として...
-
はじめてのHadoop ~分散データ処理の基本から実践まで
「いままで数千時間かっていた処理が,100分の1以下の時間で終わるようになった」 など,大量/多種のデータを効率よく処理できる手段として注目されているHadoopの仕...
-
Webエンジニアのためのデータベース技術[実践]入門
Software Designの好評連載「データベース技術の羅針盤」の内容を中心に,加筆・修正を加えて書籍化しました。「データベースがないと何が困るのか」という読者へのアプ...
-
即戦力のDB2管理術 ~仕組みからわかる効率的管理のノウハウ
「なぜ,その操作が必要なのか?」という本質,「こういう仕組みになっているからこうする」という背景をきちんと押さえながら,DB2の効率的な管理のための考え方やテク...
-
エキスパートのための MySQL[運用+管理]トラブルシューティングガイド
高額なデータベースシステムでなくとも十分との認識が広まったことから,MySQLがクローズアップされて久しい。すでに書籍も少なからず出版されていますが,多くの場合は...