MDS H/A(High Availability)を使ってみた
こんにちは。Oracle Cloud Infrastructure(OCI)特集 編集部です。
以前にMySQL Database Service (MDS)を使用したブログを記載していました。
MySQL Database Service (MDS)を使ってみた
そのMDSにおいて、2021年3月31日に新しくH/A(High Availability)の機能が追加されたので、
実際に使ってみたいと思います。
MDS H/Aの概要
OCI公式マニュアルから引用します。
MySQL Database High Availabilityは、MySQL Group Replicationを使用してスタンバイ・レプリカを提供し、データの保護とビジネスの継続性を実現します。MySQLグループレプリケーションは、Paxosアルゴリズムを実装しています。高可用性DBシステムは、プライマリと2つのセカンダリの3つのMySQLインスタンスで構成されます。プライマリ・インスタンスに書き込まれたすべてのデータは、セカンダリにも書き込まれます。プライマリに障害が発生した場合、セカンダリの1つが自動的にプライマリに昇格し、読み書き可能なモードに設定され、データを失うことなくクライアントアプリケーションの利用を再開します。
・MySQL Group Replicationについて
https://dev.mysql.com/doc/refman/8.0/en/group-replication.html
■今回の作業の流れ
- MDS H/Aの作成
- HDS H/Aへの接続
- 性能検証
1.MDS H/Aの作成
OCI Webコンソールにログインし、MDSの画面を開きます。
「MySQL DBシステムの作成」をクリックします。
設定値を入力していきます。※最低限必要なパラメータのみ記載しています。
- 名前:[任意の名前]
- ???:高可用性
- ユーザー名:[任意のユーザー名]
- パスワード:[任意のパスワード]
- 仮想クラウドネットワーク:[任意の仮想クラウドネットワーク]
- サブネット:[任意のサブネット]
※「配置の構成」ですが、サブネットを可用性ドメイン固有にした場合、もしくは東京リージョンのように可用性ドメインが1つのリージョンの場合は、フォルトドメインを選択する形になります。
最後に「作成」をクリックします。
15分ほどで作成が完了しました。
次に、Webコンソール上から簡単にスタンドアロンのMDSとの違いを確認してみます。
まず、「DBシステムの構成」から「OCPU」、「メモリー」、「ストレージ・サイズ」が3倍になっている(インスタンスが3つ起動している)ことが確認できます。
また、「高可用性」が有効となっています。
続いて、「他のアクション」から「スイッチオーバー」をクリックします。
この画面から手動でスイッチオーバーを行うことができます。
※サブネットを可用性ドメイン固有にした場合、もしくは東京リージョンのように可用性ドメインが1つのリージョンの場合は、フォルトドメインごとになります。
2.MDS H/Aへの接続
同じ仮想クラウドネットワーク内のサーバーから、mysqlコマンドでMDSへ接続してみます。
接続先は、スタンドアロンのMDSと同様にプライベートIPアドレス、もしくはホスト名で指定します。
※接続先のプライベートIPアドレスは、MySQL DBシステムの詳細画面から確認できます。
無事接続できました。
3.性能検証
概要
スタンドアロン構成のMDSとHA構成のMDSで、クエリ処理の性能を比較してみたいと思います。
検証方法
ツールはmysqlslapを使用します。
5ユーザーから合計30万回クエリを実行し、処理にかかった時間を比較します。
クエリは、検索系(select)と更新系(update, insert)それぞれで行います。
検索するテーブルには事前に1万レコード作成します。
使用するスペックはスタンドアロン/HA構成とも以下とします。
- シェイプ:MySQL.VM.Standard.E3.1.8GB
- OCPU数:1
- メモリー:8 GB
また、ツールを実行するサーバーは以下を使用しました。
- OS:CentOS7
- シェイプ:VM.Standard.E3.Flex
- OCPU数:1
- メモリー:8 GB
結果
HA構成 | スタンドアロン構成 | |
検索系 | 25.964 | 25.225 |
更新系 | 319.184 | 162.282 |
まとめ
今回、MDSに新しくH/A(High Availability)の機能が追加されたので、
実際に使ってみました。
オプション1つで、とても簡単にHA構成の構築を行うことができました。
その他に気付いた点として、
MDS/HAは sql_require_primary_key パラメータがデフォルトでONとなっており、
テーブル作成時にプライマリキーが必須となっている模様です。
OFFにするには構成を作成してMDS/HAを再構築する必要があるのでご注意ください。
今後もMDSに便利な機能が追加されていくと思うので、注目していきたいですね。