バックグラウンド
私は、共有ホスティングプロバイダーと非常によく似たセットアップのネットワークを実行しています (読み取り: 継承)。インフラストラクチャ上で実行されている 300 ~ 400 のサイトがあります。何年にもわたって、データベース トポロジは非常に断片化されており、Web サーバーからデータベースへの 1 対 1 の関係になっています。
問題
- アプリケーションは、wordpress/joomla/drupal などを実装したサードパーティの設計会社によって設計された 10 のうち 9 回です。
- データベースは、6 つのデータベース サーバーに無計画に分散されています。それらはどこにも複製されません。
- アプリケーションには、INSERT をマスターに、SELECT をスレーブに分離するための別個のデータベース ハンドルの概念がありません。
- シングル マスターの組み込みの mysql レプリケーションを使用すると、大きなボトルネックが生じます。挿入の量は、マスター データベースを非常に迅速にダウンさせます。
質問
私の質問は、将来のスケーラビリティの余地を残しながら、どうすればデータベース トポロジをできるだけフラットにすることができるでしょうか?
将来的には、「バックネット」を介して同じデータベースを複製できる地理的な場所をネットワークに追加したいと考えています。
過去にマルチマスター レプリケーションを調べたことがありますが、auto_increment 列の衝突などの問題がたくさんありました。
私はエンタープライズ ソリューションに対してオープンです。Oracle レプリケーション用の Shareplex 製品に似たもの。
解決策が何であれ、この新しい設計に対応するためにアプリケーションが変更されることを期待するのは合理的ではありません。そのため、auto_increment 列などは同じままで、クラスター全体でゲル化する必要があります。
ゴール
私の目標は、すべてのアプリケーションを指すことができる各クラスターのホスト名を内部的に負荷分散することです。私
これにより、現在持っていないフォールトトレランスも得られます。現在、ローテーションからデータベースを削除することはできません。
Cassandra や Hadoop などのアプリケーションは、私が達成したいものと驚くほど似ていますが、NoSQL はこれらのアプリケーションのオプションではありません。
ヒント/ポインター/チュートリアル/ドキュメント/製品の推奨事項は大歓迎です。ありがとうございました。