MySQL 5.x レプリケーション概要

MySQLのレプリケーションについて簡単に纏めてみました。

1.片方向
基本的にマスターからスレーブにデータが転送される片方向のレプリケーション。

2.仕組み
マスターのバイナリログをスレーブに転送し、転送されたバイナリログのSQL文をスレーブで実行することで同じ更新結果になる。

3.サーバIDの割り当て
マスターとスレーブに重複しないようサーバIDを割り当てる。

4.レプリケーション情報
スレーブ側はレプリケーションのための設定ファイルが作成される。CHANGE MASTER TO 文というMySQL独自のSQL文を実行することで自動生成され、レプリケーション時にも更新される。

・master.info:マスターへの接続に必要な情報と読み取りを開始するマスターのバイナリログ位置情報

・relay-log.info:転送されたバイナリログがどこまで適用されたかの位置情報

5.スレッドの生成
マスター側に1つ、スレーブ側に2つのスレッドが生成される。

<マスタースレッド>
・Binlog Dumpスレッド:バイナリログをスレーブに転送する。

<スレーブスレッド>
・ I/Oスレッド:マスターから転送されたバイナリログをリレーログファイルとして保存する。

→リレーログファイル保存と同時にmaster.info内のバイナリログの位置情報を更新

・SQLスレッド:リレーログ内の更新系SQL文を実行する。この処理が正常に終わってレプリケーションが完了となる。

→SQL文実行後、relay-log.infoの位置情報を更新

 

参考:現場で使える MySQL (DB Magazine SELECTION)