あなたが対処しなかった大きな問題の 1 つは、アプリケーション A がデータへの読み取り専用アクセスを必要とするのか、それとも読み書き可能にする必要があるのかということです。
要件を読んですぐに思い浮かぶ概念は、シャーディングです。MySQL では、これはパーティショニングで実現できます。そうは言っても、パーティションに飛び込む前に、必ずその長所と短所を読んでください。インデックスが適切に選択されていない場合、またはパーティショニング スキームがよく考えられていない場合、パーティショニングによって速度が低下する場合があります。
ニーズが読み取り専用の場合、これはかなり単純なソリューションです。マスター/スレーブ コンテキストで MySQL を使用し、スレーブからアプリ A を使用できます。読み書きが必要な場合、これはさらに複雑になります。
書き込みのニーズに応じて、読み取りをスレーブに分割し、書き込みをマスターに分割できますが、コード構造が大幅に複雑になります (複数のデータベースへの複数の接続を処理する必要があります)。この種のレイアウトの利点は、複雑な DB インフラストラクチャを用意する必要がないことです。
反対に、コードをそのまま維持し、MySQL でマスター - マスター レプリケーションを使用することができます。Oracle によって公式にサポートされていませんが、多くの人がこれで成功しています。Google で簡単に検索すると、ブログ、ハウツーなどの膨大なリストが見つかります。これをサポートするには、コードを適切に作成する必要があることに注意してください (例: PK に自動インクリメント フィールドを使用することはできません)。
使う現金がある場合は、より商業的な製品のいくつかを見ることができます. Oracle DB と SQL Server の両方がこれをサポートしています。
DRDB (および Mysql DRDB)などのブロック ベースのデータ レプリケーションを使用してノード間のレプリケーションを処理することもできますが、常に発生する問題は、2 つのノード間のリンクに障害が発生した場合です。
発生する最大の問題は、2 つの個別の DB ノードで競合する更新を処理する方法です。データが地理的に依存している場合、これは問題にならない可能性があります。
簡単に言えば、これは簡単に (または安価に) 解決できる問題ではありません。