MySQLでのレプリケーション
目次
◎レプリケーションとは
◎レプリケーションの用途およびメリット・デメリット
◎レプリケーションの設定方法
◎レプリケーションの運用
◎レプリケーションとは
MySQLではマスタからスレーブヘの複製は非同期に行われるのが標準である*1。
ここで、レプリケーションの種類と仕組みについて整理する。
片方向レプリケーション | 双方向レプリケーション | |
非同期レプリケーション | ・マスタ→スレーブという片方向でのレプリケーション。・I/Oスレッドによる「スレーブでのバイナリログの受信」とSQLスレッドによる「スレーブでのバイナリログの実行」という2段階のステップが非同期に行われるレプリケーション。 | ・マスタを2個以上持たせて、それぞれのマスタを更新できるようにした構成。MySQL Clusterが双方向レプリケーションの機能を有する。 |
準同期レプリケーション | ・マスタ→スレーブという片方向でのレプリケーション。・I/Oスレッドによる「スレーブでのバイナリログの受信」は同期的に行われるが、SQLスレッドによる「スレーブでのバイナリログの実行」は非同期に行われるレプリケーション。 | ・マスタを2個以上持たせて、それぞれのマスタを更新できるようにした構成。MySQL Clusterが双方向レプリケーションの機能を有する。 |
同期レプリケーション | MySQLには同期レプリケーションが無い。 | MySQLには同期レプリケーションが無い。 |
非同期レプリケーションでは、マスタのバイナリログにデータを書き込んだらクライアントに応答を返すが、準同期レプリケーションではスレーブのリレーログにデータを書き込んでからクライアントに応答を返す。データベースへの反映に関しては非同期レプリケーションと同じく非同期で行われる。
詳細は次のblogが参考になりそうだ。
mysqlの準同期レプリケーションを使ってみる http://t.co/1thIWtAF4H #memo
— graySpace (@graySpace999) 2014, 9月 17
mysqlでマルチマスター レプリケーションを設定してみる http://t.co/18AhZsOZS5 #memo
— graySpace (@graySpace999) 2014, 9月 17
◎レプリケーションの用途およびメリット・デメリット
レプリケーションの用途は次の2つであろう。
・性能向上
・可用性向上
また、片方向/非同期および片方向/準同期レプリケーションのメリット・デメリットをあげる。同期レプリケーションおよび双方向レプリケーションについては、今回は触れない。
片方向/非同期レプリケーション | 片方向/準同期レプリケーション | |
メリット | ・スレーブのリレーログへの反映も、スレーブでのデータの反映も非同期で行われるため比較的性能が良い(同期による待ちが生じない)。 | ・スレーブのリレーログへの反映が同期であるため、クライアントへ応答が返った時に更新情報がスレーブサーバへ届いている(スレーブDBへのデータ反映ではない)ことが保証される。 |
デメリット | ・非同期であるため、マスタに障害が発生した場合に、マスタのバイナリログのスレーブへの反映が保証されない。 | ・マスタからスレーブ間のリレーログとのやりとりが同期であるため、その分レスポンスタイムが悪くなる。 |
◎レプリケーションの設定方法
別の機会に更新します。
(追記)「(続)MySQLでのレプリケーション 〜 実践編1「レプリケーションの設定」」に更新した。
◎レプリケーションの運用
別の機会に更新します。
(追記)「(続)MySQLでのレプリケーション 〜 実践編2「レプリケーションの運用」」に更新した。