set sql_log_bin=0;な話 | Pimp my Code. @wataru420

Pimp my Code. @wataru420

My name is Wataru Fukunaga.

MySQLでSET PASSWORDしたら、大量のSlaveを止めてしまったので備忘録。

starvation   (explored #256)

マスターだけユーザーをイジりたい!


たくさんのSlaveを運用していると、Slave毎にアクセス制限をかけたりしますよね?
このサーバはここからしか接続を許可しないとか、まーそういう感じで。

だけどマスターに接続するユーザーを増やしたい場合、もしくわマスターのユーザーをいじりたい場合、
Slave側とユーザーの設定がずれているので、下手にいじると大量のSlaveが止まります。
これをやってしまった。

SQL_LOG_BIN


そこで、ユーザーをいじるとき、GRANTとかSET PASSWORDとかをする時はSQL_LOG_BINを0にしておきましょう。

SQL_LOG_BINはバイナリログへの記録を行うかどうかのフラグです。
0に設定すると記録されなくなります。
バイナリログへ記録されなければSlaveに伝達されないというわけです。
具体的には下記のような感じです。

SET SQL_LOG_BIN=0;
SET PASSWORD FOR ...
SET SQL_LOG_BIN=1;

これでサーバー毎に設定できますね。
気をつけましょう!

いつもそばに置いておきたい本

エキスパートのためのMySQL[運用+管理]トラブルシューティングガイドエキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
奥野 幹也

技術評論社 2010-06-12
売り上げランキング : 24975

Amazonで詳しく見る