- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:トリガが設定されたMySQL5.5準同期)
MySQL5.5準同期で高負荷サイトを構築する際のトリガの組み方について
このQ&Aのポイント
- MySQL5.5の準同期レプリケーションを使って、マスターサーバー(insert用)とスレーブサーバー(select用)を組み合わせた高負荷サイトを構築する際のトリガの組み方についてアドバイスをいただきたいです。
- マスター側のサイトではトリガーとイベントを多用し、連鎖的に変更されるトリガを使用しています。スレーブ側も同様のトリガを組んでいます。ただ、マスター側のトリガの計算よりもスレーブ側の計算の方が早く終了した場合、エラーが発生する可能性があり、これを防ぐためのアドバイスをお願いします。
- スレーブのトリガーを外すのは簡単な方法ですが、マスターがハングアップした際にはスレーブを昇格させる予定なので、トリガーは残しておきたいと考えています。実際にトリガーを使った高負荷サイトを構築し、スレーブサーバーを準同期で設定している方からのアドバイスをお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こういう質問をするなら、semi-sync-replication の有無より、レプリケーションとトリガーの組み合わせについて質問するなら、バイナリログのフォーマット設定も書き込むべきじゃないかな? http://dev.mysql.com/doc/refman/5.5/en/replication-features-triggers.html MySQL 5.1のだけど、日本語ならここ http://dev.mysql.com/doc/refman/5.1/ja/stored-procedure-logging.html もうマニュアルに書かれていることだから説明するのも二度手間になるけど… row-basedなら、バイナリログでテーブルのデータが更新されてもトリガーがスレーブ側で実行されることは無いので、実行順序の問題は原理的に生じない。(トリガーで更新されたテーブルのデータもバイナリログに記録されてスレーブに反映される) statement-basedならスレーブでもトリガーが実行されるので、実行順序に関しての保障は無い。 というのが回答になります。 で、"これはお願いなのですが、~(省略)~実際に運用経験があり、正確な知識をお持ちの方にアドバイス頂きたいと思います。"こういう情報がほしければ、お金を払ってプロに頼んでください。
お礼
大変ありがとうございます。 とても有益な情報ありがとうございました。 マニュアルに記載されている情報だったのですね。実務レベルでしか分からないものとばかり思っておりました。 大変失礼いたしました。 お願いの部分で不愉快に感じさせましたこと、お詫び申し上げます。 一度簡単な回答が付くと、本当に情報をお持ちの方から飛ばし読みされてしまうと感じましたので、このような記載をさせて頂きました。大変申し訳ございませんでした。 今回大変貴重な回答を得られたことにより、自信を持って開発を進めることが出来ます。 本当にありがとうございました。