これは、特殊なタイプの MySQL レプリケーション トポロジの仕事のように思えます。
私が念頭に置いているトポロジーは「ディストリビューション マスター」と呼ばれます。これは、本High Performance MySQL : Optimizations, Backups, Replication and moreのサブタイトル「マスター、ディストリビューション マスター、およびスレーブ」の 368 ~ 370 ページに由来します。
以下が必要になります
1 つの DB マスター サーバー
1 つの DB ディストリビューション マスター (/dev/null スレーブまたはブラックホール スレーブとして知られる)
DB スレーブの数に関係なく
DBマスターのセットアップ
- MySQL 5.1.x をインストールする
- /etc/my.cnf
server-id=1
log-bin=mysql-bin
expire-logs-days=14
default-storgae-engine=InnoDBを確認してください
- MySQL の起動
- リセットマスター; (DB マスターからのバイナリ ログのクリア)
- マスターへのデータの読み込み
- GRANT SELECT,REPLICATION SLAVE ON . to replicator@'%' IDENTIFIED BY 'repl-password';
DB配信マスターの設定
- MySQL 5.1.x をインストールする
- /etc/my.cnf
server-id=2
log-bin=mysql-bin
expire-logs-days=14
default-storage-engine=BLACKHOLE
skip-innodb を確認してください
- MySQL の起動
- CHANGE MASTER TO MASTER_HOST='DB マスターの IP アドレス', MASTER_PORT=3306, MASTER_USER='replicator', MASTER_PASSWORD='repl-password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=106;
- スレーブを開始します。
- GRANT SELECT,REPLICATION SLAVE ON . to replicator@'%' IDENTIFIED BY 'repl-password';
- information_schema データベースにも mysql データベースにもないすべてのテーブルについて、次のように各テーブルを BLACKHOLE ストレージ エンジンに変換します。
- リセットマスター; (DB配布マスタからバイナリログをクリア)
DB スレーブのセットアップ
- MySQL 5.1.x をインストールする
- /etc/my.cnf
server-id=3
default-storage-engine=InnoDBを確認してください
- MySQL の起動
- CHANGE MASTER TO MASTER_HOST='DB マスターの IP アドレス', MASTER_PORT=3306, MASTER_USER='replicator', MASTER_PASSWORD='repl-password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=106;
- スレーブを開始します。(レプリケーションが追いつくように、SHOW SLAVE STATUS\G を確認してください)
- スレーブを停止します。
- CHANGE MASTER TO MASTER_HOST='DB 配信マスターの IP アドレス', MASTER_PORT=3306, MASTER_USER='replicator', MASTER_PASSWORD='repl-password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=106;
- スレーブを開始します。
このセットアップの目的は、DB マスターのみが DB マスター専用の SQL を処理するようにすることです。DB スレーブにレプリケートされる SQL は、DB ディストリビューション マスターによって処理されます。これにより、スレーブへの SQL の転送を処理する DB マスターが軽減されます。それはDBディストリビューションマスターの責任になります。すべてのスレーブは、DB マスターではなく DB ディストリビューション マスターから SQL の変更を読み取ります。
私はあなたのアプリケーションを完全には理解していませんが、このトポロジは、I/O が中央データベースを制限することなく、1 つの中央データベースと複数の読み取りスレーブを適切にサポートする必要があります。アプリケーションは、各ラップトップが他のラップトップとは異なる固有のクライアント セットを処理する限り、クライアント データベースに対して INSERT、UPDATE、および DELETE を編成する必要があります。
警告
BLACKHOLE セットアップが原因でデータが消失しないことを確認するために、DB スレーブで本格的なテストを行う必要がある場合があります。これが発生した場合は、'default-storage-engine=BLACKHOLE' を削除して、すべてをリロードしてみてください。
この種の今後の質問は、dba.stackexchange.comで質問する必要があります。