MySQL InnoDB Clusterと Amazon Aurora MySQL の HA 構成の比較:アプリケーションからの接続

前回は、MySQL InnoDB Clusterと Amazon Aurora MySQL の概要について書きました。

今回はアプリケーションからの接続という観点について話したいと思います。

MySQL InnoDB Cluster

MySQL InnoDB Cluster では、Group Replicaiton によって MySQL のグループレプリケーションメンバーの自動的な障害ノード検知や自動フェールオーバーが行われます。

MySQL InnoDB Cluster では、MySQL Router がクライアントからの接続エンドポイントとして機能します。
MySQL Router のデプロイは以下のコマンドにより、接続先の MySQL Server からメタデータを取得し自動的に設定を構成します。
この時 MySQL Router は group_replication_single_primary_mode のシステム変数を確認することで、対象の Group Replication がシングルプライマリモードがマルチプライマリモードかを判断しています。

shell> mysqlrouter --bootstrap localhost:3310 --directory /opt/myrouter --user mysql

MySQL Router はデフォルトで、Read/Write の接続ポートを 6446, Read Only のポートを 6447 で受け付けます。
Group Replication のノード障害が発生した場合 MySQL Router が正しいルーティング先に設定するため、アプリケーションは MySQL Router に接続するだけで、接続先を意識する必要がありません。

アプリケーションから MySQL InnoDB Cluster への接続

アプリケーションからMySQL InnoDB Clusterへの接続

 

Amazon Aurora MySQL

Amazon Aurora Cluster にはクラスタエンドポイント、読み込みエンドポイント、インスタンスエンドポイントが提供されています。

クラスタエンドポイントは常に Writer インスタンスを指します。読み込みエンドポイントは、Reader インスタンスのインスタンスエンドポイントが CNAME で登録されています。インスタンスエンドポイントは、個々の Aurora インスタンスに接続するためのエンドポイントです。

アプリケーションから Amazon Aurora MySQL への接続

アプリケーションからAmazon Aurora MySQLへの接続

Writer ノードの障害が発生し、フェールオーバーが起きると自動的にクラスタエンドポイントと読み込みエンドポイントは正しい設定に再構成されます。また、Amazon Aurora MySQL のアーキテクチャ仕様のためと思われますが、キャッシュの整合性を取るためにフェールオーバー発生時には各 Reader の Aurora プロセスがリスタートされます。

また Amazon Aurora MySQL では、MariaDB Connector J のドライバ使用で高速フェールオーバーが実現可能です。

ドライバにクラスタエンドポイントを登録することで1、MariaDB Connecotor J は Aurora のメタデータ(information_schema.replica_host_status) を利用し、innodb_read_only システム変数で Writer ノードの識別を行っています。 検証した結果で確認出来ていますが、AWS の提供するエンドポイントの切り替わりより早く、フェールオーバー発生時に Writer ノードの判別が可能です。

最後に

最後に、それぞれの特徴について表としてまとめました。

MySQL InnoDB Cluster と Aurora MySQL の機能比較
  MySQL InnoDB Cluster Amazon Aurora MySQL
対応ストレージエンジン InnoDB InnoDB
MySQLバージョン 5.7.17~ 5.6.10互換
オープンソース
( GPLv2 )
×
データ同期 Group Replication Auroraストレージ
Quorum 過半数 書き込みは4つ、読み込みは3つ
マルチマスター
( preview )
自動フェールオーバー
自動リカバリ
( GTID差分リカバリ )

( Auroraストレージによる自動修復 )
自動バックアップ ×
シャーディング
( 対応予定 )
×
Read/Write振り分け MySQL Router クラスタエンドポイント
読み込みエンドポイント
管理 MySQL Shell AdminAPI GUI、AWS CLI

 

MySQL InnoDB Cluster はシャーディングについて今後対応予定です。
また、Amazon Aurora MySQL はこのブログを書いている最中に、マルチマスター対応が preview 版として発表されました。
両者とも機能のアップデートが続いておりますので、引き続き情報を追っていきたいと思います。

最後まで読んで頂きありがとうございました。

 

  1. MariaDB Connector J 1.5.1以前のバージョンの場合は、全てのインスタンスエンドポイントを登録して利用します。
タイトルとURLをコピーしました