--sync-binlog
提供:MySQL Practice Wiki
| ファイル | my.cnf/my.ini |
| セクション | [mysqld] |
| データ型 | Integer |
| デフォルト値 | 0 (同期しない) |
| 値の範囲 | 0 - 4294967295 |
| 効果 | 下記参照 |
| 効果の有効範囲 | mysqld |
| 使用頻度 | 中 |
説明
何回のトランザクションごとにバイナリログをディスクへ同期するかを調整するパラメーター。AUTO COMMITモードのときには、いくつのステートメントごとに同期するのかを決定する。ディスクへの同期にはfdatasync()を使用する。ディスクへの同期はバイナリログの安全性を高めるが、同期の回数が多いと性能が落ちてしまう。しかしバイナリログの損傷は、特に多数のスレーブを使って負荷分散を行っているようなサイトでは非常に重要な問題であるので、極力避けたい問題である。そのような場合は小さな値をお勧めする。
sync_binlogが1に設定されるとMySQLは特別な動作をする。トランザクションがInnoDBだけから成る場合、2相コミットを使用してバイナリログがInnoDBのログと同期するようになるのである。(5.0.x以上・・・詳細失念)そのさい、トランザクショナルなファイルシステムと組み合わせると、バイナリログに対する中途半端な書き込みがなくなるのでさらに安全性が高まる。
バイナリログの安全性を高める場合、以下のような構成をとるのが最適だろう。
- sync_binlog=1に設定する。
- トランザクショナルなファイルシステムを使用する。(ext3やzfsなど。)
- バイナリログをデータディレクトリとは別のディスクに保存する。(これはI/Oの負荷分散のためである。さらに性能を考えるなら、キャッシュ付きのRAIDカードまたはアレイ装置を使うといいだろう。)