ローリングリスタート!
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ノードの共存について説明します。