簡単にするために、MySQL循環レプリケーションのみをお勧めします。理由は次のとおりです。
MySQL循環レプリケーションよりもはるかに優れたテクノロジーとトポロジは数多くあります。私のお気に入りは、DRBD(Distributed Replicated Block Device)です。ただし、DRBDは、サーバーペアが同じ建物、データセンター、およびラックにある場合に適切に機能します。DRBDプライマリとDRBDセカンダリの間の192.168.xxサブネットでクロスオーバーケーブルを使用する場合は、さらに優れています。残念ながら、DRBDは引き続き機能しますが、DRBDは2つの場所の間の距離にわたって恐ろしいパフォーマンスを発揮します。2つのデータセンター間で必要な十分なDRBDパフォーマンスを提供するネットワークトポロジはありません。
2つの異なるデータセンターにある2つのDBサーバー間でMySQL循環レプリケーションをセットアップしたら、必要なチューニングはネットワークのみです。本質的に、レプリケーションパフォーマンスはネットワーク設定(MySQLレプリケーションセットアップでのバイナリログ転送の速度/待ち時間)とディスクI / O(DRBD)の関数です。
冗長性を向上させるために必要な代替策は、例として次のとおりです。
両方の場所で
DRBDペアをセットアップしますVIP 111.111.111.111でサイト#1でDRBDペアを設定しますVIP 222.222.222.222
でサイト#2でDRBDペアを設定します
次の条件下で、DRBDプライマリサーバー間のMySQL循環レプリケーションをセットアップします
。サイト#1の場合は、MySQLのMaster_Hostとして222.222.222.222を使用します
。サイト#2の場合は、MySQLのMaster_Hostとして111.111.111.111を使用します。
ある程度の複雑さを導入していますが、2つのレベルの冗長性があります。各サイト内のDRBDとサイト間のMySQL循環レプリケーションです。ホットスタンバイサーバーのDRBDプライマリでmysqldumpを介してバックアップを実行することの追加の利点があります。
フェイルオーバーに関しては、DRBDは任意の1つのサイトで自動フェイルオーバーを提供します。
データセンターがまったく利用できない場合にのみ、ホットスタンバイサイトでDB VIPを使用します。
更新
私はダブルテイクを実行したところ、Drupal6を使用していることに気付きました。すべてのdrupalテーブルをInnoDBに変換できることをうれしく思います。これにより、MyISAMテーブルが更新され、テーブルロックがMyISAMテーブルを読み取るだけのDB接続をフリーズさせる可能性がなくなります。MyISAMテーブルに対するすべてのDML更新(INSERT、UPDATE、DELETE)は、常にフルテーブルロックを実行します!!! InnoDBを使用すると、行レベルのロックが導入され、テーブル全体のロックがなくなります。
さらに、DRBDペア間でクラッシュリカバリが一貫しているため、すべてがInnoDBである場合、DRBDは友だちになります。逆に、MyISAMを使用したDRBDは、DRBDプライマリでクラッシュしたMyISAMテーブルが、クラッシュしたMyISAMテーブルと同じようにDRBDセカンダリに単純に複製されるため、何も購入しません。
アップデート#2
2つのレベルの冗長性を使用する必要があります
レベル1:各データベースセンターで、DRBDを使用します。
http://dev.mysql.com/doc/refman/5.1/en/ha-drbd.html
DRBDプライマリでDBサーバーの
起動DRBD
起動MySQLのペアを設定します。
これにより、ディスクレベルで冗長データが作成されます。
レベル2:
DataCenter#1のDRBDプライマリとDataCenter#2のDRBDプライマリの間にMySQL循環レプリケーションをセットアップする必要があります
各DRBDプライマリはMySQLを実行し
、相互にマスターとスレーブの両方として機能します
私はこのようなクライアントトポロジのセットアップを行っており、非常に安定していると考えています。