ローリングリスタート!
バージョンアップとデータ移行
MySQL Clusterは、同じメジャーバージョンのもの(例えば6.2.x)においては、ローリングリスタートを使うことによってクラスタを停止することなくソフトウェアをアップグレードすることが可能です。
これにより、メンテナンスによるダウンタイムを大幅に短縮することが可能です。このようなアップグレード方法はローリングアップグレードと呼ばれています。手順は1ページ目で説明したものとほぼ同じです。異なる点は、各ノードを停止している間にバイナリを更新するということだけです。
ただし、いくつかのバージョンではシステムテーブルの互換性などが原因で、クラスタ全体をシャットダウンしなければならないケースもあります。ローリングアップグレードが可能かどうかについては、バージョンの互換性のリストがマニュアル(http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-upgrade-downgrade-compatibility.html)に載っているので参考にしてください。
ローリングアップグレードが可能でない場合には、データをすべてバックアップし、いったんファイルを初期化してからリストアするという手順が必要になります。この場合はかなりのメンテナンス時間が必要です。データのバックアップには、MySQL Clusterのオンラインバックアップまたはmysqldumpコマンドのいずれかを用いて行うことが可能ですが、実行時間が短くて済むのはオンラインバックアップです。
オンラインバックアップとリストアの手順
ここでは、オンラインバックアップとリストアの手順について説明します。
バックアップは任意のタイミングで取得することが可能です。データ移行時などにはアプリケーションとSQLノードを停止し、更新がない状態にしてからバックアップをとるといいでしょう。バックアップをとるには、ndb_mgmクライアントにおいて以下のコマンドを実行します。
ndb_mgm> START BACKUP
すると各データノードにおいてバックアップが作成されます。バックアップを開始する度に、バックアップにはそれぞれ整数のIDが与えられます。このIDはバックアップを格納するディレクトリ名や、バックアップファイル名に使用されます。例えば、バックアップIDが123で、FileSystemPathが/var/lib/mysql-clusterで、BackupDataDirの指定がない場合、/var/lib/mysql-cluster/BACKUP/BACKUP-123というディレクトリにバックアップが作成されます。バックアップが完了したかどうかは、以下のコマンドで確認することができます。
ndb_mgm> ALL REPORT BackupStatus
ここで取得したバックアップを用いてリストアを行うには、データノードをすべて空の状態にする必要があります。データノードをすべて空の状態にするには、以下のいずれかの手順を実施するといいでしょう。
・クラスタをシャットダウン(ndb_mgmよりSHUTDOWNコマンドを実行)し、すべてのテーブルスペースとログファイルを消去してから、--initialオプションをつけてndbdを起動する。
・クラスタをシャットダウンし、DataDirまたはFileSystemPath配下のファイル、テーブルスペースとログファイルを消去してから、ndbdを起動する。
リストアを行うには、ndb_restoreコマンドを使用します。ndb_restoreコマンドはSQLノードの一種として動作するため、ndb_resotreコマンドのための[mysqld]セクションをconfig.iniに追加します。空の[mysqld]セクションを指定すると、任意のホストからクラスタへ接続することが可能となります。データノードと同じホストでndb_restoreコマンドを実行する場合には、空の[mysqld]セクションを使用するといいでしょう。
データノードが4つあり、各ノードIDが41~44で、バックアップIDが123であるとします。各データノードが作成したバックアップファイルをそれぞれリストアします。まず、ノード41でリストアを行う場合、ndb_restoreコマンドのオプションは以下のようになります。
shell> ndb_restore -c 192.168.1.40 -b 123 -n 41 -m -r /var/lib/mysql-cluster/BACKUP/BACKUP-123
-bはバックアップIDで、-nはバックアップファイルを取得したデータノードのノードIDです。このコマンドを、各データノード上で繰り返します。最初だけ-mオプションが必要ですが、ほかのノードにおいて、例えばノード42では次のように実行します。
shell> ndb_restore -c 192.168.1.40 -b 123 -n 42 -r /var/lib/mysql-cluster/BACKUP/BACKUP-123
残りのデータノードにおいても-mなしでリストアを行いましょう。
実際の運用においては、バックアップファイルを専用のバックアップ用ホストに集約するといいでしょう。
なお、サン・マイクロシステムズでは、MySQLサーバー製品群のサポートサービスを有償で行っています。価格やサポートの内容についてはMySQL Enterprise(http://www-jp.mysql.com/products/enterprise/features.html)、MySQL Clusterサポート(http://www-jp.mysql.com/products/database/cluster/support.html)を確認してください。