2007/11/22 木曜日

MySQL リプリケーションとストアド

Filed under: mysql — admin @ 16:59:25

ストアドプロシージャと、リプリケーションを両方使う場合はすんなりうまく行かない。

まず、リプリケーションをする場合は定義文に
DETERMINISTIC or NOT DETERMINISTICが必要となる
DETERMINISTIC とは引数が同じであれば、返値が同じ場合。
NOT DETERMINISTICの場合は、ランダム関数が入るとかで入力値に対して出力値が毎回違う場合。

ストアドファンクションを定義したあとに、バイナリログをオンにすると、このDETERMINISTICが
定義されてないからおかしなことになる。

そういう場合はDETERMINISTICであるとみなして動かすこともできる。

SET GLOBAL log_bin_trust_function_creators = 1;

また、マスター側でストアドプロシージャのダンプを流すと、
スレーブが止まってしまう致命的なバグがあるようだ。

リプリケーションを使うならストアド系を使わない方が無難かもしれない。

■ 追記 ストアドプロシージャをDUMPしたものがDELIMITERと大文字になっててこれでは動かなかった。
DELIMITER → delimiter としたら動いた。なんでだろう。

No Tags

コメント (0) »

この記事にはまだコメントがついていません。

コメント RSS トラックバック URL

コメントをどうぞ

You must be logged in to post a comment.