ローリングリスタート!

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 Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

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