無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 14 MySQL Cluster :: 14.10 MySQL Cluster レプリケーション :: 14.10.8 MySQL Cluster にフェールオーバーを導入する
« 14.10.7 2 つのレプリケーション チャネルを使用する

14.10.9 MySQL Cluster のレプリケーションによるバックアップ »
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.8. MySQL Cluster にフェールオーバーを導入する

プライマリのクラスタ レプリケーション プロセスが失敗した場合、二次レプリケーション チャネルに切り替えることができます。この切り替えを行うために必要なステップの手順を以下説明します。

  1. 最も最新のグローバル チェックポイント (GCP) の時間の取得.つまり、最も最新のエポックをスレーブ クラスタの ndb_apply_status テーブルで決める必要があります。それ以下のクエリで検索できます。

    mysqlS'> SELECT @latest:=MAX(epoch)
          ->        FROM mysql.ndb_apply_status;
    
  2. ステップ 1 で説明したクエリから取得した情報を使用して、マスタ クラスタの ndb_binlog_index テーブルから以下のように相当するれレコードを取得します。

    mysqlM'> SELECT 
          ->     @file:=SUBSTRING_INDEX(File, '/', -1),
          ->     @pos:=Position
          -> FROM mysql.ndb_binlog_index
          -> WHERE epoch > @latest
          -> ORDER BY epoch ASC LIMIT 1;
    

    これらはプライマリ レプリケーション チャネルの失敗以来のマスタに保存されたレコードです。ここではステップ 1 で取得した値を表すユーザー変数 @latest を使用しています。勿論、1 つの mysqld インスタンスで別のサーバーのインスタンスに設定されたユーザー変数に直接アクセスすることはできません。これらの値は手動で 2 番目のクエリあるいはアプリケーション コードに 「plugged in」 する必要があります。

  3. ここで二次のスレーブ サーバーに以下のクエリを実行して二次のチャネルを同期できます。

    mysqlS'> CHANGE MASTER TO
          ->     MASTER_LOG_FILE='@file',
          ->     MASTER_LOG_POS=@pos;
    

    再度ユーザー変数 (この場合は @file および @pos) を使用してステップ 2 で取得しステップ 3 で適用した値を表します。実際はこれらの値は手動で挿入するか、あるいは使用している両方のサーバーにアクセスするアプリケーション コードを使用します。

    @file は '/var/log/mysql/replication-master-bin.00001' などの文字列の値で、SQL あるいはアプリケーション コードで使用されるときに引用される必要があります。しかし、@pos で表される値は引用する必要はあり ません。MySQL は通常文字列を番号を変換しようとしますが、この場合は例外です。

  4. 今二次スレーブ mysqld の適切なコマンドを発行して二次チャネルでレプリケーションを開始できます。

    mysqlS'> START SLAVE;
    

二次のレプリケーション チャネルが利用できるようになったら、プライマリの不具合を調べ問題を解決します。問題の解決にはプライマリ チャネルの問題を正しく見極めた正確な対応が必要です。

その問題が 1 台のサーバーに限定されるのであれば、その不具合は(論理的には) M から S'、あるいは M' から S にレプリケートできます。しかし、この件はまだ検証していません。

Copyright c 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

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.