Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OCI MySQL Database高可用性&HeatWave検証

OCI MySQL Database高可用性&HeatWave検証

More Decks by Database Technology Inc.

Other Decks in Technology

Transcript

  1. 1. はじめに 2. 検証結果 1. 高可用性 2. HeatWave 3. 総評

    © 2021 Database Technology Inc. All Rights Reserved. 2 目次
  2. この度 弊社は MDS検証の第2回検証項目として、 高可用性ならびにHeatWaveの運用における調査・検証、 シングル構成とのパフォーマンス比較を実施しました。 その結果を本資料に纏めましたので 是非ご参考にしていただき サービス利用、 事前調査等の一助となれば幸甚です。 第1回検証結果についてはスライドシェアにて公開しております。

    https://www.slideshare.net/ssuserbe6417/oracle-cloud-infrastructuremysql-database-servise2021416upd-246305196?qid=490e8f42- 6dff-46e2-b92a-8a047f828b0a&v=&b=&from_search=3 © 2021 Database Technology Inc. All Rights Reserved. 3 はじめに 高可用性に関してはLimited Availabilityリリース時点のものとなります。 Oracle、MySQLは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。
  3. 1. 高可用性 1. 構築・操作 2. 切り替えテスト 3. パフォーマンステスト © 2021

    Database Technology Inc. All Rights Reserved. 4 検証項目 2. HeatWave 1. 機能概要調査 2. 構築・操作 3. パフォーマンステスト 4. 別視点でのパフォーマンステスト
  4. © 2021 Database Technology Inc. All Rights Reserved. 6 MDS高可用性構成の説明

    MySQLのグループレプリケーションで実装されており、 プライマリと2つのセカンダリの3つのMySQLインスタンスで構成されています。 ADまたはFD
  5. © 2021 Database Technology Inc. All Rights Reserved. 7 利用概要図

    VCN SUBNET DBシステム Internet Gateway Route Table Security Lists Security Lists クライアント AD-1 AD-2 AD-3 プライマリ セカンダリ セカンダリ ユーザーはDBシステムのエンドポイントにアクセスすることで、 高可用性を意識することなく稼働中のプライマリインスタンスにアクセスできます エンドポイント
  6. © 2021 Database Technology Inc. All Rights Reserved. 8 構築

    スタンドアロンのDBシステム構築手順の構成選択で、 「高可用性」を選択することで構築できます。
  7. © 2021 Database Technology Inc. All Rights Reserved. 9 プライマリの手動切り替え

    DBシステムの詳細画面で手動切り替え可能です。
  8. © 2021 Database Technology Inc. All Rights Reserved. 10 バックアップ

    従来のDBシステムのバックアップ手順と一切の差異がありません。 リストア 従来のDBシステムのリストア手順と一切の差異がありません。 構成選択では「高可用性」以外が選択不可となる制御がされています。 選択不可 選択不可
  9. © 2021 Database Technology Inc. All Rights Reserved. 11 高可用性構成のDBシステム構築は、作成時はラジオボタン形式の選択で

    「高可用性」を選ぶだけで作成でき、非常に簡単に構築可能です。 バックアップ・リストアについては特別必要な操作や設定もありません。 見解
  10. AD-1 AD-2 AD-3 プライマリ セカンダリ セカンダリ © 2021 Database Technology

    Inc. All Rights Reserved. 13 検証内容 DBシステム クライアント ⚫ 切り替え時のアプリの挙動 ⚫ 一時停止 or 切断 ⚫ 再接続される or されない ⚫ 切り替えに掛かる時間 ※SQLで結果が取得できない時間 検証方法 ⚫ 手動切り替え ※WEBコンソールで操作 ⚫ フェイルオーバー ※mysqlslapでメモリ負荷をかけて発生させる SQL連続発行 切り替え mysqlslap:MySQL公式サポートの負荷エミュレーションクライアント https://dev.mysql.com/doc/refman/ja/mysqlslap.html
  11. © 2021 Database Technology Inc. All Rights Reserved. 14 検証環境

    AD-1 AD-2 AD-3 プライマリ セカンダリ セカンダリ DBシステム クライアント クライアント シェイプ VM.Standard2.1 CPU 1 OCPU メモリ 15 GB ストレージ 50 GB アプリ Apache JMeter DBシステム 構成 高可用性 シェイプ MySQL.VM.Standard.E3.1.8GB CPU 1OCPU メモリ 8GB ストレージ 50GB Apache JMeter:JDBCリクエストやJavaプログラムを実行できるテストツール https://jmeter.apache.org/
  12. © 2021 Database Technology Inc. All Rights Reserved. 15 検証結果

    切り替え方法 アプリの挙動 再接続 再接続可能になるまでの時間 手動切り替え 切断される されない 1.558秒(10回平均値) フェイルオーバー 切断される されない 2.842秒(3回平均値) 切り替えが行われると、接続中アプリは切断されることが確認できました。 自動再接続はされませんので、アプリ側は再接続するような仕組みが必要です。 切り替えに掛かる時間は概ね1~3秒ですので、 アプリ側による再接続試行は1秒毎に数回が望ましいと考えます。
  13. ⚫ アプリ側 DB接続状況 ①・・・検証開始 特に何も発生せず(2分間) ②・・・3分半、SQLレスポンスなしを確認 ③・・・4分間、DB接続エラーを確認(コネクションプールはここで切断) ④・・・2分間、DB接続及びSQL応答を確認 ⑤・・・2秒間 DB接続エラーを確認

    ⑥・・・DB接続が可能となり、SQL応答あり ※②、③の状況はスワップ等 応答に時間のかかる状況若しくは ネットワークのサチ レーションが発生したと推察される(オラクル社MDSプロダクトマネージャ様見解) フェイルオーバー発生 切断 フェイルオーバーによる影響
  14. © 2021 Database Technology Inc. All Rights Reserved. 17 フェイルオーバーの発生と挙動

    mysqlslap を使用してメモリ負荷をかけることで、 フェイルオーバーの発生を確認しました。 プライマリが落ちた後、hostnameの切り替わりが確認できたので、 問題なくフェイルオーバーされたと考えています。 フェイルオーバーして状態がアクティブになってから、 旧プライマリへスイッチバックを行うと、 旧プライマリのhostnameが取得できたことから 自動復旧はされたと考えています。
  15. © 2021 Database Technology Inc. All Rights Reserved. 19 検証内容

    1分間に処理できるトランザクション数「tpmC」を計測します 検証方法 ベンチマークツール:tpcc-mysqlを使用 テスト毎にDBをバックアップより再作成します 高可用性構成については、プライマリの切り替え前後共に計測します 高可用性構成はADを跨いだ構成で計測します
  16. © 2021 Database Technology Inc. All Rights Reserved. 20 検証環境

    AD-1 AD-2 AD-3 プライマリ セカンダリ セカンダリ DBシステム (高可用性) クライアント クライアント シェイプ VM.Standard.E3.Flex CPU 48 OCPU メモリ 768 GB ストレージ 500 GB 負荷ツール tpcc-mysql DBシステム 構成 シングル / 高可用性 シェイプ MySQL.VM.Standard.E3.16.256GB CPU 16 OCPU メモリ 256 GB ストレージ 300 GB データ量 約 15 GB DBシステム (シングル) ADを跨いだ構成
  17. © 2021 Database Technology Inc. All Rights Reserved. 21 検証結果

    17,751 28,372 40,885 49,168 74,492 94,772 14,123 26,068 28,036 28,206 28,524 28,597 0 10,000 20,000 30,000 40,000 50,000 60,000 70,000 80,000 90,000 100,000 10 20 30 50 100 500 TpmC 同時接続数 シングルと高可用性の比較 シングル 高可用性(ADを跨いだ構成)
  18. © 2021 Database Technology Inc. All Rights Reserved. 22 検証結果

    14,123 15,468 9,753 0 5,000 10,000 15,000 20,000 10 TpmC 同時接続数 手動切り替え前後の比較 切り替え前 切り替え後 同一AD 切り替え後 クライアントとDBシステムが異なるAD
  19. © 2021 Database Technology Inc. All Rights Reserved. 23 検証結果

    高可用性構成の方がパフォーマンスが低い結果となりました。 グループレプリケーションのノード間同期による影響であると考えられます。 プライマリの切り替えによるパフォーマンスの影響は 殆ど無いと言える結果となりました。 ただし、クライアントとプライマリが異なるADとなる場合、 パフォーマンスが落ちる結果となりました。 ADが異なることで距離的優位性が下がるためと考えられます。 同一AD内でFDを跨いだ構成の場合は、 今回の結果ほどパフォーマンスが落ちないと思われます。
  20. © 2021 Database Technology Inc. All Rights Reserved. 25 従来の例

    ⚫ OLTPとOLAPで異なるDBで構成 ⚫ データ連携はETLツールで実行 HeatWave ⚫ OLTPとOLAPで単一のDBシステムで構成 ※裏で複数のノード(HeatWaveクラスタ)が稼働 ⚫ データ連携はALTER TABLE文のクエリで実行
  21. © 2021 Database Technology Inc. All Rights Reserved. 26 必須システム構成

    ⚫ 前提条件 サービスリミットが最小構成を満たしていること ⚫ DBシステム構成 MySQL Database for HeatWave VM.Standard.E3 Nodes Count 1 以上 MySQL HeatWave VM.Standard.E3 Nodes Count 2 以上 シェイプ MySQL.HeatWave.VM.Standard.E3 CPU 16 OCPU メモリ 512 GB ノード数 2 ~ 24 台 ノード1台あたり約400GBのデータを保持可能
  22. © 2021 Database Technology Inc. All Rights Reserved. 28 利用概要図

    VCN SUBNET DBシステム Internet Gateway Route Table Security Lists Security Lists クライアント ユーザーはDBシステムのエンドポイントにアクセスし、 通常のMDSを使用する時と同じSQL文でHeatWaveによる高速分析が可能です HeatWaveクラスタ データロード
  23. © 2021 Database Technology Inc. All Rights Reserved. 29 HeatWave利用方法

    1.DBシステム構築 スタンドアロンのDBシステム構築手順の構成選択で、「HeatWave」を選択し、 HeatWave利用可能なDBシステムを構築します。
  24. © 2021 Database Technology Inc. All Rights Reserved. 30 HeatWave利用方法

    2.HeatWaveクラスタの追加 DBシステムの詳細画面で、HeatWaveクラスタを追加します
  25. © 2021 Database Technology Inc. All Rights Reserved. 31 HeatWave利用方法

    3.データロード 対象テーブルのSECONDARY_ENGINEを「RAPID」に設定します。 mysql> ALTER TABLE テーブル名 SECONDARY_ENGINE=RAPID; mysql> ALTER TABLE テーブル名 SECONDARY_LOAD; データをHeatWaveにロードします。 ※HeatWaveノードの再起動時には、データロードを再度行う必要があります。 以上で、HeatWaveでの高速分析が可能になります ※テーブルは作成済みの前提 ※1回のみ
  26. © 2021 Database Technology Inc. All Rights Reserved. 32 HeatWaveクラスタの停止・起動

    DBシステムの詳細画面で、ボタンクリックで起動・停止が可能です
  27. © 2021 Database Technology Inc. All Rights Reserved. 33 HeatWaveクラスタの削除

    DBシステムの詳細画面で、ボタンクリックで削除が可能です
  28. © 2021 Database Technology Inc. All Rights Reserved. 34 バックアップ

    従来のDBシステムのバックアップ手順と一切の差異がありません。 リストア 従来のDBシステムのリストア手順と一切の差異がありません。 HeatWaveを利用する際には、再度データロードが必要になります。
  29. © 2021 Database Technology Inc. All Rights Reserved. 36 検証内容

    ⚫ SELECT文SQLの応答時間 検証方法 ⚫ スタースキーマベンチマーク https://clickhouse.tech/docs/en/getting-started/example-datasets/star-schema/ ⚫ スタースキーマデータの生成 ⚫ 13種類のSELECT文によるベンチマークテスト HeatWaveクラスタ DBシステム (HeatWave) クライアント DBシステム (シングル) SQL発行
  30. HeatWaveクラスタ © 2021 Database Technology Inc. All Rights Reserved. 37

    検証環境 DBシステム (HeatWave) クライアント クライアント シェイプ VM.Standard.E3.Flex CPU 2 OCPU メモリ 16 GB ストレージ 1024 GB DBシステム 構成 シングル HeatWave シェイプ VM.Standard.E3.16.256GB HeatWave.VM.Standard.E3 CPU 16 OCPU メモリ 256 GB 512 GB ストレージ 1024 GB データ量 約 237 GB(6 億行) 索引 なし あり なし DBシステム (シングル)
  31. © 2021 Database Technology Inc. All Rights Reserved. 38 検証結果

    12:10:43 3:36:04 00:00:45 00:00:00 02:00:00 04:00:00 06:00:00 08:00:00 10:00:00 12:00:00 14:00:00 SQL応答時間 ベンチマーク時間の合計の比較 シングル 索引なし シングル 索引あり HeatWave 約1000分の1 約300分の1
  32. © 2021 Database Technology Inc. All Rights Reserved. 39 検証結果

    00:54:16 01:25:11 1.65秒 00:55:05 00:49:14 1.70秒 00:54:36 00:49:05 1.79秒 00:56:52 00:04:53 2.12秒 00:57:39 00:00:49 2.96秒 00:57:03 00:00:06 1.87秒 00:59:03 00:17:00 5.26秒 00:58:44 00:00:55 3.94秒 00:57:22 00:00:02 4.43秒 00:56:18 00:00:00 3.48秒 00:56:29 00:08:19 3.94秒 00:54:07 00:00:19 6.35秒 00:53:10 00:00:11 5.06秒 12:10:43 03:36:04 44.55秒 シングル 索引なし シングル 索引あり HeatWave 100% ベンチマーク各種SQLの時間の割合 合計 Q4.3 Q4.2 Q4.1 Q3.4 Q3.3 Q3.2 Q3.1 Q2.3 Q2.2 Q2.1 Q1.3 Q1.2 Q1.1
  33. © 2021 Database Technology Inc. All Rights Reserved. 40 検証結果

    ベンチマーク(selectによるデータ取得時間)の合計に関しては、 HeatWaveの方が約1000分の1の時間で取得できる結果となりました。 ただし、検索対象によって絞られる件数次第では、 HeatWaveよりも索引利用した方が早くなる傾向が見られました。 ベンチマークの合計に対する各種SQLの割合について、 シングルではあまりバラつきが見られませんが、 HeatWaveではバラつきが見られました。 ※最大でQ4.2の約500分の1、最小でQ1.1の約2000分の1 HeatWaveによる改善比率はSQLの内容によってバラつきがあることが言えます。
  34. © 2021 Database Technology Inc. All Rights Reserved. 42 検証内容

    ⚫ 多重JOINクエリ 検証方法 自己結合を複数回繰り返した重いSQLの応答時間を、 HeatWaveの連携状態で比較します HeatWaveクラスタ DBシステム (HeatWave) クライアント SQL発行 ・多重JOIN HW連携切替
  35. © 2021 Database Technology Inc. All Rights Reserved. 43 検証結果

    00:08:39 00:24:36 00:00:00 00:05:00 00:10:00 00:15:00 00:20:00 00:25:00 00:30:00 SQL応答時間 多重のJOINの比較 HeatWave無効 HeatWave有効 テーブルサイズ:約237GB 行数:約6億行 自己結合を行うSQLは、HeatWaveの方が遅くなる結果となりました。
  36. © 2021 Database Technology Inc. All Rights Reserved. 44 検証内容

    ⚫ 全文検索との比較 検証方法 ⚫ 文字列カラムに対する部分一致検索 ⚫ HeatWave無効:LIKE検索 ⚫ HeatWave有効:LIKE検索 ⚫ HeatWave無効:全文検索(FULLTEXTインデックス) HeatWaveクラスタ DBシステム (HeatWave) クライアント SQL発行 ・LIKE検索 ・全文検索 HW連携切替
  37. © 2021 Database Technology Inc. All Rights Reserved. 45 検証結果

    4.14 秒 3.93 秒 4.13 秒 4.15 秒 0.14 秒 0.10 秒 0.13 秒 0.41 秒 0.00 秒 1.00 秒 2.00 秒 3.00 秒 4.00 秒 5.00 秒 Q1 Q2 Q3 Q4 SQL応答時間 LIKE検索 HeatWave有効/無効の比較 HeatWave無効 HeatWave有効 テーブルサイズ:約1.3GB 行数:約388万行
  38. © 2021 Database Technology Inc. All Rights Reserved. 46 検証結果

    0.14 秒 0.10 秒 0.13 秒 0.41 秒 0.02 秒 0.01 秒 0.01 秒 0.01 秒 0.00 秒 0.10 秒 0.20 秒 0.30 秒 0.40 秒 0.50 秒 Q1 Q2 Q3 Q4 SQL応答時間 LIKE検索と全文検索の比較 HeatWave有効 LIKE検索 HeatWave無効 全文検索 テーブルサイズ:約1.3GB 行数:約388万行
  39. © 2021 Database Technology Inc. All Rights Reserved. 47 検証結果

    テキストのLIKE検索では、索引利用可能な前方一致のみならず、 後方一致と部分一致でもHeatWaveで約30倍早くなる結果となりました。 部分一致に関しては、HeatWaveでのLIKE検索よりも、 FULLTEXTインデックスによる全文検索の方が早い結果となりました。 文字列検索においては、全文検索とHeatWaveを使い分けることで より高いパフォーマンスを得ることが出来ると考えます。
  40. © 2021 Database Technology Inc. All Rights Reserved. 48 検証内容

    ⚫ HeatWaveの強制利用 検証方法 通常でHeatWaveが利用されないSQLを、 HeatWave強制利用して実行した場合の比較 HeatWaveクラスタ DBシステム (HeatWave) クライアント HW連携済み SQL発行 ・通常 ・HW強制利用
  41. © 2021 Database Technology Inc. All Rights Reserved. 49 検証結果

    0.11 秒 0.75 秒 0.00 秒 0.10 秒 0.20 秒 0.30 秒 0.40 秒 0.50 秒 0.60 秒 0.70 秒 0.80 秒 0.90 秒 1.00 秒 SQL応答時間 HeatWave強制利用 通常 HeatWave強制利用 テーブルサイズ:約4GB 行数:2000万行 HeatWave強制実行で、極僅かにパフォーマンスが落ちる場合があります
  42. © 2021 Database Technology Inc. All Rights Reserved. 50 検証内容

    ⚫ 挿入・更新・削除 検証方法 HeatWaveの連携状態で比較します 2000万行の挿入・更新・削除にかかる時間を計測します HeatWaveクラスタ DBシステム (HeatWave) クライアント SQL発行 ・INSERT ・UPDATE ・DELETE HW連携切替
  43. © 2021 Database Technology Inc. All Rights Reserved. 51 検証結果

    00:04:11 00:01:44 00:01:29 00:04:12 00:01:44 00:01:33 00:00:00 00:01:00 00:02:00 00:03:00 00:04:00 00:05:00 挿入 更新 削除 SQL応答時間 挿入・更新・削除 HeatWave無効 HeatWave有効 テーブルサイズ:約4GB 行数:2000万行 挿入・更新・削除は、HeatWaveの連携状態で差はない結果となりました
  44. © 2021 Database Technology Inc. All Rights Reserved. 53 高可用性

    ⚫ 構築・利用は極めて簡単 ⚫ 切替時間は短時間 ⚫ ADを跨いで高可用性を組んだ場合、ネットワーク通信による オーバーヘッドが発生する ⚫ フェイルオーバー時は自動復旧
  45. © 2021 Database Technology Inc. All Rights Reserved. 54 HeatWave

    ⚫ 構築・利用は極めて簡単 ⚫ SQLは分析用と意識しなくてもよい(利用は自動判定) ⚫ 分析クエリはInnoDBと比べて極めて速い ⚫ OLTP処理への影響は無し ⚫ 初回(起動時)データロード以外のデータ同期は自動