MySQL 5.1 リファレンスマニュアル :: 14 MySQL Cluster :: 14.10 MySQL Cluster レプリケーション :: 14.10.9 MySQL Cluster のレプリケーションによるバックアップ
« 14.10.8 MySQL Cluster にフェールオーバーを導入する

14.10.9.1 スレーブのマスタ binlog への自動同期 »
Section Navigation      [Toggle]
  • 14.10 MySQL Cluster レプリケーション
  • 14.10.1 略語と記号
  • 14.10.2 仮定条件と一般要件
  • 14.10.3 既知の問題
  • 14.10.4 レプリケーション スキーマおよびテーブル
  • 14.10.5 レプリケーションにクラスタを準備する
  • 14.10.6 レプリケーションの開始 (シングル レプリケーション チャネル)
  • 14.10.7 2 つのレプリケーション チャネルを使用する
  • 14.10.8 MySQL Cluster にフェールオーバーを導入する
  • 14.10.9 MySQL Cluster のレプリケーションによるバックアップ
    • 14.10.9.1 スレーブのマスタ binlog への自動同期

14.10.9. MySQL Cluster のレプリケーションによるバックアップ

[+/-]

14.10.9.1. スレーブのマスタ binlog への自動同期

この項ではバックアップの作成とそのバックアップの MySQL Cluster レプリケーションを使用した保存について説明します。レプリケーション サーバーが以前に説明 (項14.10.5. 「レプリケーションにクラスタを準備する」 およびその直後の項の説明を参照してください) した設定になっていることが前提です。その設定になっている場合、バックアップの作成およびそのバックアップの保存手順は以下のようになります。

  1. バックアップを開始する 2 つの異なる方法があります。

    • 方法 A:

      この方法ではレプリケーションのプロセスを開始する前にクラスタのバックアップのプロセスがマスタ サーバーで有効になっている必要があります。これは以下の行を

      ndb-connectstring=management_host[:port]
      

      をmy.cnf file の [MYSQL_CLUSTER] の項に含めること可能で、そこでは management_host はマスタ クラスタのNDB サーバーの IP アドレスあるいはホスト名で、port はマネジメント サーバーのポート番号です。.ポート番号はデフォルトのポート (1186) が使用されていない場合にのみ指定する必要があります。(MySQL Cluster のポートおよびポートの割り当てに関する情報は、項14.3.3. 「マルチ コンピュータの設定」 を参照してください。)

      この場合、そのバックアップはこのステートメントをレプリケーション マスタで実行することで開始されます。

      shellM> ndb_mgm -e "START BACKUP"
      
    • 方法 B:

      my.cnf ファイルがマネジメント ホストの場所を指定していない場合、バックアップ プロセスはこの情報を NDB マネジメント クライアントに START BACKUP コマンドの一部として渡すことで開始できます。以下のようになります。

      shellM> ndb_mgm management_host:port -e "START BACKUP"
      

      そこでは management_host および port はマネジメント サーバーのホスト名およびポート番号です。前に述べたようなシナリオ (項14.10.5. 「レプリケーションにクラスタを準備する」 参照) で、以下のように実行できます。

      shellM> ndb_mgm rep-master:1186 -e "START BACKUP"
      

    どの方法の場合でも、未処理のトランザクションがある場合にはそれをバックアップを開始する前に完了し、バックアップの実施中に新たにトランザクションを実施しないようお願いします。

  2. クラスタおバックアップファイルを行に入れるスレーブにコピーします。マスタ クラスタの ndbd プロセスで稼動している各システムはそのシステム上にクラスタのバックアップファイルを持ち、これらのall のファイルは保存の確認をするためにスレーブにコピーされます。バックアップ ファイルは、MySQL および NDB バイナリがそのディレクトリの許可を読む限りスレーブ マネジメント ホストが常駐するコンピュータのどのディレクトリにコピーできます。このように、これらのファイルはディレクトリ /var/BACKUPS/BACKUP-1 にコピーできるものと想定されます。

    スレーブ クラスタが ndbd プロセス (データ ノード) とマスタとして同じ番号を持つ必要なありませんが、この番号が同じにするように強くお勧めします。レプリケーション プロセスが準備不足で起動しないように、スレーブを --skip-slave-start オプションで起動することが必要です。

  3. データベースをスレーブのレプリケートされるマスタ クラスタのスレーブ クラスタで作成します。重要レプリケートされる各データベースに相当する CREATE SCHEMA ステートメントをスレーブ クラスタの各データ ノードで実行します。

  4. MySQL Monitor のこのステートメントを使用してスレーブのクラスタをリセットします。

    mysqlS> RESET SLAVE;
    

    スレーブの apply_status テーブルが保存プロセスを実行する前にレコードを含んでいないことが重要です。スレーブの SQL ステートメントを実行することでこれを実現できます。

    mysqlS> DELETE FROM mysql.ndb_apply_status;
    
  5. ここで各バックアップ ファイルに対して順番に ndb_restore コマンドを使用してレプリケーション プロセスを開始できます。これらを実行する前に、クラスタのメタデータを保存するには -m オプションを含めることが必要です。

    shellS> ndb_restore -c slave_host:port -n node-id \
            -b backup-id -m -r dir
    

    dir はバックアップ ファイルがレプリケーション スレーブの置かれるディレクトリへのパスです。残りのバックアップ ファイルに相当する ndb_restore コマンドに対しては、-m オプションは使用しない でください。

    マスタ クラスタからバックアップ ファイルがディレクトリ /var/BACKUPS/BACKUP-1 にコピーされる 4 つのデータ ノード (項14.10. 「MySQL Cluster レプリケーション」 の図を参照) に保存するには、スレーブで実行されるコマンドのシーケンスは以下のようになります。

    shellS> ndb_restore -c rep-slave:1186 -n 2 -b 1 -m \
            -r ./VAR/BACKUPS/BACKUP-1
    shellS> ndb_restore -c rep-slave:1186 -n 3 -b 1 \
            -r ./VAR/BACKUPS/BACKUP-1
    shellS> ndb_restore -c rep-slave:1186 -n 4 -b 1 \
            -r ./VAR/BACKUPS/BACKUP-1
    shellS> ndb_restore -c rep-slave:1186 -n 5 -b 1 -e \
            -r ./VAR/BACKUPS/BACKUP-1
    

    このコマンドのシーケンスにより最も最新のエポック レコードをスレーブの ndb_apply_status テーブルに書き込みます。

  6. ここで最も最新のエポックをスレーブの ndb_binlog_index テーブルkら取得する必要があります(項14.10.8. 「MySQL Cluster にフェールオーバーを導入する」 の説明参照):

    mysqlS> SELECT @latest:=MAX(epoch)
            FROM mysql.ndb_binlog_index;
    
  7. @latest を前のステップで取得したエポック値をとして使用して、以下のクエリを使用してマスタの mysql.ndb_binlog_index テーブルから正しいバイナリ ログ ファイル @file の正しい起動位置 @pos を取得できます。

    mysqlM> SELECT 
         ->     @file:=SUBSTRING_INDEX(File, '/', -1),
         ->     @pos:=Position
         -> FROM mysql.ndb_binlog_index
         -> WHERE epoch > @latest
         -> ORDER BY epoch ASC LIMIT 1;
    
  8. 前のステップで取得下値を使用して、スレーブのmysql クライアントの適切な CHANGE MASTER TO ステートメントを発行できます。

    mysqlS> CHANGE MASTER TO
         ->     MASTER_LOG_FILE='@file',
         ->     MASTER_LOG_POS=@pos;
    
  9. スレーブが binlog ファイルがマスタからデータを読み込むどのポイントかを「知って」 いるので、この標準の MySQL ステートメントでスレーブにレプリケーションを開始させることができます。

    mysqlS> START SLAVE;
    

バックアップを実行して二次のレプリケーション チャネルで保存するには、これらのステップを繰り返し、適切と思われる場合二次マスタおよびスレーブのホスト名および ID をプライマリのマスタおよびスレーブ レプリケーションに置き換えて、前のステートメントをそれらの上で実行するのみで可能です。

クラスタのバックアップおよびバックアップからのクラスタの保存に関する詳細は、項14.8. 「MySQL Cluster のオンライン バックアップ」 を参照してください。.

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates