3

バックグラウンド

私は、共有ホスティングプロバイダーと非常によく似たセットアップのネットワークを実行しています (読み取り: 継承)。インフラストラクチャ上で実行されている 300 ~ 400 のサイトがあります。何年にもわたって、データベース トポロジは非常に断片化されており、Web サーバーからデータベースへの 1 対 1 の関係になっています。

問題

  • アプリケーションは、wordpress/joomla/drupal などを実装したサードパーティの設計会社によって設計された 10 のうち 9 回です。
  • データベースは、6 つのデータベース サーバーに無計画に分散されています。それらはどこにも複製されません。
  • アプリケーションには、INSERT をマスターに、SELECT をスレーブに分離するための別個のデータベース ハンドルの概念がありません。
  • シングル マスターの組み込みの mysql レプリケーションを使用すると、大きなボトルネックが生じます。挿入の量は、マスター データベースを非常に迅速にダウンさせます。

質問

私の質問は、将来のスケーラビリティの余地を残しながら、どうすればデータベース トポロジをできるだけフラットにすることができるでしょうか?

将来的には、「バックネット」を介して同じデータベースを複製できる地理的な場所をネットワークに追加したいと考えています。

過去にマルチマスター レプリケーションを調べたことがありますが、auto_increment 列の衝突などの問題がたくさんありました。

私はエンタープライズ ソリューションに対してオープンです。Oracle レプリケーション用の Shareplex 製品に似たもの。

解決策が何であれ、この新しい設計に対応するためにアプリケーションが変更されることを期待するのは合理的ではありません。そのため、auto_increment 列などは同じままで、クラスター全体でゲル化する必要があります。

ゴール

私の目標は、すべてのアプリケーションを指すことができる各クラスターのホスト名を内部的に負荷分散することです。私

これにより、現在持っていないフォールトトレランスも得られます。現在、ローテーションからデータベースを削除することはできません。

Cassandra や Hadoop などのアプリケーションは、私が達成したいものと驚くほど似ていますが、NoSQL はこれらのアプリケーションのオプションではありません。

ヒント/ポインター/チュートリアル/ドキュメント/製品の推奨事項は大歓迎です。ありがとうございました。

4

1 に答える 1

2

過去にマルチマスター レプリケーションを調べたことがありますが、auto_increment 列の衝突などの問題がたくさんありました。

職場での制作ではマルチマスターを使用しています。auto-inc の問題は、少し前にauto_increment_incrementauto_increment_offsetで修正されました。これにより、各サーバーが独自のインクリメント ID のパターンを持つことができます。すべての ID がシーケンシャルであることをやみくもに想定してアプリケーションが設計されていない限り、問題なく動作するはずです。

マルチマスターの実際の問題は、MySQLバイナリ ログを時々破損することです。これは主に、信頼性の低い接続に関する問題であるため、すべてのインスタンスがローカルであれば問題にはなりません。

マルチマスターのもう1つの問題は、答えのポイントを考えると、すでに経験または想定して いるように、単にwrites でスケーリングしないことです。1 つのマスターのすべての書き込みは、他のマスターによってレプリケートされる必要があります読み取り負荷を正しく分散させたとしても、最終的にはハードウェアの追加、アプリケーションの再設計、またはシャーディング (読み取り: アプリケーションの再設計) によってのみ解決できる I/O ボトルネックにぶつかります。MySQL で行ベースのレプリケーションが利用できるようになったので、少し良くなりました。

地理的な多様性が必要な場合は、マルチマスターが機能します。

また、最新の Linux カーネルに組み込まれているディスク ブロック レベルのレプリケーション システムであるDRBDについても調べてください。個人的な経験はありませんが、以前は MySQL と PostgreSQL を複製するために他の人が使用していました。

高可用性を求めているのか、単に (手動または自動) フェイルオーバーを求めているのか、あなたの質問からはわかりません。フェールオーバーのみが必要で、ダウンタイムが発生する可能性がある場合は、従来のマスター/スレーブ レプリケーションで十分かもしれませ。問題は、マスターになったスレーブをスレーブに戻すことです。

于 2011-03-23T20:43:37.697 に答える