これはこのサイトで質問するのにあまり良い質問ではないかもしれませんが、正しい道に進むためにいくつかのヘルプ/ヒントが本当に必要です。
マスター-マスターレプリケーションモードの2つのMySQLサーバーのフェイルオーバー戦略が必要です。レプリケーションを実行しましたが、問題なく動作しています。それでも、フェイルオーバー戦略に来るとき、私は一種の無知です...
私は過去数日間インターネットで読んでいます(これは非常に複雑な手順であり、1週間ほどで習得できなかったことを知っています)が、読むほど、混乱が生じます。基本的に、私が理解しているように、ネットワークを監視して障害を報告するソフトウェアと、2つのシステムを切り替えるソフトウェアが必要です。 Heartbeat は、そうするのが明らかに最良ですが、私が読んだすべてのチュートリアルでは、他の多くのソフトウェア(監視用のMONや、ダンプやバックアップを取得するための他のソフトウェアなど)も使用しています。それらが必要ですか? MySQLとHeartbeatのようなHAツールのみを使用したフェイルオーバー戦略を使用できますか?
各Webサイトは、それぞれ独自の長所と短所を持つさまざまなツールと方法を導入しています。もちろん、それは[〜#〜] i [〜#〜]「クラスター」が機能することを望み、システムにとってどの程度の高可用性が重要であるか。私は顧客にそれを指摘することを検討しているだけであり、小規模ビジネスを運営している顧客がそれほどデータを失うことを気にしないので、それはすぐには生産段階には行きませんが、サーバーに障害が発生した場合、クライアントがスタンバイサーバーへの変更を自動的にコミットする単純なマスターマスターレプリケーションをセットアップします。
Master-Master replication mode
があるとおっしゃっていましたが、レプリケーションラグを適切に考慮しない限り、自動フェイルオーバーはお勧めしません。結局のところ、MySQLレプリケーションは非同期です。
理論的には次のことが可能です。
DBServer1
をマスターとしてDBServer2
にDBServer2
をマスターとしてDBServer1
にDBServer2
は180秒遅れていますDBServer1
がダウンしますDBServer2
に移動しますこのシナリオでは、DBServer2
にまだ存在しない自動インクリメントキーが含まれる可能性があります。フェイルオーバー時に、DBVIPはWebサーバーがDBServer2
に接続して、まだ存在しないデータを要求することを許可します。
したがって、これには各DBServerで実行されるバックグラウンドプロセスが必要になります。
上記のシナリオの場合:
DBServer1
にありますDBServer1
はHeartBeatを実行しますDBServer2
はHeartBeatを実行しますDBServer1
のバックグラウンドプロセスDBVIPがping可能であることを確認するためのDBServer2
のバックグラウンドプロセス
HeartBeatを倒すとどうなりますか?定義されている起動スクリプトをトリガーします。
DBServer2
の起動スクリプトは何を探す必要がありますか?
SHOW SLAVE STATUS\G
がNULL
になるまでループでSeconds_Behind_Master
を実行しますSHOW SLAVE STATUS\G
DBServer2
経由でip addr add
に割り当てますこれは、マスター/マスターレプリケーションクラスター内のパッシブマスターに安全にフェイルオーバーするためのアルゴリズムです。
すべてのデータがInnoDBである場合は、厳密性の低いものをお勧めします。おそらく [〜#〜] drbd [〜#〜] および HeartBeat の使用を検討する必要があります。理由は次のとおりです。
DRBDは、2つのサーバー上のブロックデバイスにネットワークRAID-1を提供します 。
あなたは本質的にこれを行うでしょう:
DBServer1's
DRBDブロックデバイスを使用DBServer2's
DRBDブロックデバイスを使用DBServer1's
DRBDデバイスをマウントしますDBServer1
で起動しますDRBDシナリオでは、起動スクリプトはどのように見えますか?
ip addr add
経由でDBVIPを割り当てます片側だけがアクティブであるため、これははるかに簡単です。パッシブ側(DRBDセカンダリ)は、アクティブ側(DRBDプライマリ)の同期ディスクコピーです。
すべてまたはほとんどのワーキングセットデータがMyISAMの場合は、DRBDに触れないでください。クラッシュシナリオは、MyISAMテーブルがクラッシュしたとすぐにマークし、自動修復が必要になるまで待機します(これは、待機するのに時間がかかることがあります)。
MySQLでのDRBDの使用に関する過去の投稿です
Mar 29, 2011
: MySQLの高可用性、フェイルオーバー、および待ち時間のあるレプリケーションAug 29, 2011
: MySQLレプリケーション:1つのスレーブ/複数のマスターDec 19, 2011
: マスターからマルチマスターへのレプリケーションをセットアップする最良の方法Jul 25, 2012
: 別のvlan /サブネット/別のサイトでのMySQLデータベースレプリケーション (これは他の誰かのブログでかなり大きなポットをかき混ぜました)