mysql ソフトウェア:私のmysqlレプリケーションサーバーを監視するための提案はありますか?
-
09-06-2019 - |
質問
レプリケーション サーバーのセットアップに苦労しました。レプリケーションの問題を監視して解決できるプログラム (OS X、Win、Linux、または php で問題ありません) はありますか?(ちなみに、次の方々のために、私はこの問題に取り組んでいます ここ, ここ, ここ そして ここ. 。私のやり方が間違っているか、私が非常に太っているかのどちらかです)
私の運用データベースのサイズは数メガであり、さらに増加しています。データベースのレプリケーションが停止し、必然的にデータベースの同期が外れ始めるたびに、私はうんざりします。前回のダンプからの再同期には往復でほぼ 4 時間かかりました。
いつものように、同期後でも、この種の重大なエラーが発生します。」
Error 'Duplicate entry '252440' for key 1' on query.
何が起こっているかを注意深く監視し、おそらくソフトウェアに対処させる何らかの方法があれば、私はとてもうれしいです。私は、データをより適切に監視するのに役立つサービス会社にも耳を傾けています。または、完全にミラーリングする別の方法。
編集:以前の質問を調べて見つけた これ それはとても役に立ちます。私は今でも監視ソリューションに注目しています。
乾杯、
/mp
解決
サーバーを監視するには、無料の Maatkit のツール ...シンプルでありながら効率的です。
バイナリ レプリケーションは 5.1 で利用できるので、ある程度は理解できたと思います。私たちは今でも 5.0 を使用しており、問題なく動作しますが、もちろん問題もありました。
MySql プロキシをロードバランサとして前面に配置したマスター-マスター レプリケーションを使用し、エラーが発生しないようにします。
- すべての一意のインデックスを削除しました
- 本当に一意の制約が必要な場合には、INSERT ではなく REPLACE を使用するようにしました (適切な使用を保護するために MySql プロキシを使用できます...)クエリを書き換えることもできます)
- 集中的なレポートを実行するスケジュールされたスクリプトは、常に同じサーバー (ロードバランサーではない) にアクセスします...危険な操作を安全に再現できるように
そうですね、単純で愚かに聞こえるかもしれませんが、これで私たちが抱えていたすべての問題の 95% が解決されました。
他のヒント
mysql レプリケーションを使用して、30 台近くのサーバーにデータを複製します。nagios を使用してそれらを監視します。おそらく、レプリケーションのステータスを確認し、イベント ハンドラーを使用して「SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;」でレプリケーションを再起動できます。スレーブを開始します;'。これでエラーは修正されますが、エラーの原因となった挿入内容は失われます。
エラーについてですが、スレーブでメモリ テーブルを使用していますか?このような質問をしたのは、mysql の最新リリースのバグが原因でこのようなエラーが大量に発生したのは一度だけだからです。「フィールド = 値のテーブルから削除」は、メモリ テーブルに複数の行がある場合でも、メモリ テーブル内の 1 行のみを削除します。