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

php でコールバック関数としてクラス関数を呼び出す時のTips

Filed under: php — admin @ 16:36:38

■ コールバック関数としてクラス関数を呼び出す時のTips
例)array_map


array_map(’myclass::myMethod’ , $value);  

?>Instead, you need to do this:  


array_map( array(’myclass’,'myMethod’) , $value);  

?>

::を使うかarrayを使う、クラスの中で使う場合は

array(&$this,'myMethod')

なんてのも良く使う。
参照渡しにしないとダメなんだとか。

No Tags

MySQLのレプリケーション機能解説

Filed under: mysql — admin @ 16:27:24

■ マスター側でリプリケーションユーザー作成

GRANT REPLICATION SLAVE ON *.* TO   repl@host IDENTIFIED BY 'password';

■ 参考リンク

No Tags