MySQLレプリケーション方式の違いを比較(準同期と非同期とは)

サーバー設定

MySQLのレプリケーション機能では、複数のサーバーにデータを保持することができます。

レプリケーション方式には大きく2種類あり、性能を重視した非同期レプリケーションと、安全性を重視した準同期レプリケーションが存在します。2つの違いについてまとめました。

MySQLのレプリケーションとは

MySQLには「レプリケーション」と呼ばれる機能が備わっています。
レプリケーションを有効化すると、複数のサーバーでデータが保持されます。

主な目的としては以下の3点が挙げられます。

  • サーバー故障時に備えた冗長性確保
  • データベースの負荷分散とそれに伴う性能向上
  • 用途別にサーバーを振り分けるなどの役割分担

レプリケーションを行う場合、いずれか1台が「マスター」として親の役割を果たします。
残りのサーバーは「スレーブ」と呼ばれ、マスターのデータが複製されます。

データベースを書き換える際は必ずマスターで処理し、その内容がスレーブにも反映されます。

スレーブは読み取り専用のデータベースとして利用でき、大量に読み取りアクセスがあるデータベースでは、スレーブを追加することで負荷分散が図れます。

MySQLの準同期レプリケーションは信頼性重視

MySQLの「準同期レプリケーション」は、信頼性を重視した方式です。

マスターサーバーでデータベースを更新すると、その変更内容がスレーブにも転送されます。
スレーブが変更内容を受け取れた時点で、マスターの更新作業が完了扱いとなります。

メリットとしては、仮にマスターサーバーに障害が発生してもデータが保持される点です。変更内容がスレーブに転送されるため、最新のデータはスレーブから救い出すことができます。

デメリットは、スレーブへの転送待ちで処理速度が低下する点です。ネットワーク状況によってはスレーブへの転送に時間がかかり、更新処理の完了が待たされる可能性もあります。

準同期レプリケーションは、データの信頼性を確保したい場合に向いています。

MySQLの非同期レプリケーションは性能重視

MySQLの「非同期レプリケーション」は、デフォルトで使用される方式です。

マスターサーバーでのデータ更新時は、即座に更新作業が完了扱いとなります。
その後、変更内容をスレーブへ転送する流れとなります。

この方式のメリットは、マスターの性能劣化が少ないことです。スレーブへの反映を待たずに処理が完了するため、準同期よりも高速な処理が可能です。

デメリットは、マスターサーバーの障害発生時は最新の変更が残らない可能性がある点です。スレーブへの転送前に障害が発生すると、障害直前の変更が失われる場合があります。

非同期レプリケーションは、高速なレスポンスが求められる場合・アプリケーション側でデータの信頼性が確保できる場合に向いています。

まとめ

MySQLの「準同期レプリケーション」と「非同期レプリケーション」を比較しました。

データの信頼性を重視するか、高速なレスポンスを重視するか、のいずれかで選択するべき方式が異なってきます。システム構成や要件を考慮しつつ、検討しましょう。

【関連記事】