レプリケーション
データの複製
MySQL
動作
マスタ側の更新系のクエリが、マスタのバイナリログに記録される。
スレーブの I/O スレッドがマスタの Binlog Dump スレッドに接続し、マスタの Binlog Dump スレッドはバイナリログの内容を送信する
スレーブの I/O スレッドは、受け取ったマスタのバイナリログをリレーログに保存
スレーブの SQL スレッドがリレーログからクエリを読み取って実行
Important
レプリケーション再構築について確認すること
スレーブをマスターに昇格する場合を想定すると、 同期が一番進んでいるもの を選択する
Master_Log_File と Read_Master_Log_Pos が一番進んでいる
Read_Master_Log_Pos と Exec_Master_Log_Pos が一致するまで待ちデータ反映が完了してから作業をはじめる
CHANGE MASTER TO の情報を間違えないこと
Slave_IO_Running と Slave_SQL_Running が両方 Yes
MySQL のログにエラーが出ていないか確認する
http://3.bp.blogspot.com/-4C7Is6XNTpc/TuaNhZm0HOI/AAAAAAAAAzQ/yeRz3kA3LIY/s1600/mysql-replication.png
table: 用語
マスター 参照と更新SQL を受け付けるサーバ
スレーブ マスターから更新 SQL を受け取るサーバ
参照 SQL を受け付けるサーバ
I/O スレッド マスターからバイナリログを受け取り、リレーログへ保存するスレッド
SQL スレッド リレーログに保存された内容を実行
ステートメントベース、ローベースにて内容が異なる
binlog バイナリログ
マスターが受けた更新 SQL を書き込むためのファイル
binlog dump スレッド binlog が更新されるたびに起動され、binlog からイベントを取得し、スレーブに送信するスレッド
master.info I/O スレッドがマスターの IP アドレスや、binlog の進み具合を記録したもの
mysql.slave_master_info テーブル
mysql.slave_relay_log_info テーブル
実装方法
バイナリログの転送