3

現在、mySQLレプリケーションを設定中です。

3か所からデータを取得する必要があります。

だから例えば私は持っています

このデータ
が必要 server1-database1server2
-database2
server3-database3

ここにデータ
を保存server4-database4

レポートの目的でこれが必要です。

複数のマスターに接続できないことを読みました。そうは言っても、これで何が起こっているのか理解していると思うので、「マスターチェーン」トポロジを試してみます。

したがって、データフローは次のようになります

server1- > server2- > server3- > server4

server2server3には、複製されたデータベース用のブラックホールストレージエンジンがあるため、これらのサーバーに実際に情報を保存することはありませんが、情報は引き続きバイナリログに記録されるため、server4を最新の状態に保つためにすべてのステートメントが細流化されます。

私はこれを正しく理解していますか?

4

1 に答える 1

2

これは機能しますが、最も優れた実装ではなく、将来的に問題が発生する可能性があります。server1またはserver2に新しいテーブルを追加する前BLACKHOLEに、ダウンストリームサーバーにテーブルを作成する必要があります。そうしないと、実際のテーブルになってしまいます。これを回避するには、毎晩server2とserver3で実行され、ブラックホール以外のテーブルを探し、ALTER TABLEそれらをテーブルに変更するためのスクリプトを作成することで回避できると思いますBLACKHOLE

レポートデータを最新の状態にする必要がありますか?そうでない場合は、このアイデア全体を破棄し、必要に応じて定期的にデータのダンプをserver4にプルすることをお勧めします。

編集:(翌日)少し考えた後、これが私なら、server4で3つの別々のMySQLインスタンスを実行し、それぞれをサーバーの1つの直接スレーブとして実行することを検討すると思います。

このアプローチを使用すると、レプリケーションチェーンはなく、レプリケーションのセットアップははるかに単純/通常であり、各データベースペアは自己完結型です。

複数のMySQLインスタンスを実行するのは簡単でかなり普通です。それを設定するのに役立つmysqld_multiと呼ばれるツールもあります。

于 2011-05-04T20:04:52.660 に答える