PR

ローリングリスタート!

2008年7月29日(火)
奥野 幹也

MySQL 5.1の新機能総まとめ

 今回は、まずMySQL 5.1の最新機能についてまとめて紹介しましょう。

 「パーティショニング」は、巨大なテーブルを分割することで、参照・更新の性能を向上するテクニックです。特にデータウェアハウスなど、巨大なテーブルが必要な場面で役立つでしょう。パーティションの分け方には4つの種類があり、用途に応じて使い分けることができます。それぞれ、Rangeパーティショニング、Listパーティショニング、Hashパーティショニング、Keyパーティショニングです。今後、扱うべきデータがますます大きくなることが予想されます。ぜひパーティショニングを活用しましょう。

 「行ベースレプリケーション(RBR)」では、これまでのステートメントベースレプリケーション(SBR)に加えて利用できる機能です。SBRでは複製するのが不可能だったUUID()などの関数も複製ができるようになりました。RBRはSBRよりも性能面で劣るので、SBRでは対処できないステートメントの場合だけ自動的にRBRに切り替わるMixedモードが利用できます。指定がない場合、Mixedモードがデフォルトです。

 「イベントスケジューラ」は定期的なジョブ、またはワンタイムのジョブを実行するための機能です。週末にOPTIMIZE TABLEを実行する場合や、月次のレポートを作成する場合などの用途で利用してください。イベントスケジューラはcronなどとは違い、プラットホーム非依存です。mysqldumpユーティリティーを使うことでバックアップも可能です。

 またMySQL 5.1では、一般クエリログとスロークエリログをテーブルとして保存・参照できるようになりました。テーブルへログを格納しておくことで、SQL文を使ってログの解析ができるようになったため、解析が効率的に行えます。

 図1に今後のバージョンで追加される予定の機能をリストアップします。ただし予定は変更される可能性がありますのでご了承ください。

MySQL Cluster 6.2

 連載の2回目以降はMySQL Cluster 6.2のセットアップについて説明しました。MySQL Clusterでは管理ノード、データノード、SQLノードの3種類のノードがあります。

 今回はconfig.iniのパラメータ(DataMemory、IndexMemoryなど)を変更したときにその内容を反映するための手順である「ローリングリスタート」について説明します。ローリングリスタートとは簡単にいうと、各ノードを順に再起動していくことです。

 config.iniを変更したら、まず管理ノードを再起動します。再起動するには、ndb_mgmコンソールにおいて「ノードID RESTART」を実行します。以下は管理ノードのIDが1の場合の手順です。

ndb_mgm> 1 RESTART

 ノードが再起動するため、ndb_mgmはいったん接続が切れてしまいますが、しばらくすると自動的に接続を再開します。管理ノードが正常に起動したことを確認するために、SHOWコマンドでステータスを確認してください。次に、データノードを順に再起動します。もし、/etc/my.cnfにおいてconnect-stringの設定がしてあれば、管理ノードと同様にRESTARTコマンドが使用できます。1つ目のデータノードのノードIDが41の場合、ndb_mgmコンソールにおいて以下のように実行します。

ndb_mgm> 41 RESTART

 データノードの再起動にはしばらく時間がかかります。STATUSコマンドを実行して、startedとなるまで待ちましょう。起動が完了するとコンソールに通知メッセージが表示されます。

ndb_mgm> 41 STATUS

 同様の手順をすべてのデータノードについて繰り返します。

 REDOログの設定を変更した場合など、ファイルシステムを初期化する必要がある場合には、イニシャルリスタートという手順が必要になります。イニシャルリスタートが必要かどうかについては、変更するパラメータによります。イニシャルリスタートが必要になるパラメータについては、マニュアル(http://dev.mysql.com/doc/refman/5.1/ja/mysql-cluster-config-params-overview.html)を参照してください。イニシャルリスタートをする場合には、以下のように-iオプションを使用します。

ndb_mgm> 41 RESTART -i

 起動が完了したことをndb_mgmコンソールより確認します。

 SQLノードはconfig.iniを変更してもほとんどの場合再起動する必要はありません。再起動の必要があるのは管理ノードに変更を加えた場合、例えば管理ノードを多重化したときなどです。その場合、connect-stringを適宜変更してから、通常の手順で再起動を行いましょう(複数の管理ノードがある場合の説明については割愛します)。

shell> mysqladmin -uroot -p shutdown
shell> mysqld_safe &

 クラスタへの接続が確立できているかどうかの確認は、SHOW ENGINE NDB STATUSコマンドで行います。

shell> mysql -uroot -p
mysql> SHOW ENGINE NDB STATUS¥G

 最終的なステータス確認は、管理ノードからSHOWコマンドを実行します。次は、データノードとSQLノードの共存について説明します。

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

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています