1

以下に示すように、いくつかのデータベースを複製する必要があります。

         -DB1---replicate to---> SLAVE_A
        /
MASTER <--DB2---replicate to---> SLAVE_B
        \
         -DB3---replicate to---> SLAVE_C

ここで説明するプロセスは、マスターサーバーとすべてのスレーブサーバーの両方を制御する場合はうまく機能しますが、残念ながら、この場合はマスターのみを制御します。スレーブは、他の管理者によって実行されるさまざまな国に存在する可能性があります。

私の懸念は、SLAVE_Aの構成を簡単に変更して、目的のDB1だけでなく、DB2とDB3も複製できることです。これは良くありません。

どのスレーブがどのデータベースを複製するかを制限する唯一の希望は、マスターから何らかの方法でデータベースを制御できるかどうかです。これは、私が理解できたことからは実行できません。ユーザーは、すべてのデータベースへのレプリケーション特権を持っているか、まったく複製特権を持っていません。これは残念なことです。

私はここで何かが欠けていますか、それともこれはMySQLの単なる制限ですか?これをどのように達成できるかについて何か考えはありますか?

ありがとう。

4

2 に答える 2

2

スレーブ サーバーでは、オプションとして my.cnf ファイルまたはコマンド ラインに含まれる、replicate-do-dbまたはreplicate-ignore-dbパラメータによって適用するトランザクションをフィルタリングする可能性があります。binlog-do-db または binlog-ignore-db を使用してマスターで同じことを実行できますが、マスターで特定のデータベースのレプリケーションを制限します。したがって、より良い解決策は、スレーブでトランザクションをフィルタリングすることです。

于 2014-02-10T13:53:20.087 に答える
-1

レプリケーション スレーブごとに異なる MySQL ユーザーを作成し、そのユーザーにレプリケーション アクセスを許可するデータベースへのアクセスのみを許可します。

詳細については、MySQL ドキュメント: 16.1.1.3 を参照してください。レプリケーション用のユーザーの作成

CREATE USER 'slave_a'@'some_slave_server' IDENTIFIED BY 'slavepass';
GRANT REPLICATION SLAVE ON `DB1`.* TO 'slave_a'@'some_slave_server';
FLUSH PRIVILEGES;

次に、DB 2 と 3 のスレーブ B と C についてそれぞれ繰り返します。

于 2012-11-14T22:38:37.647 に答える