Cluster」を利用するためのチュートリアルとなるように、その特徴と基本的なアーキテクチャからインストール方法、基本的な操作などをコマンド付きで解説していきます。Clusterのインストール方法と基本的な設定および操作について紹介します。Clusterのインストール方法には、以下の方法があります。上記以外にもソースコードからビルドする方法もありますが、公開されているバイナリはすでにコンパイルオプションの最適化などが行われているため、ソースコードを変更して機能の追加/削除を行う場合を除いておすすめできません。Xなど、主要なOS上での動作がサポートされています。Clusterの各バージョンとサポート対象OSについては下記のサイトを参照してください。Clusterには特別なハードウェア要件はありません。簡単な動作検証であれば最近のノートPC程度のスペックでも十分にインストール可能です。考慮すべき点は、データやインデックスをメモリ上に格納するためデータ量に応じて必要となるメモリサイズが大きくなることですが、ある程度のメモリサイズはディスクテーブル機能により削減できます。ノード間で頻繁にTCP/IP通信が行われるため、ギガビットイーサネット以上のネットワーク環境が推奨されます。同時アクセス数が大きなシステムではインフィニバンドを利用している例が多数あります。実際のシステムへの導入に当たっては、通常プロトタイプとなるアプリケーションを用いたテストを行ってハードウェアのスペックを決定していきます。Clusterのインストールパッケージは下記のサイトからダウンロード可能です。Platform:」のプルダウンから対象のOSを選択し、必要なファイルをダウンロードしましょう。Installer)と必要なファイルをまとめたzipファイルが用意されています。インストールされたファイルを管理したり、サービスとして起動したりする場合などはGUIインストーラが便利です。zipファイルは展開するだけで利用でき、レジストリも汚さないため検証などの用途に使いやすいほか、手動でOSサービスに登録するなどで起動/停止方法を用意すれば本番環境での利用も問題ありません。Linux環境には各ディストリビューション向けのパッケージ(rpmやdeb)と、ディストリビューション共通のtar.gzファイルが用意されています。Linux環境でのインストール手順ここでは、Linux環境でディストリビューション共通のtar.gzファイルを利用したインストール方法を説明します。Generic」を選択することでダウンロード可能です。以降の説明では、下記のシステム構成を想定して説明していきます(図1)。Cluster構成図とディレクトリ配置ファイルの展開と基本的な設定バイナリのインストールはtar.gzファイルを展開するだけでおおむね終わってしまいます。以降の作業を行いやすく、また本番環境などではバージョンを切り替えやすくするために、展開先のディレクトリにシンボリックリンクを張っておきます(リスト1)。data/mgmdSQLノードは通常のMySQLサーバと同様にmysql_install_dbコマンドで権限テーブルなどを作成する初期化処理も行います。リスト1の例では後述の設定ファイルを指定しています。必要となる設定はSQLノードのmysqldが起動時に読み込む設定ファイル「my.cnf」と管理ノードが保持するクラスタ全体の設定ファイル「config.ini」です。SQLノードの設定項目SQLノードの設定ファイルは通常のMySQLサーバと同様にmy.cnfを使います。Cluster固有で最低限求められる設定項目は表1の通りです。管理ノードのIPアドレス(またはホスト名)およびTCP/IPポートを指定ndbclusterは設定ファイルに記載または起動オプションに設定するだけでNDBCLUSTERストレージエンジンが有効になります。明示的に値を設定する必要はありません。ndb-connectstringで管理ノードの情報を指定すると、SQLノードは起動時に管理ノードからクラスタ全体の構成情報を取得します。Cluster固有のMySQLサーバの設定項目の詳細は下記のサイトを参照してください。Serverオプションhttp://dev.mysql.com/doc/refman/5.6/ja/mysql-cluster-program-options-mysqld.htmlなお、1つのOS上で複数のSQLノードを起動する場合、表2の項目についてノード毎に重複しない値を設定しておく必要があります。これは通常のMySQLサーバを複数起動する場合でも同様です。UNIXソケットファイル以上を踏まえて作成した設定ファイル(my1.cnf)の例がリスト2です。管理ノードでは下記の3点を設定ファイル(config.ini)に記述しています。データノードは固有の設定ファイルを持たないため、データノードへの設定はすべて管理ノードの設定ファイルに記載しておきます。リスト3は管理ノードの設定ファイルの例です。])で記載されたノードの数だけ起動可能です。DataDirで指定される管理ノードとデータノードのデータディレクトリはあらかじめ作成しておきます。前述した通り、データノードは設定ファイルを持たず、個別設定項目は管理ノードの設定ファイルに記載します。データノードは起動時には、コマンドラインオプション-ndb-connectstringで管理ノードを指定しておき、設定情報を管理ノードから取得します。Clusterの初回起動時には、管理ノードの起動時に--initialオプションを付けて設定ファイルを読み込みます。その後、各データノード→各SQLノードの順に起動していきます。クラスタ全体を停止する際は、まずSQLノードを停止してアプリケーションからクラスタへアクセスできないようにし、その後管理ノードにクラスタの停止命令を出して各データノードを停止し、最後に管理ノードを停止します。クラスタの起動と簡単な稼働確認リスト4の例では、まず--initialオプションを付けて新しい設定ファイルを読み込んで管理ノードを起動しています。続いて2つのデータノードを起動し、管理ノードクライアントのndb_mgmコマンドから管理ノードに接続し、SHOWコマンドでクラスタの状態を確認しています。connected」と表示されています。ここで、さらに2つのSQLノードを起動し、管理ノードからクラスタの状態を確認します(リスト5)。設定ファイルはSQLノード毎に「my1.cnf」と「my2.cnf」という名称にしています。クラスタの状態確認には、管理ノードクライアントの-eオプションを使用して管理ノードに直接コマンドを実行しています。ndb-7.4.6)ここではSQLノード起動時の出力を割愛していますが、通常のMySQLサーバの起動時とは異なりNDBCLUSTERストレージエンジンの各種メッセージも併せて表示されます。第1回で、NDBCLUSTERストレージエンジンを使ったテーブルがSQLノード上に作成されるわけではないと解説しましたが、このことを確認してみます。InnoDBストレージエンジンを使ったテーブルがSQLノード上に作成されることも併せて確認してみます。existクラスタの停止SQLノードの停止は通常のMySQLサーバと同様にmysqladminのshutdownコマンドを利用します(リスト7)。shutdownこの時点で、アプリケーションからデータにアクセスできなくなっています。SQLノードを停止する前にデータノードを停止してしまうと、アプリケーションからのSQL文は受け付けるものの、データにたどり着けないというエラーとなります。続けて、管理ノードで停止命令を実行すると、すべてのデータノード停止後に管理ノードも停止します(リスト8)。QUIT管理ノードクライアントの-eオプションにshutdownコマンドを付けても、同様に各ノードを停止できます(リスト9)。Clusterのインストール方法と基本操作について解説しました。Clusterの主な設定について解説する予定です。※本稿において示されている見解は、私自身の見解であって、私の所属するオラクルの見解を必ずしも反映したものではありません。日本オラクル株式会社MySQLのセールスコンサルタント。元々はOracleデータベースのコンサルティング、サポート等に従事していたが、オープンソースとフリーソフトウェア(自由なソフトウェア)の世界に興味を持ち、MySQLの仕事を始める。趣味は旅行と美味しいものを食べること。Clusterにおけるチューニングの基礎について解説します。Clusterにおけるレプリケーション環境構築の具体例について解説します。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。