質問

私は現在、2つのマスターの間で双方向に発生しているMySQLの複製を持っています。1つはローカルに、もう1つはAmazon EC2にあります。

衝突を引き起こす時折のクエリを除いて、すべてが通常複製賢明であるように機能しているようで、それ自体は問題はありませんが、それらはほとんどありません。最近、MySQL-Proxyをセットアップして2つのサーバーのバランスを負担しようとします。ローカルマシンが40以上の接続を受信した後、ロードバランスは実際にキックをかけます。

私たちが最近気づいたことは、MySQLプロキシが41の接続があることを私たちに通知し、そのバランスを開始することです。しかし、私がローカルマシンに接続して、 SHOW PROCESSLIST; それは私に30の接続を提供するかもしれません。

なぜこれがなぜこれがなぜですか?

それに加えて、 SHOW PROCESSLIST; コマンド私は、5000秒を超えて実行されていると述べている両方のマシンで実行されている非常に多くのクエリが実行されていることに気付きました。これらは「ゾンビ」クエリだと確信していますが、そもそもなぜ作成されているのか誰もが知っていますか?

参考までに、UbuntuとDebianの最新バージョンでMySQLバージョン5.1.54を実行しています。

どんなアイデアでも非常に役立ちます。

補遺

MySQL_PCONNECTを使用しておらず、MySQLIライブラリを使用してインタクトしていることがわかりました。私はまだこれがなぜ起こっているのかを知ることができず、私が見つけたら報告するでしょう。

役に立ちましたか?

解決

私はデュアルマスターのセットアップで両方のマスターに書くことに反対しています。うまくいかないものが多すぎる可能性があり、修正するのが面倒な場合があります - Auto_increments、その他の重複キーなど。

何百もの「スリープ」接続はサーバーに事実上影響を与えないため、40に制限することは役に立ちません。 10以上 アクティブ 接続(睡眠を眠らない)が問題になる可能性があります。その場合、私はクエリを見ます。通常、クエリを最適化することが最良の答えです。

また、1つのマスターで行われるすべての書き込み(挿入、更新など)は、他のすべてのマスターと奴隷で行われなければならないことに注意してください。だから、あなたは本当に「スプレッド」と書くことはできません。

読み取り(選択)のみを実行するプロセスがある場合、ライブ、ライブ、マスターではなく、奴隷やバックアップマスターに移動する必要があります。これは役立ちます。

「批判的な書き込み」の問題に注意してください。例:ユーザーがブログのコメントを投稿してから、コメントを確認しますが、欠落しています。これは、書き込みが1つのマシンに行った場合に発生する可能性がありますが、読み取りは別のマシンにヒットし、レプリケーションは「背後」です。

(私のコメントは、すべてのバージョンに適用され、すべてのAPIは、5.1とPHPのMySQLIだけではありません。)

私はmysql_pconnect(およびその他の接続プーリングメカニズム)に近づかないようにします。 MySQLでは、接続の起動/涙が非常に高速です。プールされた接続には、@variables、トランザクションモード、sql_modesなどに問題がある場合があります。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top