だるろぐ

2011-08-16

log-binのデフォルト値を使わない

| 23:56 | log-binのデフォルト値を使わないを含むブックマーク

mysqlレプリケーションするときは my.cnf の mysqld セクションに

[mysqld]

log-bin

などと書いてバイナリログを吐く。


このように log-bin とだけ書いた場合、バイナリログの名前は5.1では HOSTNAME-bin.000001 のようなものになる。

--log-bin[=base_name] オプションで起動すると、mysqldで、データ更新に関わる SQL ステートメントのすべてをログ ファイルに書き込みます。base_name の値を指定しない場合、デフォルト名は、-bin を元にするホスト マシンの名前になります。

http://dev.mysql.com/doc/refman/5.1/ja/binary-log.html

5.0では mysqld-bin.000001 だったはず。

まあ、5.1(以降?)では、 log-bin とだけ書いたらバイナリログの名前にホスト名が使われる。


で、もしdb再起動などが起こった場合。レプリケーションが再開されるときには、当然ながらそれまで使っていたファイル名のバイナリログが使われる。

で。db再起動前後でホスト名が変更されていると、レプリケーションが開始されない。

そりゃそうだ、それまで使ってたファイルがどっかいったのだから。


「ホスト名なんて変更するもんでもないし、バイナリログの名前は何でもいいし」のような考えが有ろうが無かろうが、db再起動前後でホスト名が何故か変わるような環境だった場合に加えて

に、レプリケーションがはじまらねぇーな事態になって悲劇のもととなるので、何でもいいから指定しておきましょう。

log-bin=hoge

とかでもいいから。サービス名とかでもいいから。とにかく未指定はやめましょう。


分かりやすく言うとすいませんでした。

kazeburokazeburo 2011/08/17 00:42 relay-logもね

hirafoohirafoo 2011/08/17 01:23 bin-log=hoge って書いても relay-log って書いてたらレプリケーションされないからそれも必須ですね。
補足ありがとうございます。

トラックバック - http://d.hatena.ne.jp/hirafoo/20110816

事務用品 名刺 デザイン