スケールアウトのためのレプリケーションの使用


8

スケールアウトのためのレプリケーションの使用」を読んだ後、さまざまなクエリをさまざまなサーバーにルーティングする方法を教えてください。たとえば、SELECTスレーブとNON-SELECTマスターにルーティングする必要があります。私はロードバランサーとしてhaproxyを使用できると思いますが、haproxyのレベルでクエリを区別することはできないと思いましたか?さらに、誰かがマスターに直接到達したとします。マスターがこれがSELECTクエリであることを識別し、スレーブまたはロードバランサーに送信されるように表示するにはどうすればよいでしょうか。

回答:


3

MySQLプロキシと呼ばれるプロジェクトがあり、プロキシレイヤーで読み取り/書き込み分割を処理しようとしていますが、本番環境では使用できません。このページでは、既知の問題のセクションに注意して、問題の詳細を確認できます。

現時点では、他の人が指摘したように、アプリケーションを介してルーティングを処理する必要があります。


同様に(ただし、本番環境での
Nick Chammas 2012年

2

その仕事あなたのweb clientそれがデータベースに送信しようとしているトランザクションがあるかどうかを判断するread-onlyread-write、その指定された選択slavemasterそれに応じました。


2

私はあなたのためにこれを行うプロキシソフトウェアを知りません。haproxyはHTTPレベルのプロキシです。これはデータベースに影響を与えません。これをWebアプリケーションのビジネスロジックの一部として実装する必要があります。

持続性レイヤーの中心では、これらの呼び出しをインターセプトし、実行されているトランザクションのタイプに基づいて適切なデータベースに「ルーティング」できるはずです。たとえば、SELECTクエリは読み取り専用サーバーに送信できますが、UPDATE/INSRET/DELETEクエリはマスターサーバーに送信されます。


haproxyはTCPロードバランサーであり、MySQLを含む他のプロトコルに使用できますが、最善の選択とは限りません。
アーロンブラウン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.