TOPサーバ構築・運用【データベース夏の陣】MySQL Clusterを試す!> 第3回:3種類のノードをセットアップ! (3/3)




【データベース夏の陣】MySQL Clusterを試す!

【データベース夏の陣】MySQL Clusterを試す!

第3回:3種類のノードをセットアップ!

著者:サン・マイクロシステムズ株式会社 奥野 幹也

公開日:2008/7/15(火)

はてなブックマークの登録数

SQLノード
 SQLノードの実体はmysqldです。つまり、通常のMySQLサーバーに対してNDBストレージエンジンが使用できるような設定を行います。設定は通常のMySQLサーバーと同様、my.cnf/my.iniにおいて行います。[mysqld]セクションに必要な設定を記述しましょう。

 必要最低限の設定は、ndbclusterとconnect-stringです。前者はMySQL Clusterのストレージエンジン(NDB)を有効化するためであり、後者はデータノードと同様に管理ノードへの接続を確立するためのオプションです。my.cnfは次のようになります。

[mysqld]
ndbcluster
connect-string=192.168.1.40

 すべてのデータをMySQL Clusterへ格納するのであれば、skip-innodbオプションを使用して、InnoDBを無効化するといいでしょう。そうすることでMySQLサーバーの起動が早くなりますし、メモリやCPUの使用を抑えることが可能です。

 また、MySQL Clusterを使用する場合にはクエリキャッシュを無効にしておきましょう。MySQL Clusterのデータは複数のMySQLサーバーで共有されるのですが、クエリキャッシュは個別のMySQLサーバーだけで有効なのでデータの同期が取れない場合が生じるからです。

 MySQL Clusterにおいて使用するMySQLサーバーではあまり多くのメモリは必要ありません。ただしソートや結合を処理する必要があるので、接続ごとに必要なバッファ(ソートバッファなど)を適切に割り振りましょう。

 MySQLサーバーを実行するユーザーは、root以外のものを使用しましょう。前述と同じ手順でmysqlというユーザーを、sql1ゾーンとsql2ゾーンにおいて作成してください。

 準備が整ったらMySQLサーバーを起動しましょう。まずはグローバルゾーンからsql1ゾーンへ接続します。

shell# zlogin sql1

 今回は/var/lib/mysqlというディレクトリを、データディレクトリとして使用します。ここにはMySQL Clusterのデータは格納されませんが、各テーブルに対応した.frmファイルや、権限テーブルが格納されます。mysql_install_dbスクリプトを用いてデータディレクトリを初期化しましょう。

shell@sql1# su - mysql
shell@sql1> /user/local/mysql-cluster/scripts/mysql_install_db --datadir=/var/lib/mysql

 MySQLサーバーを起動するにはmysqld_safeスクリプトを使用します。通常の場合と全く同じ手順ですね。

shell@sql1> mysqld_safe &

 MySQLサーバーが起動したら、mysqlコマンドを使って接続しましょう。

shell@sql1> mysql -root

 SHOW ENGINESでndbclusterのサポートがYESになっていれば設定は成功です。また、SHOW ENGINE NDB STATUSコマンドを使用すると接続状態を確認することが可能です。

mysql> SHOW ENGINES;
mysql> SHOW ENGINE NDB STATUS\G

 管理クライアントでSHOWコマンド実行すると、SQLノードが接続している様子を見ることができます。

 同様に、sql2ゾーン上でもMySQLサーバーを起動しましょう。
図3:my.cnfのサンプル
テーブル操作
 MySQL Clusterを用いてテーブルを定義するのは非常に簡単です。ENGINE=NDBをテーブル定義の際に用いるだけです。例えば非常にシンプルなただ1つのカラムだけを持つテーブルを定義するには以下のように行います。

mysql> CREATE TABLE testdb.testtbl
-> (a BIGINT UNSIGNED NOT NULL PRIMARY KEY)
-> ENGINE=NDB;

 既存のテーブルをMySQL Clusterに変換するにはALTER TABLEを使用します。

mysql> ALTER TABLE existing.table ENGINE=NDB;

 MySQL Clusterのテーブルに対するデータ操作は、ほかのストレージエンジンと全く同じ方法で行います。

mysql> INSERT INTO testdb.teesttbl VALUES(1),(2),(3);
mysql> SELECT * FROM testdb.testttbl;

 MySQL ClusterではテーブルをSQLノード間で共有します。そのため、sql1で実行しているMySQLサーバーで行った変更は、sql2で実行しているMySQLサーバーからも確認できます。CREATE TABLEやINSERT文を実行した後、別のSQLノードでも変更が反映されていることを確認してください。 タイトルへ戻る



サン・マイクロシステムズ株式会社 奥野 幹也
著者プロフィール
サン・マイクロシステムズ株式会社 奥野 幹也
MySQLサポートエンジニア。MySQLサーバー本体のほかにMySQL Cluster、DRBDなどを担当。障害解析からパフォーマンスチューニングまで幅広く対応。OSSの普及をライフワークとしている

http://nippondanji.blogspot.com/

この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。
ご意見、ご要望にお応えします! インプレスIT INSIDE





INDEX
第3回:3種類のノードをセットアップ!
  MySQL Clusterを構成するノード
  config.iniの基本
-> SQLノード
【データベース夏の陣】MySQL Clusterを試す!
第1回 ここが新しい!MySQL 5.1
第2回 MySQL Clusterのインストール
第3回 3種類のノードをセットアップ!
第4回 データノード設定時のポイント!
第5回 ローリングリスタート!
関連記事
データベース夏の陣
9月記事カレンダー
 123456
78910111213
14151617181920
21222324252627
282930    
-お知らせ -
Think IT記事評価アン…
Think IT記事評価アン…
Think IT記事評価アン…
Think IT記事評価アン…
Think IT記事評価アン…
Think IT記事評価アン…
過去のカレンダーを見る

Think IT 過去人気記事

注目おすすめ情報

Think IT人気ライター BEST 5






【PR情報】

転職ならen転職ならエン派遣ならenアルバイトならen履歴書ならen就職ならen求人ならen