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

Amazon Aurora

con_mame
March 03, 2022

Amazon Aurora

Amazon Aurora MySQL-compatibility 紹介スライド

con_mame

March 03, 2022
Tweet

More Decks by con_mame

Other Decks in Technology

Transcript

  1. © 2021, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Web Services Japan G.K. Amazon Aurora MySQL- Compatible Edition
  2. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 本資料では2022年3⽉3⽇時点のサービス内容および価格についてご説明しています。最 新の情報はAWS公式ウェブサイト(http://aws.amazon.com/ )にてご確認ください。 資料作成には⼗分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価 格に相違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。 内容についての注意点 AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided. 価格は税抜表記となっています。⽇本居住者のお客様が東京リージョンを使⽤する場合、 別途消費税をご請求させていただきます。
  3. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. データベース管理を簡単に • データベースを数分で作成可能 • ⾃動でパッチの適⽤ • 数クリックするだけでスケールアウト可能 • S3への継続的なバックアップ • 障害の⾃動検知と⾃動フェールオーバ Amazon RDS
  4. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora • re:Invent 2014で発表されたRDSの新しいエンジン • Amazonがクラウド時代にリレーショナル・データ ベースを作るとどうなるかを1から考え構築 – 新しい技術的チャレンジを盛り込んでいる • エンタープライズグレードの可⽤性とOSSレベルの コストを両⽴
  5. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora • Amazon AuroraはRDSが提供するエンジンのうちの1つ – RDSでは現在、MySQL / MariaDB / PostgreSQL / Oracle / MS SQL Serverが選択可能
  6. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. vCPU Mem(GiB) Hourly Price db.x2g.large 2 32 $0.377 db.x2g.xlarge 4 64 $0.754 db.x2g.2xlarge 8 128 $1.508 db.x2g.4xlarge 16 256 $3.016 db.x2g.8xlarge 32 512 $6.032 db.x2g.12xlarge 48 768 $9.048 db.x2g.16xlarge 64 1024 $12.064 • ストレージ: $0.120/GB/月 • IO課金: $0.240/100万リクエスト • オレゴンリージョンの価格 • db.x2gインスタンスファミリーは 2.09.2 or 2.10.0以上で対応 Amazon Auroraの価格 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html https://aws.amazon.com/rds/aurora/pricing/ • ライセンス料⾦は 不要 • ロックインもない • 使った分だけ課⾦
  7. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. vCPU Mem(GiB) Hourly Price db.r6g.large 2 16 $0.313 db.r6g.xlarge 4 32 $0.627 db.r6g.2xlarge 8 64 $1.253 db.r6g.4xlarge 16 128 $2.506 db.r6g.8xlarge 32 256 $5.012 db.r6g.12xlarge 48 384 $7.518 db.r6g.16xlarge 64 512 $10.024 • ストレージ: $0.120/GB/月 • IO課金: $0.240/100万リクエスト • 東京リージョンの価格 • db.r6gインスタンスファミリーは 2.09.2以上で対応 Amazon Auroraの価格 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html https://aws.amazon.com/rds/aurora/pricing/ • ライセンス料⾦は 不要 • ロックインもない • 使った分だけ課⾦
  8. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. vCPU Mem(GiB) Hourly Price db.r5.large 2 16 $0.35 db.r5.xlarge 4 32 $0.70 db.r5.2xlarge 8 64 $1.40 db.r5.4xlarge 16 128 $2.80 db.r5.8xlarge 32 256 $5.60 db.r5.12xlarge 48 384 $8.40 db.r5.16xlarge 64 512 $11.20 db.r5.24xlarge 96 768 $16.80 • ストレージ: $0.120/GB/月 • IO課金: $0.240/100万リクエスト • 東京リージョンの価格 • db.r5.8xlarge, 16xlarge, 24xlarge は1.22以上、2.06 以上で対応 Amazon Auroraの価格 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html https://aws.amazon.com/rds/aurora/pricing/ • ライセンス料⾦は 不要 • ロックインもない • 使った分だけ課⾦
  9. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. vCPU Mem(GiB) Hourly Price db.t4.medium 2 4 $0.113 db.t4.large 2 8 $0.225 • ストレージ: $0.120/GB/月 • IO課金: $0.240/100万リクエスト • 東京リージョンの価格 • db.t4.インスタンスファミリー は2.09.2 or 2.10.0以上で対応 Amazon Auroraの価格 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html https://aws.amazon.com/rds/aurora/pricing/ • ライセンス料⾦は 不要 • ロックインもない • 使った分だけ課⾦
  10. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. vCPU Mem(GiB) Hourly Price db.t3.small 2 2 $0.063 db.t3.medium 2 4 $0.125 db.t3.large 2 8 $0.25 • ストレージ: $0.120/GB/月 • IO課金: $0.240/100万リクエスト • 東京リージョンの価格 • db.t3.largeインスタンスは 2.10.0以上で対応 Amazon Auroraの価格 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html https://aws.amazon.com/rds/aurora/pricing/ • ライセンス料⾦は 不要 • ロックインもない • 使った分だけ課⾦
  11. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. vCPU Mem(GiB) Hourly Price db.r4.large 2 15.25 $0.35 db.r4.xlarge 4 30.5 $0.70 db.r4.2xlarge 8 61 $1.40 db.r4.4xlarge 16 122 $2.80 db.r4.8xlarge 32 244 $5.60 db.r4.16xlarge 64 488 $11.20 • ストレージ: $0.120/GB/月 • IO課金: $0.240/100万リクエスト • 東京リージョンの価格 • db.r4インスタンスファミリーは 1.15以降で対応 Amazon Auroraの価格 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html https://aws.amazon.com/rds/aurora/pricing/ • ライセンス料⾦は 不要 • ロックインもない • 使った分だけ課⾦
  12. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. • ライセンス料⾦は 不要 • ロックインもない • 使った分だけ課⾦ vCPU Mem(GiB) Hourly Price db.t2.small 1 2 $0.063 db.t2.medium 2 4 $0.125 db.r3.large 2 15.25 $0.35 db.r3.xlarge 4 30.5 $0.70 db.r3.2xlarge 8 61 $1.40 db.r3.4xlarge 16 122 $2.80 db.r3.8xlarge 32 244 $5.60 • ストレージ: $0.120/GB/月 • IO課金: $0.240/100万リクエスト • 東京リージョンの価格 Amazon Auroraの価格 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html https://aws.amazon.com/rds/aurora/pricing/
  13. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Auroraの特徴 ハイパフォーマンス フルマネージド ⾼可⽤性・⾼耐久性 セキュリティにも配慮 MySQL5.6/5.7互換 スケーラブル
  14. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Auroraの特徴 • MySQL5.6/5.7/8.0と互換性があるため、既存のアプリケーションを簡単に 移⾏可能 • ストレージが10GBから64TiBまでシームレスに拡張 – Aurora MySQL1.23/2.09より最⼤ストレージが128TiBに対応 • 3AZに2つずつ、計6つのデータのコピーを保持 – S3にストリーミングバックアップを実施 • VPC内に起動 – Security GroupやNACLを使⽤してアクセスコントロール可能 • Amazon Auroraは99.99%の可⽤性を実現するように設計されている
  15. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. なぜAmazonがデータベースを再考したか
  16. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 現在のモノリシックなデータベース 複数の機能レイヤーが 1つのアプリケーショ ンになっている SQL Transactions Caching Logging
  17. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 現在のモノリシックなデータベース スケールアウトする 場合は、このセット を増やしていく必要 がある SQL Transactions Caching Logging SQL Transactions Caching Logging Application
  18. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. コスト・可⽤性・柔軟性の⾯で問題
  19. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. リレーショナルデータベースをもう⼀度考える • 今、データベースを再度実装するならどうする か︖ – 少なくとも1970年代の⽅法で実装はしない – AWSサービスを活かすことができ、スケールアウトが簡単で、 セルフヒーリングが出来るようなデータベースを作りたいと考 えた
  20. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. クラウド時代に適したリレーショナルデータベース • ハイエンドデータベースの様なスピード と 可⽤性 • オープンソースデータベースのシンプルさとコスト効果の⾼さ • MySQLと互換性を保つ • 利⽤した分だけお⽀払いいただく課⾦モデル • AWSサービスと簡単に連携 マネージド・サービスとしてご提供
  21. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Establishing our ecosystem “Amazon AuroraがMySQL互換であることは素晴らしいことです。MariaDB ConnectorsはAuroraとシームレスに動作します。 MariaDB Enterprise のMariaDB MaxScaleドライバとコネクタを使ってAurora, MariaDB, そしてMySQLを互換 性の⼼配なく接続出来ます。私たちは今後さらにMySQLエコシステムを加速させるために、 Auroraチームと⼀緒に働くことを楽しみにしています。” ̶ Roger Levy, VP Products, MariaDB
  22. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. アーキテクチャ
  23. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Service Oriented Architecture • ログとストレージレイヤを シームレスにスケールするス トレージサービスに移動 • EC2, Amazon DynamoDB, Amazon SWFなどのAWS サービスを管理コンポーネン トに採⽤ • Amazon S3を利⽤して 99.999999999%の耐久性で ストリーミングバックアップ Data Plane Logging + Storage SQL Transactions Caching Amazon S3 Control Plane Amazon DynamoDB Amazon SWF Amazon Route 53
  24. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. キャッシュレイヤの分離 • キャッシュをデータベースプロセス 外に移動 • データベースプロセスのリスタート が発⽣してもキャッシュが残った状 態を維持可能 • サービスにすぐデータベースを戻す ことが出来る • ⾼速なクラッシュリカバリ + survivable cache = DB障害から⾼速 に復帰可能 SQL Transactions Caching SQL Transactions Caching SQL Transactions Caching キャッシュプロセスをDBプロセス外におくことで DBプロセスの再起動でもキャッシュが残る
  25. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Aurora distributed storage provides: Redo log processing Instant crash recovery Fault-tolerant and self-healing storage Fast database cloning Database backtrack Database snapshots Continuous backups and point-in-time restore Storage automatic scaling independent of compute Read and write scalability Warm cache on database restart Amazon Aurora Delivered as a managed service Low latency replication
  26. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Aurora distributed storage provides: So the database can process your transactions and SQL queries without impact from storage processing activities Amazon aurora Redo log processing Instant crash recovery Fault-tolerant and self-healing storage Fast database cloning Database backtrack Database snapshots Continuous backups and point-in-time restore Storage Auto Scaling independent of compute Read and write scalability Warm cache on database restart Low latency replication
  27. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora MySQL delivers up to 5x the throughput of MySQL 0 50,000 100,000 150,000 200,000 250,000 MySQL 5.7 MySQL 8.0 Aurora 5.7 0 200,000 400,000 600,000 800,000 1,000,000 MySQL 5.7 MySQL 8.0 Aurora 5.7 Write throughput Read throughput Using sysbench read and write workloads on R5.16XL Write and read throughput
  28. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Write and read throughput 1 10 100 1000 10000 100000 0 100 200 300 400 500 600 Write response time (ms) Write response time comparison Aurora 5.7 RDS MySQL 5.7
  29. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Auroraのストレージ • SSDを利⽤したシームレスにスケールするスト レージ – 10GBから64TiBまでシームレスに⾃動でスケールアップ • Aurora MySQL1.23/2.09より最⼤ストレージが128TiBに 対応 – 実際に使った分だけ課⾦ – Peer-to-peer gossipレプリケーション • 標準で⾼可⽤性を実現 – 3AZに6つのデータのコピーを作成 – 2つのディスクが利⽤不能でも読み書き可能 • 万が⼀1つのAZが利⽤不能になっても3本で読み書き可 能な状態で稼働 – 3つのディスクが利⽤不能でも読み込みは可能 • Log structured Storage – redo logを複数の⼩さなセグメントに分割 – Log pageによってData pageを作成 SQL Transactions AZ 1 AZ 2 AZ 3 Caching Amazon S3
  30. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ストレージノードクラスタ • Protection Group毎に6つのストレージノードを使⽤ • 各ログレコードはLog Sequence Number(LSN)を持っており 不⾜・重複しているレコードを判別可能 • 不⾜している場合はストレージノード間でgossip protocolを利⽤し補完を⾏う
  31. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. IO traffic in Aurora (ストレージノード) 全てのステップは⾮同期 ステップ1と 2だけがフォアグラウンドのレイテンシーに影響 インプットキューはMySQLの1/46 (unamplified, per node) レイテンシーにセンシティブな操作に向く ディスク領域をバッファーに使ってスパイクに対処 OBSERVATIONS IO FLOW ① レコードを受信しインメモリのキューに追加 ② レコードを永続化してACK ③ レコードを整理してギャップを把握 ④ ピアと通信して⽳埋め ⑤ ログレコードを新しいバージョンのデータブロックに合体 ⑥ 定期的にログと新しいバージョンのブロックをS3に転送 ⑦ 定期的に古いバージョンのガベージコレクションを実施 ⑧ 定期的にブロックのCRCを検証 Log records Database instance Incoming queue Storage node S3 backup 1 2 3 4 5 6 7 8 Update queue ACK Hot log Data Pages Continuous backup GC Scrub Coalesce Sort Group Peer-to-peer gossip Peer storage nodes
  32. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Auroraのストレージ • Amazon Auroraは6本全てのディスクへの書き込み を待たずに、少なくとも4つのディスクに書き込み が完了するとすぐに次の処理を実⾏ • ホットスポットの影響を取り除き、⾮常に⾼い並列 度を実現 • ストレージはSSDベースのディスクに10GBずつの ブロック内に分散して書き込まれる
  33. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Auroraのストレージの特徴 • リードレプリカもマスタと同じストレージを参照 • Log Structured Storage • 継続的なS3へ増分バックアップ – パフォーマンスへの影響なし • 64TiBまで⾃動でストレージがシームレスにスケールアップ – パフォーマンスや可⽤性に影響無し・利⽤開始時のプロビジョニング不要 – Aurora MySQL1.23/2.09より最⼤ストレージサイズが128TiB • ⾃動で再ストライピング、ミラー修復、ホットスポット管理、暗号化
  34. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Log Structured Storage • 追記型のストレージ・システム – ログの様に常に末尾にデータを追加していくだけ – データが書き込まれているブロックを上書いたりはしない – ガベージコレクションによりデータを効率的に格納する • シーケンシャルに読み出すことが出来る • 常に最新のデータが末尾にある • これらの特徴によりS3への継続バックアップや⾼速なリカバリ、書き込 み性能の向上を実現 空きスペース data data 先頭 data data data 新規データは末尾に追記される ↓
  35. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ディスク障害検知と修復 • 2つのコピーに障害が起こっても、読み書きに影響は無い • 3つのコピーに障害が発⽣しても読み込みは可能 • ⾃動検知、修復 SQL Transaction AZ 1 AZ 2 AZ 3 Caching SQL Transactio n AZ 1 AZ 2 AZ 3 Caching 読み書き可能 読み込み可能
  36. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. レプリケーション AZ 1 AZ 2 Primary Instance Standby Instance EBS Amazon S3 EBS mirror EBS EBS mirror MySQL レプリケーション PITR シーケンシャ ル・ライト シーケンシャ ル・ライト AZ 1 AZ 3 Primary Instance Amazon S3 AZ 2 Replica Instance 改善点 • Consistency – 異常を修復 • Latency – 同期 vs ⾮同期レプリケーション • Network I/Oを効率的に⾏う ⾮同期 4/6クオーラム 分散書き込み Amazon Aurora ログレコード Binlog データ Double-write buffer metadata 書き込みの種類
  37. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. レプリケーション Aurora Master 30% Read 70% Write Aurora Replica 100% New Reads Shared Multi-AZ Storage MySQL Master 30% Read 70% Write MySQL Replica 30% New Reads 70% Write シングルスレッド でBinlog適⽤ Data Volume Data Volume MySQL read scaling • レプリケーションにはbinlog / relay logが必要 • レプリケーションはマスターへ負荷がかかる • レプリケーション遅延が増加していくケースが ある • フェイルオーバでデータロスの可能性がある PAGE CACHE UPDATE
  38. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. レプリケーション • Amazon Auroraは、15台のリードレプリカを 作成可能 – リードレプリカはマスタサーバとストレージを共有しており、 低負荷で粒度の⾼いほぼ同期型のレプリケーションを⾏う – 10-20msのレイテンシーでレプリケーションされる – RDS for MySQLではリードレプリカは5つまで (孫リードレプ リカを⼊れて30)
  39. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. IO traffic in RDS MySQL BINLO G DATA DOUBLE-WRITE LOG FRM FILES T Y P E O F W R I T E MYSQL WITH STANDBY EBSに書き込み – EBSがミラーへ複製し、両⽅終了後ack スタンバイインスタンスへ書き込みを伝播 スタンバイインスタンス側のEBSに書き込み IO FLOW ステップ1, 3, 5はシーケンシャルかつ同期 それによりレイテンシーもパフォーマンスのゆらぎも増加 各ユーザー操作には様々な書き込みタイプがある 書き込み破損を避けるためにデータブロックを2回書く必要性 OBSERVATIONS 780K トランザクション 100万トランザクション当たり7,388K I/Os (ミラー, スタン バイを除く) 平均1トランザクション当たり7.4 I/Os PERFORMANCE 30 minute SysBench write-only workload, 100 GB data set, RDS SingleAZ, 30K PIOPS EBS mirror EBS mirror AZ 1 AZ 2 Amazon S3 EBS Amazon Elastic Block Store (EBS) Primary instance Standby instance 1 2 3 4 5
  40. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. IO traffic in Aurora (データベース) AZ 1 AZ 3 Primary instance AZ 2 Replica instance AMAZON AURORA ASYNC 4/6 QUORUM DISTRIBUTED WRITES BINLOG DATA DOUBLE-WRITE LOG FRM FILES T Y P E O F W R I T E 30 minute SysBench write-only workload, 100 GB data set IO FLOW REDOログレコードのみ書き込む; 全てのステップは⾮同期 データブロックは書かない(チェックポイント, キャッシュ置 換時) 6倍のログ書き込みだが, 1/9のネットワークトラフィック ネットワークとストレージのレイテンシー異常時の耐性 OBSERVATIONS 27,378K トランザクション 35X MORE 100万トランザクション当たり950K I/Os 7.7X LESS (6X amplification) PERFORMANCE REDOログレコードをまとめる – 完全にLSN順に並ぶ 適切なセグメントに分割する – 部分ごとに並ぶ ストレージノードへまとめて書き込む
  41. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. I/Oを減らす ネットワークパケットを最⼩限にする 結果をキャッシュしておく データベースエンジンをオフロードする DO LESS WORK ⾮同期で処理する レイテンシーの通り道を減らす ロックフリーなデータ構造を使う バッチ操作を同時に⾏う BE MORE EFFICIENT データベースは I/O が全て ネットワーク接続したストレージは PACKETS/SECOND が全て ⾼スループットの処理に コンテキストスイッチ は許されない これらの結果をどう達成したか︖
  42. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. セキュリティ • データの暗号化 – AES-256 (ハードウエア⽀援) – ディスクとAmazon S3に置かれている全ブロックを暗号化 – AWS KMSを利⽤したキー管理 • SSLを利⽤したデータ通信の保護 • 標準でAmazon VPCを使ったネットワークの分離 • ノードへ直接アクセスは不可能 • 業界標準のセキュリティとデータ保護の認証をサポート Storage SQL Transactions Caching Amazon S3 Application
  43. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. スレッドプール • Amazon Auroraはスレッドプールが実装されてい る – MariaDBやMySQL EEで提供されているような機能だが、Amazon Auroraに実装されているものはオリジナル実装 – パラメータグループに項⽬があるが、設定変更は不可能 Client Thread Thread Thread Thread Client MySQL Client Thread Thread Thread Thread Client Aurora Thread Pool
  44. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. • アクティブなスレッドに複数のコネクションを収容 • Kernel空間の epoll() がラッチフリーキューにコネクションをアサイン • スレッドプールの数は動的に調整される • r3.8xlインスタンスのAmazon Auroraで5,000同時コネクションを扱える • Standard MySQL – コネクション毎に1 • コネクション数に応じてスケールしない • MySQL EE – スレッドプール毎にコネクションをアサイン • しきい値を慎重に設定する必要がある CLIENT CONNECTION CLIENT CONNECTION LATCH FREE TASK QUEUE epoll() MYSQL THREAD MODEL AURORA THREAD MODEL Adaptive Thread Pool
  45. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ⾮同期グループコミット Read Write Commit Read Read T1 Commit (T1) Commit (T2) Commit (T3) LSN 10 LSN 12 LSN 22 LSN 50 LSN 30 LSN 34 LSN 41 LSN 47 LSN 20 LSN 49 Commit (T4) Commit (T5) Commit (T6) Commit (T7) Commit (T8) LSN GROWTH Durable LSN at head-node COMMIT QUEUE Pending commits in LSN order TIME GROUP COMMIT TRANSACTIONS Read Write Commit Read Read T1 Read Write Commit Read Read Tn TRADITIONAL APPROACH AMAZON AURORA ディスクへ書き込むためののログバッファを管理 バッファが一杯になるか書き込み待ち時間を超過すると書き込みを実行 書き込み頻度が少ない場合は最初の書き込みが遅くなる 最初の書き込みと同時にI/Oリクエストを実行。書き込みが実行されるまでバッファ を埋める 6つの内4つのストレージノードからACKが返ってきた時点で堅牢性のある書き込み が完了 先行するDB Durableポイントは最新のペンディングACKのポイントまで
  46. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ⾼速でより予測可能なフェイルオーバー時間 App running Failure detection DNS propagation Recovery Recovery DB failure MYSQL App running Failure detection DNS propagation Recovery DB failure AURORA WITH MARIADB DRIVER 1 5 - 2 0 s e c 3 - 2 0 s e c
  47. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 0.00% 5.00% 10.00% 15.00% 20.00% 25.00% 30.00% 35.00% 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 0 - 5s – 30% of fail-overs 0.00% 10.00% 20.00% 30.00% 40.00% 50.00% 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 5 - 10s – 40% of fail-overs 0% 10% 20% 30% 40% 50% 60% 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 10 - 20s – 25% of fail-overs 0% 5% 10% 15% 20% 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 20 - 30s – 5% of fail-overs Database fail-over time
  48. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. DBクラスタ • Amazon AuroraはDBクラスタという概念を持って いる – マスタ (Writer)とリードレプリカ(Reader)をひとまとめにしたも の – Parameter GroupとMaintenance WindowもDBクラスタと各 ノードそれぞれに存在する • フェイルオーバが発⽣しても常にマスタを参照する エンドポイントがクラスタ毎に1つ存在する – アプリケーションからのWriteクエリは常にこのエンドポイントを 参照するように設定
  49. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. DB Parameter GroupとDB Cluster Parameter Group • RDS for MySQLではDB Parameter Groupのみ • Auroraでは設定の適⽤範囲毎にグループを設定 – DB Cluster Parameter Group: Auroraクラスタ内全ノードで共通 – DB Parameter Group: 各Auroraノード個別の設定
  50. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 新しいメトリクス画⾯ • Throughput – Select – Commit – DML/DDL • Latency – Select – Commit – DML/DDL • Cache Hit Ratio – Buffer Cache – Result Set • Deadlocks • Login Failures • Blocked Transactions
  51. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 新しいメトリクス画⾯ • 課⾦に関わるディスク利⽤量やIOPS – Billed storage – Billed read operations – Billed write operations
  52. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. メトリクススキーマ • INFORMATION_SCHEMA.REPLICA_HOST_STATUS • mysql.ro_replica_status mysql> SELECT SERVER_ID, REPLICA_LAG_IN_MILLISECONDS, SESSION_ID FROM INFORMATION_SCHEMA.REPLICA_HOST_STATUS; +-----------------+-----------------------------------------------------+-----------------------------------------+ | SERVER_ID | REPLICA_LAG_IN_MILLISECONDS | SESSION_ID | +-----------------+----------------------------------------------------+-------------------------------------------+ | demo-db01 | 18.458999633789062 | 62c35a1c-2f61-11e5-96de-06be620fb7bd | | demo-db02 | 0 | MASTER_SESSION_ID | | demo-db03 | 19.39299964904785 | 6194b000-2f61-11e5-9bf6-12715c13435b | +-----------------+---------------------------------------+--------------------------------------------------------+
  53. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. メトリクススキーマ
  54. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 改善したこと 書き込みバッチサイズのチューニング read/write I/O要求送信の⾮同期化 パージスレッドのパフォーマンス バルクインサートのパフォーマンス バッチ操作 フェイルオーバー時間の短縮 mallocの削減 システムコールの削減 Undoスロットのキャッシュパターン 協調したログ適⽤ その他 binlogと分散トランザクション ロックの圧縮 先読み(read-ahead) 顧客フィードバック ホットな⾏競合 ディクショナリ統計 ⼩さなトランザクションのコードパス クエリーキャッシュのread/write競合 ディクショナリシステムのmutex ロック競合
  55. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. フェイルオーバとリカバリ
  56. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. フェイルオーバ と リプレース • リードレプリカが存在する場合は1分程でフェ イルオーバ可能 – RDS for MySQLよりも⾼速にフェイルオーバ可能 – リードレプリカが存在しない場合は15分程 • Multi-AZ配置として別AZで起動する – RDS for MySQLと違いリードアクセス可能
  57. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. クラスタエンドポイント • WriterとReaderのセットをクラスタと呼び、クラスタで常にWriter(マスタ)を指すクラ スタエンドポイントが存在する • 各Auroraノードは個別にエンドポイントを持っている(⾍眼鏡タブ内のEndpointで確認可 能) Reader Writer
  58. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. クラスタエンドポイント Aurora Writer Aurora Reader • 各Auroraノードは個 別にエンドポイントを 持っている • クラスタエンドポイン トは、その時アクティ ブなAurora Writer ノードのCNAME • Readは各Readerを参 照する Availability zone A Availability zone B Write クラスタエンドポイント
  59. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. クラスタエンドポイント • フェイルオーバが発 ⽣すると、Aurora ノードの昇格が⾏わ れ、クラスタエンド ポイントの指し先が 変わる Aurora Writer Aurora Writer Availability zone A Availability zone B Write クラスタエンドポイント
  60. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Writer / Readerノードの識別 • innodb_read_onlyを参照 – SHOW GLOBAL VARIABLES LIKE 'innodb_read_onlyʼ; – OFF: Writer – ON: Reader • アプリケーションやドライバでAuroraノードに 対する負荷分散やフェイルオーバーロジックの 実装に利⽤可能 – メトリクススキーマのSEESION_IDも利⽤可能
  61. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 継続的なバックアップ Segment snapshot Log records Recovery point Segment 1 Segment 2 Segment 3 Time 各セグメントの定期的なSnapshotは並列で⾏われ、redo logはストリームで継続バックアップのために S3に送られる。パフォーマンスや可⽤性に対する影響は無し。 リストアでは、適切なセグメントのSnapshotとログストリームをストレージノードに転送し、並列で⾮ 同期で適⽤していく
  62. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ⾼速なデータ修復 既存のデータベース • 最後のチェックポイントからロ グを適⽤していく • MySQLではシングルスレッドな ため適⽤完了までの時間が増加 Amazon Aurora • Disk readの⼀環として、オンデ マンドでredo logの適⽤を⾏う • 並列、分散、⾮同期で⾏われる Checkpointed Data Redo Log T0 でクラッシュが発⽣すると 最後のチェックポイントからの ログを適⽤する必要がある T0 T0 T0 でクラッシュが発⽣するとredo を並列で分散して⾮同期でログの適⽤を⾏う
  63. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Streaming snapshotとPITR • Amazon Auroraでは各セグメント毎にAmazon S3 へ継続的に増分バックアップを取得している – Backup retention periodでバックアップを残す期間を指定可能 • Amazon Auroraが使⽤しているディスクの仕組み によりパフォーマンスへ影響を与えない • PITRで5分前からBackup Retention Periodまでの 任意の位置に秒単位で復元可能
  64. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. SQLによるフェイルオーバのテスト SQLによりノード・ディスク・ネットワーク障害をシミュレーション可能 • データベースノードのクラッシュをシミュレート: ALTER SYSTEM CRASH [{INSTANCE | DISPATCHER | NODE}] • レプリケーション障害をシミュレート: ALTER SYSTEM SIMULATE percentage_of_failure PERCENT READ REPLICA FAILURE [ TO ALL | TO "replica name" ] FOR INTERVAL quantity [ YEAR | QUARTER | MONTH | WEEK| DAY | HOUR | MINUTE | SECOND ]; • 他にも – ディスク障害をシミュレート – ディスクコンジェスションをシミュレート
  65. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. パフォーマンス
  66. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. WRITE PERFORMANCE READ PERFORMANCE インスタンスサイズによるスケール AuroraはRead/Writeパフォーマンス共にインスタンスサイズに⽐例してスケール Aurora MySQL 5.6 MySQL 5.7
  67. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Auroraのパフォーマンスを引き出すために • クエリ並列度が⾼い、データサイズが⼤きい ケースで効果を発揮 • ロック機構やQuery Cache、スレッドプールな どに改善を⼊れて性能向上を⾏っている – Query Cacheはwrite heavyな環境ではoffを推奨 – 全コアを効率的に利⽤する設計により、CPU利⽤率はMySQLと ⽐較して⾼くなるが、性能が落ちにくくなっている
  68. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. パフォーマンス測定 Aurora Writer • 複数のインスタンスから同時に負荷 をかけ並列度を上げる – NWの影響を抑えるために同⼀リー ジョンで⾏う – 1-2時間など⻑時間⾏う • 単⼀のインスタンスからだけでは、 インスタンス毎のNW帯域の制限に 達する可能性がある • ⾼負荷環境でもスループット低下を 抑える改善が⼊っているためCPU/ メモリ利⽤率がRDS for MySQLと ⽐較して⾼くなるケースがある
  69. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. デフォルトパラメータの違い • RDS for MySQLと⽐べるとbuffer / connection / 周りの値が少なめ • Query CacheがON – ONの状態でも性能が出るようにAuroraでは性能向上が⾏われて いる – Write heavyな環境ではOFFも検討
  70. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. デフォルトパラメータの違い • innodb_change_buffering – Default: NONE – 変更不可 – Secondary indexへの更新などに影響が出そうだが、1-2時間な ど⻑時間ベンチマークを⾏い、change bufferに収まらない量に なってくると、Auroraの優位性が出てくる • 数⼗分の短いベンチマークだと多少影響を受ける可能性がある
  71. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 新規パラメータ • thread_handling – Default: multiple-connections-per-thread – 変更不可 – multiple-connections-per-thread, no-threads, one-thread-per- connection, dynamically-loaded – Clientからの接続を扱うAuroraのスレッドに関する設定
  72. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. パフォーマンス指針 • まずはデフォルトのパラメータグループを使⽤ – Amazon Auroraはデフォルトの設定でパフォーマンスを発揮で きるようにチューニング済み • 適切なインスタンスタイプを選択することが⼤ 切 – それでも性能が出ない場合にパラメータグループの変更を検討
  73. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. よく⾒ると • CPU / Memoryの利⽤率がMySQLより⾼いがス ループットが出ている – 分散ロック機構によりCPUリソースを使いきって スループットを出している
  74. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 何をみるのか︖ • よく聞かれる質問 – CPU利⽤率⾼いんだけど? – メモリ利⽤量多いんだけど︖ – Disk IOが多めなんだけど︖ • ⾒てほしいこと – Auroraはマシンリソースを最⼤限利⽤してスループットを 出す設計 – システム全体でパフォーマンスが向上 – 管理コスト、障害耐性、データ保全性
  75. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 何をみるのか︖ • AuroraはMySQL互換ですが、マシンリソースの 使い⽅が根本的に違います • Auroraが得意な場⾯・状況を理解してパフォー マンスを測定 – マシンリソースを使い切りそうになっても、MySQLと⽐べ るとスループットやレスポンスタイムの落ち⽅が緩やか
  76. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Auroraへの移⾏
  77. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. RDS for MySQLからマイグレーション • マネージメントコンソールから数クリックでAmazon Aurora へ移⾏可能 – RDS for MySQLのスナップショットからAmazon Auroraへマイグレーション 可能 – RDS for MySQLは5.6を使う必要がある
  78. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. マイグレーション時の注意 • RDS for MySQLとParameter Groupで設定出来る項 ⽬や規定値などが異なる – 例: max_connection / innodb_buffer_pool_size / query_cache_*など • マイグレーションに必要なディスクスペース – スナップショットをインポートする場合、インポート前にEBSボ リュームを使⽤しデータをフォーマットする – データをフォーマットするための追加容量が必要になる場合がある
  79. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. マイグレーション時の注意 • Amazon AuroraはInnoDBのみサポート – MyISAMなどのストレージエンジンは⾮対応 • マイグレーション時に⾃動でMyISAMからコン バートされるが、事前に⼿動でInnoDBへの変換 を⾏っていただくことを推奨
  80. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. マイグレーション時の注意 • MyISAM形式のテーブルが含まれない場合 – 移⾏前のディスクで6TBまで容量を利⽤可能 • MyISAM形式のテーブルが含まれる場合 – マイグレーションを⾏うテーブルで3TBを超えるものが無いこ とを確認する
  81. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. MySQLからレプリケーション • MySQLからAmazon Auroraへレプリケーションを⾏うことが 可能 • 専⽤のプロシージャを使⽤ mysql > CALL mysql.rds_set_external_master (DB Hostname or IP address', 3306,’user', ‘password', ’Binlog', position, 0); mysql > CALL mysql.rds_start_replication;
  82. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. MySQLからレプリケーション • RDS for MySQLやMySQL on EC2、オンプレ環 境のMySQLからAmazon Auroraにレプリケー ション可能 – バックアップからAuroraにインポートを⾏い、レプリケーショ ンを実⾏ – 移⾏時にアプリケーションのメンテナンスを⼊れ、書き込みが なくなり、レプリケーションが追いついたタイミングでアプリ ケーションの書き込み先などをAuroraに変更
  83. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. RDS MySQL DBインスタンスからAmazon Aurora Read Replica を作成 • RDS MySQLインスタンスからAmazon Auroraに ダウンタイムを最⼩限に移⾏する場合、今までは SnapshotからAuroraクラスタを起動し、⼿動でレ プリケーションを設定する必要があった • この機能を利⽤することによって、ワンクリックで RDS MySQLのSnapshotからAurora Read Replica を起動し、レプリケーションの設定まで⾃動で⾏わ れる
  84. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. RDS MySQL DBインスタンスからAmazon Aurora Read Replica を作成 RDS MySQL5.6 (Master) Aurora (Writer) Aurora (Reader) Application Write Read Auroraクラスタへレプリケーション環境を自動で作成
  85. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. RDS MySQL DBインスタンスからAmazon Aurora Read Replica を作成 • 移⾏元のRDS MySQLインスタンスで、Create Aurora Read Replicaを選 択し、Management Console上でマイグレーションの進捗を確認 – テラバイト毎に数時間かかる • Aurora Read Replicaが起動しレプリケーションが開始されるので、レプ リケーション遅延を確認 • SHOW SLAVE STATUSでSeconds behind masterが0になるまで待機 • レプリケーションが追いついたら、ソースDBへのトランザクションを停⽌ し、 Management Console から所望のAuroraを選択しPromote Read Replicaを選択することでAurora Clusterとして独⽴ – 必要に応じてReaderを追加 • アプリケーションの接続先を、Cluster EnspointやReader Endpointに変 更する
  86. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Data Export and Import guide • Data Export and Import guideを公開しています – https://d0.awsstatic.com/product- marketing/Aurora/Aurora_Export_Import_Best_Practices_v1- 3.pdf
  87. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora Driver
  88. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Web Services JDBC Driver for MySQL • MySQL Connector/Jをベースとしたドライバ • 現在提供している機能 – Fast failover – Auto discovery • 開発やロードマップ情報の提供などはGitHub上 で⾏われている – https://awslabs.github.io/aws-mysql-jdbc/ – https://github.com/awslabs/aws-mysql-jdbc – https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserG uide/Aurora.Connecting.html
  89. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. MariaDB Connector/J • Version3.0.3よりAurora特有の機能が廃⽌されたため、今後はAmazon Web Services JDBC Driver for MySQLの利⽤を推薦 – Version 3.0.3 of the MariaDB Connector/J utility drops support for Aurora DB clusters, so we highly recommend moving to the AWS JDBC Driver for MySQL. The AWS JDBC Driver for MySQL offers improved failover speed for Aurora MySQL DB clusters by caching DNS connections for quick use. When using the MariaDB Connector/J utility, use the jdbc:mariadb:aurora// in your connection string – If you are using an Aurora Serverless v1 DB cluster, the failover benefits don't apply, but you can disable the feature by setting the failureDetectionEnabled parameter to false. To review a complete list of configuration options, see the AWS JDBC Driver for MySQL GitHub repository • MariaDB Connector/J 1.2.0から含まれている – https://mariadb.com/kb/en/mariadb/mariadb-connector-j-120-release-notes/ – リリースノートには明確にAuroraの記述は無いがドキュメント中に記載 • https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/ • https://mariadb.com/kb/en/mariadb/failover-and-high-availability-with-mariadb-connector-j/#specifics-for-amazon-aurora – 2015.09 Amazon Linuxよりrpmを提供 • 現在の提供機能 – Fast failover – Auto node discovery
  90. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Aurora Driver https://mariadb.com/kb/en/mariadb/failover-and-high-availability-with-mariadb-connector-j/
  91. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 改善を⾏って来た機能
  92. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Reader Endpointの追加 • Amazon Aurora cluster内のReaderに単⼀のエンドポイントを提供 – ReaderがFailoverした場合は、再接続を⾏うことで新しいReaderに接続が可能 – Round Robinで接続 • メリット – Load Balancing – クラスタエンドポイントに接続することでDBクラスタ内のリードレプリカ間 でコネクションのロードバランシングが可能。リードワークロードを分散することで利⽤可能な Reader間でリソースを効率的に活⽤することができます – Higher Availability – 複数のAuroraレプリカをAvailability Zone毎に配置し、リードエンドポイン ト経由で接続することが可能。Availability Zoneの可⽤性の問題が万が⼀発⽣した場合、リード エンドポイントを利⽤することで最⼩限のダウンタイムでリードトラフィックを他のレプリカに 実⾏可能 – 今までHAproxyなどで分散されていた⽅は置き換えることでシンプルに負荷分散 • 注意点 – DNSベースなのでアプリケーションやドライバ側でIPアドレスのキャッシュ周りの設定の確認や failoverのテストを推薦 – Readerが1インスタンスもいなくなった場合はWriterへfailbackを⾏うため、Reader Endpointが Writerをさす
  93. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Reader Endpoint • クラスタないの Readerにラウンドロ ビンで接続 • 常にReaderに接続さ れるが、Readerが1イ ンスタンスもいなく なった場合はWriterに failback • Readerの追加・削除 は⾃動で⾏われる Aurora Reader Aurora Reader Availability zone A Availability zone B Write リーダエンドポイント
  94. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. MySQLスナップショットバックアップからの移⾏ • Percona Xtrabackupを利⽤して作成したバックアップデータを 利⽤してオンプレミス環境やAmazon EC2上のMySQLから Amazon Auroraクラスへ移⾏する – mysqldumpと⽐較したテストで約20倍⾼速に移⾏可能 • バックアップデータをS3にアップロードし、そのデータを利⽤ – アップロードにはManagement ConsoleやCLI tools、データサイズが⼤きい場合は AWS Import/Export Snowballを利⽤してS3へ転送する • MySQLからAmazon Auroraへレプリケーションを⾏う機能と合 わせて利⽤することで、アプリケーションのダウンタイムを短 縮可能
  95. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Encrypted Migration • Amazon S3のS3-managedもしくはKMS managed keyを利⽤して暗号化したS3中のバック アップファイルからのマイグレーションをサポート • 暗号化された接続を通してMySQLデータベースと のレプリケーションを実⾏可能 – https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide /AuroraMySQL.Replication.MySQL.html の To set up encrypted replicationの⼿順通りに接続に使⽤する証明書を取り 込む必要があります
  96. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. クロスリージョンレプリケーション対応 • リージョン間でWriterとReaderを配置可能 • クロスリージョンレプリケーションのセットアップなどは全てマネージド • コンソールやAPI経由で簡単に構築可能 • 最⼤5つのクロスリージョンレプリケーションを利⽤したリードレプリカえい 作成可能 • DRや他リージョンへDBを移設する場合などに利⽤ • 注意点 • 機能を有効にする前に必ず最新のパッチを適⽤して下さい • バイナリログを利⽤したレプリケーションのため、設定前にDBパラメータグ ループでbinlog_formatを設定(MIXED推薦) • バイナリログを利⽤したリージョン間レプリケーションのため、⼤きめのレプ リカラグが発⽣しやすい
  97. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ローカルタイムゾーン対応 • time_zoneパラメータにより任意のタイムゾー ンに設定可能 – RDS MySQL, RDS MariaDBでは既に対応済み
  98. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. フェイルオーバー順の指定 • Amazon Auroraのフェイルオーバーの順位を任 意に設定可能 – フェイルオーバーで昇格させるReaderの順番を指定可能 • 優先的にフェイルオーバー先に指定するReaderを設定可能なため、 バッチや集計⽤となどで利⽤している、サービスに組み込みたくな いReaderを作ることも可能 • 優先度: Tier 0 > Tier 1 > … > Tier 15 • 同じ優先度のReaderが存在する場合 – Writerよりも⼤きいインスタンス – 優先度もインスタンスサイズも同じ場合は、同じ優先度のReaderから 任意に選択される
  99. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 内部バージョンとメモリ使⽤量の確認 • Amazon Auroraのバージョンを確認可能なクエリの追加 – select AURORA_VERSION(); – select @@aurora_version; – show variables like '%version’; – 最新バージョンはforumのメンテナンススレッドに掲載 • Lock Managerのメモリ使⽤量 – show global status where variable_name in (‘aurora_lockmgr_memory_used’); – select * from INFORMATION_SCHEMA.GLOBAL_STATUS where variable_name in ( 'aurora_lockmgr_memory_used’);
  100. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Auroraの使いどころ
  101. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. クエリ同時実⾏数やテーブルサイズが⼤きい • Amazon Auroraに移⾏することで、クエリスル ープットの向上などが⾒込まれる – マルチコア環境でCPUを効率的に利⽤ – 分散ロック機構やQuery Cacheの改善による性能向上 • ディスク – データ量の増加に応じてディスク容量を気にする必要が無い – 性能に影響を及ばさずバックアップ
  102. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 複数のサーバにシャーディングしている • 複数の⼩さいDBを1つにまとめる – コスト効果増⼤と管理コストの軽減 – シャーディングをするデータベースを減らすことでアプリケー ションの設計を簡略化出来る – 障害時の影響を考慮する必要はある
  103. AWS Graviton2 powered Aurora • Custom designed by AWS utilizing

    Arm Neoverse N1 cores • Graviton2, fully compatible with all existing Aurora features - No porting needed • Up to 35% better performance AWS Graviton2 Powerful and efficient, modern applications
  104. Graviton2 - Uniformity Memory Socket 1 R6g instance Local Access

    64-core single Socket Uniform memory access
  105. Graviton2 - vCPU R5 instance R6g instance Every vCPU is

    a physical core No simultaneous multi threading (SMT)
  106. AWS Graviton2 instances A W S ʼ S O W

    N 6 4 B I T A R M - B A S E D E C 2 I N S T A N C E S 12,212 21,084 29,838 38,723 46,957 51,805 52,139 12,098 21,330 30,792 41,490 51,992 59,041 60,392 10,000 30,000 50,000 70,000 90,000 110,000 1 2 4 8 16 32 64 New orders per minute Number of warehouses Aurora MySQL 5.7 Graviton2 vs. Intel HammerDB performance on r6g.large Intel Graviton 2 +15.8 %
  107. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Dynamic resize • Aurora MySQL 2.09/1.23以降より対応 – データベース内のテーブルスペースなどを削除した場合、未使⽤スペースの再利⽤は ⾏われていたが、storage spaceに空き領域ができた場合、⾮同期で空き領域を回収 し課⾦対象となるストレージの使⽤量を削減 – ⼀時的にテーブルを⽤意しデータを挿⼊後処理をしてdropする、パーティショニン グを⾏っており、不要になったパーティションを削除するなどのオペレーションを ⾏っているケースではStorage利⽤料の最適化が期待できる https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Performance.html#Aurora.Managing.Performance.StorageScaling Volume bytes decrease when table t is dropped Volume bytes increase inserts in table t and t1 Volume bytes decrease when table t1 is dropped
  108. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Dynamic resize • 注意点 – 物理的にデータファイルが削除される、もしくはデータファイ ルのストレージ中での利⽤サイズが削減された場合に実⾏され る • 適⽤される例: DROP TABLE, DROP DATABASE, TRUNCATE TABLE • 適⽤されない例: DELETEによる⾏の削除 – ⼤量の⾏を削除した場合は、OPTIMIZE TABLEの実⾏により – innodb_file_per_table=1にすることでDynamic resizeを有効 に活⽤可能 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Performance.html#Aurora.Managing.Performance.StorageScaling
  109. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Volume関連metrics • VolumeBytesUsed – 課⾦対象となる現在のStorageの利⽤量 – Auroraが内部で利⽤する課⾦対象とならないStorage Spaceは 加算されていない • AuroraVolumeBytesLeftTotal – Auroraクラスターで利⽤可能なStorage容量 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Performance.html#Aurora.Managing.Performance.StorageScaling
  110. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 128TiBストレージサイズ対応 • Aurora MySQL1.23/2.09より最⼤ストレージ が128TiBに対応 – db.t2/db.t3インスタンスファミリーは未対応 – 1テーブルの最⼤サイズは64TiB • ストレージサイズの上限に近づくとMySQL log とRDS Eventで通知
  111. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora ML • Amazon Aurora MySQL内から、 Amazon SageMakerとAmazon Comprehendを呼び出せるように – Amazon Aurora内に保存されたデータに対して、 データを移動するPiplineを作成することなく、 Amazon SageMakerやAmazon Comprehendに データを投⼊して、結果を取得可能 – Stored functionとして実⾏するため、通常のSQLを 利⽤可能 • 利⽤⽤途例 – 課⾦ログから不正トランザクション検出 – Blogなどについたコメントに対してセンチメント分 析 – ユーザ情報などからポテンシャルカスタマーの抽出 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-ml.html
  112. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora ML • Amazon Comprehendとの連携例 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-ml.html
  113. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora ML https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-ml.html • Amazon SageMakerとの連携例
  114. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora ML • Amazon SageMakerとの連携例 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-ml.html
  115. Aurora optimized ML query processing ID Feedback 1 Great product!

    Good job Mediocre I didn’t like it Loved it Terrible service 50 Great service user_feedback Select * from user_feedback where aws_comprehend.dete ct_sentiment(review_t ext, ʻENʼ)' = ʻPOSITIVE'"
  116. Amazon RDS Proxy Fully managed, highly available database proxy for

    Amazon RDS Supports a large number of application connections Deployed across multiple AZs and fails over without losing a connection Integrates with AWS Secrets Manager and IAM Connection pooling / Connection multiplexing etc… Preview: Aurora MySQL and RDS MySQL / Aurora PostgreSQL and RDS PostgreSQL RDS Proxy Applications RDS Database Instance Connection Pooling
  117. • Application connections are preserved and transactions are queued during

    failovers • Detects failovers and connects to standby quicker, bypassing DNS caches and downstream TTLs • Up to 66% faster failover times Seamless and fast failovers DB DB Amazo n RDS Proxy App App App
  118. • Scale-out reads on Aurora Read Replicas • Pool and

    share read-only connections Aurora Read Replica support Primary Read only
  119. DAS architecture Alerts Partner Database Security Apps Users Amazon RDS

    Database Instance /Replica AWS Cloud Amazon Kinesis Data Firehose Amazon Kinesis
  120. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora MySQL ReaderでREAD COMMITTEDトランザクション分離レベルが利⽤可能に • Aurora Replicaで⻑時間実⾏されるクエリ存在する環境ではでは、 パージラグが増加する場合がある。 パージラグは、⻑時間実⾏さ れるクエリによって内部ガベージコレクションがブロックされると 発⽣。 SHOW ENGINE INNODB STATUSコマンドを⽤いて history list lengthを確認することが可能。CloudWatch Metrics のRollbackSegmentHistoryListLengthを使⽤して監視可能 – RollbackSegmentHistoryListLengthが増加している状態では、セカンダリインデックスの 有効性を低下させ、全体的なクエリパフォーマンスの低下とストレージ領域の浪費につな がる • 設定を⾏いたいReaderで以下を実⾏。セッションレベルで設定可 能 – set session aurora_read_replica_read_committed = ON; – set session transaction isolation level read committed;
  121. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora MySQL ReaderでREAD COMMITTEDトランザクション分離レベルが利⽤可能に • Aurora MySQL Readerでは、Writer及びANSI SQLで規定されているREAD COMMITTEDトランザ クション分離レベルに準拠した動作を原則するが、 厳格性がWriter/ANSI SQL規定と⽐較して弱い実装 であるため、設定変更前に以下のドキュメントの動 作を参照のうえ、テストを推薦 – https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUse rGuide/AuroraMySQL.Reference.html#AuroraMySQL.Referen ce.IsolationLevels
  122. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. GTID support • Aurora MySQL 2.04以降で対応 – レプリケーションソース・ターゲットとして利⽤可能 – 設定⽅法などの詳細はドキュメントを参照 • 新規パラメータ – gtid_mode (Management Consoleではgtid-mode) – enforce_gtid_consistency https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/mysql-replication-gtid.html CALL mysql.rds_set_external_master_with_auto_position ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption );
  123. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Aurora backup billing • Amazon CloudWatchで、継続バックアップとスナップショットで使⽤し ている容量を確認可能に(Aurora DB クラスターごとに個別に計算される) – BackupRetentionPeriodStorageUsed: 継続的バックアップの保存に使⽤されているバック アップストレージの量。クラスターボリュームのサイズと、保存期間中に⾏った変更の量によって 変わります。ただし、この値が保存期間中の累積的なクラスターボリュームサイズを超えることは ありません。 • クラスターサイズが 100 GiB で、保存期間が 2 ⽇間である場合、BackRetentionPeriodStorageUsed の最 ⼤値は 200 (100 GiB + 100 GiB) となります – SnapshotStorageUsed: ⼿動スナップショットを保存するために使⽤されているバックアップ ストレージの量を表します。保存期間内に作成された⼿動スナップショットは、バックアップスト レージ量にカウントされません。⾃動スナップショットもバックアップストレージ量にカウントさ れません。各スナップショットのサイズは、そのスナップショットを作成した時点のクラスターボ リュームのサイズです。SnapshotStorageUsed 値は、保持するスナップショットの数と、各ス ナップショットのサイズによって異なります • 保存期間外のスナップショットが 1 つあり、このスナップショットを作成した時点のクラスターのボリュー ムサイズが 100 GiB であった場合、SnapshotStorageUsed の値は 100 です – TotalBackupStorageBilled: BackupRetentionPeriodStorageUsed と SnapshotStorageUsed の合計から、1 ⽇のクラスター ボリュームのサイズと等しいバックアップストレージの量を引いた値 • データベースサイズが 100 GiB、保存期間が 1 ⽇で、保存期間外のスナップショットが 1 つある場合、 TotalBackupStorageBilled は 100 (100 GiB + 100 GiB - 100 GiB) となります。
  124. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 起動バージョン・バージョンアップ対象の指定⽅法改善 • Aurora MySQL 1.19, 2.03.2以上にバージョン アップを⾏う場合、ターゲットバージョンを指定可 能に – Aurora MySQLクラスタ起動時にも指定可能 – バージョンアップグレードがPending Maintenance Actionではな くModifyDBInstanceでEngineVersion指定に – 例: --engine-version 5.7.mysql_aurora.2.03.2 or 5.6.mysql_aurora.1.19.0
  125. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Custom Endpoints • Auroraクラスター内の、どのインスタンスを含めるかをユーザが指定可能なエン ドポイントが作成可能 • オンラインクエリ⽤のリードレプリカと分析クエリ⽤のリードレプリカを分離する ことが可能に • Readerだけを追加/Writerも含めて追加可能が選択可能 • 明⽰的に指定したノードだけを追加や新規起動ノードを⾃動で追加するなどオプションがある
  126. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora Serverless Queries Directly from the AWS Management Console • Amazon Aurora Serverlessク ラスタに直接マネージメントコ ンソールからクエリを実⾏可能 – Query Editorへのアクセスは IAMで制御下 • よく利⽤するクエリを保存可 能 – 履歴機能もあり
  127. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora Serverless Database with the New Data API • Aurora Serverless へのアクセス⽅法と して、MySQLネイティブプロトコルに 加え、HTTPSエンドポイントおよび AWS SDK からのアクセスを提供 • AWS Lambda や AWS AppSync から、 VPCにアクセスすることなくAuroraを 利⽤可能 • クエリー結果はJSON形式 – 1,000⾏および1MBが上限 • トランザクションやバッチ実⾏も専⽤の APIで利⽤可能
  128. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Data type mapping hints • hintを使⽤して、Data APIでStringを異なる値として実⾏可能 • DECIMALやTIMEなどの特定のタイプでは、String値を異なるタイプとし てデータベースに渡すためData APIで利⽤可能なhintを利⽤する必要があ る場合がある。SqlParameterデータ型のtypeHintに値を含めます。 以下 の値をtypeHintで利⽤可能 – DECIMAL: Stringパラメーター値は、DECIMALタイプのオブジェクトとしてデータベースに送信 される – TIMESTAMP: Stringパラメーター値は、TIMESTAMP型のオブジェクトとしてデータベースに送 信される。 対応形式はYYYY-MM-DD HH︓MM︓SS [.FFF] – TIME: Stringパラメーター値は、TIMEタイプのオブジェクトとしてデータベースに送信される。 対応形式はHH︓MM︓SS [.FFF] – DATE: Stringパラメーター値は、DATEタイプのオブジェクトとしてデータベースに送信される。 対応形式はYYYY-MM-DD https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html#data-api.calling
  129. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Java Client Library for Data API • データAPI⽤のJavaクライアントライブラリを 利⽤することで、クライアント側のクラスを Data APIのリクエストとレスポンスにマッピン グ可能 • 利⽤⽅法・サンプルコードなどは https://docs.aws.amazon.com/AmazonRDS /latest/AuroraUserGuide/data- api.html#data-api.java-client-library
  130. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Global Database • 通常1秒未満の低レイテンシなレプリケーションと、通常1分以内の⾼速なフェー ルオーバーが可能 – ソースDBクラスタにパフォーマンス影響を与えない • Binlogを利⽤せず、Auroraストレージレベルでクラスタ間のレプリケーションを ⾏う – レプリケーション先には書き込みはできない • 対向のリージョンは、5リージョンまで設定可能 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html Oregon M R R Storage R R Storage Tokyo R R Storage R R Storage Northern Virginia Frankfurt (Secondary Region) (Secondary Region) (Secondary Region) (Primary Region) Inbound replication Inbound replication Inbound replication Outbound replication
  131. P (secondary region) primary (primary region) secondary Automated way to

    promote secondary region to primary For testing DR setup or relocating primary region Fully maintains the topology RPO=0; writes are stopped until new primary catches up In this example weʼll promote N. Virginia to primary Aurora Global Database: Managed Failover P R R Ohio Northern Virginia Ireland (secondary region) (secondary region) (primary region) R R Storage Replicatio n service R R Storage Replicatio n service à We click to promote N. Virginia à Ohio writes are stopped à N. Virginia catches up à Other regions attached to N. Virginia à Writes now available in N. Virginia à Point your app the new endpoint and go Storage Replicatio n service
  132. © 2021, Amazon Web Services, Inc. or its Affiliates. Aurora

    Global Database: write forwarding Secondary regioのAurora clusteにも書き込みが可能 • 書き込みは透過的にPrimary regioに転送され、適⽤された変更はすべての Secondary regioへレプリケーションされる • いずれのリージョンもprimarに昇格可能 • Aurora MySQL2.08.1以上 Oregon P R R R R Ohio Northern Virginia Ireland (secondary region) (secondary region) (secondary region) (primary region) Storage Replication service Storage Replication service R R Storage Replication service R R Storage Replication service
  133. © 2021, Amazon Web Services, Inc. or its Affiliates. Aurora

    Global Database: write forwarding • クラスタへリージョン追加時や、既存のクラスタで「Enable read replica write forwarding」を有効化 • 利⽤時にセッション変数「aurora_replica_read_consistency」をセットすることで利⽤可能 • EVENTUAL • 読み込みクエリはレプリケーションのタイムラグの影響を受ける。リモートレプリカはレプリケーションが完 了するのを待たないため、書き込みの待ち時間が短縮されるが、後続の読み込みで前の書き込みを確認できる ようにはならないため、書き込みの待ち時間が短縮される。これは、書き込みが失われるという意味ではない。 クエリが正常に実⾏完了したということは、プライマリクラスタで書き込みを適⽤したことを意味する。その 書き込みによって⽣成されたデータの変更は、読み取りが実⾏されたときにリモートクラスタにレプリケート されていない可能性がある • SESSION • 同じセッションの書き込みに続く読み込みクエリは、レプリケーションがその前の書き込みに追いつくのを待 つようになる。セッション内の変更を参照することが可能だが、他のセッションが実⾏した変更が参照できる かは保証されない • GLOBAL • レプリケーションが読み取りを開始した時点に追いつくのを待つようになる。リモートクラスタからの読み取 りでは、リモートクラスタ上で読み取りクエリが開始された時点までにプライマリクラスタにコミットされた すべての変更が参照可能。このモードは最も強⼒なread-after-write consistencyを提供しますが、パフォーマ ンスへの影響は⼤きくなる。このモードを使⽤した場合、クエリの待ち時間は少なくともレプリケーションラ グと同等となる。 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-write-forwarding.html
  134. © 2021, Amazon Web Services, Inc. or its Affiliates. Aurora

    Global Database: write forwarding • 以下のクエリに対応 • DML • SELECT ... LOCK IN SHARE MODE / SELECT FOR UPDATE • PREPARE / EXECUTE • 未対応クエリを実⾏した場合、「 ERROR 1235 (42000): This version of MySQL doesn't yet support 'operation with write forwardingʼ. 」や「 ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement 」が返される。この場合、「set aurora_replica_read_consistency =ʻʼ;」のように aurora_replica_read_consistencを設定しなければローカルクラスタで実⾏可能 • 未対応クエリ・オペレーションはドキュメントを参照 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-write-forwarding.html
  135. © 2021, Amazon Web Services, Inc. or its Affiliates. Aurora

    Global Database: write forwarding • リモートリージョンのクラスタから実⾏させるセッション数の割合を、プライ マリリージョンのWriterで制限することも可能 • aurora_fwd_master_max_connections_pct • Aurora Global Database: write forwardingに関連するレイテンシーやスル ープットなどの新規メトリクスは、 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/au rora-global-database-write-forwarding.html#aurora-global-database- write-forwarding-cloudwatch を参照 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-write-forwarding.html
  136. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora Recommendations • データベースリソースに対 して推奨事項を提供 – 例: DBインスタンス、DBクラス ター/DBクラスターパラメータグ ループ • 提供される推奨事項は、DB クラスター構成、DBインス タンス構成、使⽤状況、パ フォーマンスデータを分析 して、ベストプラクティス ガイダンスを提供 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Recommendations.html
  137. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Aurora Serverless • あまり使⽤されないアプリケーション(例: アクセ スの少ないブログサイト) • 可変負荷のアプリケーション - 予測が困難な活動の ピーク(ニュースサイトなど) • 夜間または週末に必要とされない開発データベース またはテストデータベース • マルチテナントSaaSアプリケーションの統合基盤 • Amazon Aurora MySQL 1.x/2.x対応
  138. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Aurora Serverless • Auroraストレージボリュームを作成 • アプリケーション接続のためのVPC内の プロキシエンドポイントの作成 • プロキシの背後にネットワークロードバ ランサを構成 • リクエストルータを初期化してデータ ベーストラフィックをルーティングする • 初期容量を確保 DATABASE STORAGE APPLICATION CUSTOMER VPC VPC PROXY ENDPOINTS VPC ENDPOINTS NETWORK LOAD BALANCER REQUEST ROUTERS INITIAL CAPACITY
  139. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. REQUEST ROUTER スケールアップ・ダウン • Auroraはデータベース(CPU、メモリ、 接続)のアプリケーション負荷を監視 • スケーリングのしきい値に達すると、イ ンスタンスが⾃動的にスケールアップま たはスケールダウン • スケーリング操作はアプリケーションに 透過的。接続とセッションの状態は新し いインスタンスに転送される • スケーリングの最⼩および最⼤値を設定 可能 DATABASE STORAGE CURRENT INSTANCE WARM POOL NEW INSTANCE PROXY ENDPOINT APPLICATION
  140. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 0からスケール • 必要に応じて、ユーザー定義の⾮アク ティブ期間が経過するとインスタンスが 削除される • データベースが停⽌している間は、スト レージの⽀払いのみ • データベースへのリクエストによりプロ ビジョニング (多くの場合5秒以下) • バッファキャッシュをコピーする実⾏中 のサーバーがないため、0へのスケーリ ングはより⾼価なオペレーションです WARM POOL INSTANCE DATABASE STORAGE REQUEST ROUTER APPLICATION PROXY ENDPOINT
  141. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Parallel Query Orders of magnitude faster queries OLTPワークロードの分析クエリ • リアルタイムデータの分析 • アドホッククエリに対するETL パイプラインを作らなくて良い • 複数の分析クエリを同時実⾏ Reduced contention with OLTP workload Parallelism increases with data size https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-mysql-parallel-query.html
  142. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. クエリをストレージノードの数千のCPUに プッシュダウン • Auroraストレージには数千のCPUがある § ストレージ・フリートを使⽤して問合せ処理をプッ シュダウンおよび並列化する機能を提供 § v1: single-table predicates (selections, projections, 200+ SQL functions, case statements, filters) and hash joins § v2: group by, order by, aggregation § データに近い箇所で処理を実⾏すると、ネットワー クのトラフィックとレイテンシを軽減出来る DATABASE NODE STORAGE NODES PUSH DOWN PREDICATES AGGREGATE RESULTS https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-mysql-parallel-query.html
  143. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ヘッドノードでの処理 STORAGE NODES OPTIMIZER EXECUTOR INNODB NETWORK STORAGE DRIVER AGGREGATOR APPLICATION PARTIAL RESULTS STREAM RESULTS IN-FLIGHT DATA PQ CONTEXT PQ PLAN クエリオプティマイザはPQプランを⽣成 し、リーフページの検出に基づいてPQコ ンテキストを作成 PQ要求は、PQコンテキストとともにス トレージノードに送信される ストレージノードが以下のものを⽣成 § 処理された⾏のパーシャルリザルト ストリーム § ペンディングundoを含む未処理⾏の ストリーム ヘッドノードはこれらのデータストリー ムを集約して最終結果を⽣成 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-mysql-parallel-query.html
  144. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ストレージノードでの処理 PQ PROCESS PQ PROCESS Up to 16 TO/FROM HEAD NODE STORAGE NODE PROCESS PAGE LISTS 各ストレージノードは最⼤16個のPQプロ セスを実⾏し、それぞれがパラレルクエ リに関連付けられる PQプロセスはPQコンテキストを受信する § スキャンするページのリスト § ビューとプロジェクション § 式を評価したバイトコード PQプロセスはページリストを2回処理を ⾏う § Pass 1: InnoDBフォーマットの ⽣データをフィルター評価 § Pass 2: MySQLフォーマットデー タの式評価 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-mysql-parallel-query.html
  145. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. データベースクラスタのstop/startサポート • Amazon Auroraで、データベースクラスタのstop/startをサポート • 常にデータベースクラスタを実⾏する必要がない場合に簡単に⼿頃な価格で開発やテスト⽤にデー タベースを使⽤可能に • データベースクラスタ停⽌中も、指定された⾃動バックアップ保持期間内であれば、ポイントイン タイムの復元を実⾏可能 • データベースクラスタを停⽌すると、WriterインスタンスとReaderが停⽌ • データベースクラスタの停⽌中に、指定された保持期間内のクラスタストレージ、⼿動のスナップ ショット、およびバックアップストレージに対しては課⾦されますが、データベースインスタンス 時間に対しては課⾦されない • データベースクラスタは 1 回で最⼤ 7 ⽇まで停⽌可能。7 ⽇後に⾃動的に開 始
  146. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Deletion Protection • 削除保護フラグを設定可能 • 削除保護が有効な場合、インスタンスの削除リ クエストはブロックされるため、インスタンス の削除リクエスト前に削除保護の無効化が必要 • Auroraの場合、クラスタに存在している最後の インスタンス削除時(クラスタ削除時)に有効
  147. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Performance Insights • SQL/User/Host/Wait event毎に実⾏されたクエリのパフォーマン スを閲覧可能 – データベースのパフォーマンスをクエリレベルでドリルダウンして調査える – API/SDK対応 – CloudWatchにDBLoad/DBLoadCPU/DBLoadNonCPUをパブリッシュ可能 • Aurora MySQL 1.17.3以上から対応 – T2インスタンスファミリーは⾮対応 • 7⽇間のデータ保存は無料/2年間保持できるプランはインスタンス ファミリー・リージョンによって価格が異なる – https://aws.amazon.com/jp/rds/performance-insights/pricing/
  148. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Performance Insights • 注意点 Aurora MySQL performance insightsは以下のパラメータを⾃動で有 効にします – performance_schema: 1 – performance-schema-consumer-events-waits-current: ON – performance-schema-instrument: wait/%=ON – performance-schema-consumer-global-instrumentation: ON – performance-schema-consumer-thread-instrumentation: ON そのため、⼀般的にP_S有効化時のようにメモリ利⽤量の増加とパ フォーマンスへの影響があります。AuroraではP_S有効化時の影響を 軽減させる実装を⼊れていますが0ではないため、ご注意下さい
  149. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Performance Insights
  150. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Performance Insights SQL statistics in Aurora
  151. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Backtrack データベースの状態を容量によらず瞬時に特定の時点へ巻き戻す オペミスなどをしてしまった場合に、作業実⾏前の状態にすぐに巻き戻すことでサービスへの影響 を最⼩限に抑えることが可能 T0 T1 T2 T0 T1 T2 T3 T4 T3 T4 REWIND TO T1 REWIND TO T3 INVISIBLE INVISIBLE
  152. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Backtrack • Target backtrack window – DBクラスタをBacktrackできる時間 • Actual backtrack window – DBクラスタをBacktrackできる実際の時間 – target Backtrack windowよりワークロードにより短くなる可能性がある • Auroraは常に⼀貫性のある時間にBacktrackする – Backtrackの時間を指定すると、Auroraは⾃動的に最も近い⼀貫性のある時間を選択する ため、完了したBacktrackが指定した時刻と正確に⼀致しない可能性があります • 100万changeレコードにつき、$0.014(東京リージョン)
  153. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Backtrack • CloudWatchメトリクス – Backtrack Change Records Creation Rate (Count) • 5分間隔で取得され、この間隔の間に⽣成されたchangeレコードの量。コストを試算 する際にご利⽤頂けます • 表⽰まで遅延があります – [Billed] Backtrack Change Records Stored (Count) • 実際にDBクラスタが格納しているchangeレコードの量 • 表⽰まで遅延があります – Backtrack Window Actual (Minutes) • Target backtrack windowとActual backtrack windowの間に違いがあるかどうかを ⽰します。例えば、 Target backtrack windowが2時間(120分)で、このメトリクス でActual backtrack windowが100分とを⽰している場合、実際のbacktrack windowはターゲットよりも⼩さくなります – Backtrack Window Alert (Count) • 特定の期間、 Actual backtrack windowがTarget backtrack windowよりも少なく なったかを表します
  154. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Backtrack • 制限 – 機能を有効にして作成したDBクラスタのみで使⽤可能。クラスタの新規作成、スナップショッ トからの復元、クラスタのクローン時に有効化可能 • 機能が無効のクラスタを有効に変更出来ない – Backtrackウィンドウは72時間まで – Backtrackはクラスタ全体に対して⾏われる • 特定のテーブルや特定クエリを選択して戻すことは出来ない – バイナリログはサポートしていません。Backtrackを有効にするにはクロスリージョンレプリ ケーションを無効にする必要がある – データベースのクローンが作成された次点より前にBacktrackは⾏なえない – Backtrackが実⾏されるとDBインスタンスが瞬断。Backtrack操作の前にアプリケーションを停 ⽌して新規の読み書きが⾏われていない事を確認して下さい。Backtrackが実⾏されるとコネク ションを全てクローズし、コミットされていないトランザクションをドロップする
  155. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. MySQL5.7互換対応 • MySQL5.7.12互換 – バージョンは2.x (MySQL5.6互換は1.x) – JSON support, spatial indexesやgenerated columns対応 – Amazon Auroraの空間インデックスの作成は、MySQL 5.7よりも20倍以上の書き込みパフォーマンスと10倍以上 の読み込みパフォーマンス • インプレースアップグレードは現在は未対応で、今後対応予定 • その他変更点 – The engine name for Aurora MySQL 2.x is ʻaurora-mysqlʼ; the engine name for Aurora MySQL 1.x continues to be ʻauroraʼ – The engine version for Aurora MySQL 2.x is ʻ5.7.12ʼ; the engine version for Aurora MySQL 1.x continues to be ʻ5.6.10a*ʼ – The default parameter group for Aurora MySQL 2.x is ʻdefault.aurora-mysql5.7ʼ; the default parameter group for Aurora MySQL 1.x continues to beʻdefault.aurora5.6ʼ • 詳細: https://forums.aws.amazon.com/ann.jspa?annID=5424
  156. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. OOM Avoidance (1.19以降) • システムメモリを監視し、データベースが様々なコンポーネントで使⽤するメモリを追跡 して、システムのメモリが不⾜した際にOut of Memoryにならないようにベストエ フォートでパラメータグループで指定したアクションを実⾏してOOMを可能な限り回避 します – T2インスタンスはデフォルトで有効 – aurora_oom_responseパラメータで設定 • print: ⼤量のメモリを使⽤するクエリの出⼒のみします • tune: 内部テーブルキャッシュをチューニングして、メモリをシステムに開放します • decline: インスタンスのメモリが不⾜すると新しいクエリを拒否します • kill_query: インスタンスのメモリが閾値より下がるまでメモリ消費の⼤きい順にクエリ を強制終了します。DDLは強制終了されません • print, tune: printとtuneのアクションを実⾏します • tune, decline, kill_query: tune、decline、kill_query"のアクションを実⾏します https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Troubleshooting.html#CHAP_Troubleshooting.AuroraMySQLOOM
  157. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Asynchronous Key Prefetch • Batched Key Access(BKA)JoinアルゴリズムとMulti-Range Read(MRR)最適化 を使⽤するクエリに適⽤され、データ・セットがbuffer pooやquery cacheにな い場合のパフォーマンスを向上 – Aurora開発チームのベンチマークでは、コールドバッファプールを使⽤した場合、クエリのレイテンシが10 倍以上向上。セカンダリインデックスとプライマリインデックスのJoinを⾼速化。⼤きな内部表(カーディナ リティが⾼い)と⼩さな外部表のJoin (equi-join) – ベストプラクティス参照: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraMySQL.BestPractices.html#Aurora.BestP ractices.AKP – Version1.15以上 – デフォルトで有効になっているが以下の条件で実⾏される • batched_key_access: ON • mrr_cost_based: OFF mysql> set @@session.aurora_use_key_prefetch=on; mysql> set @@session.optimizer_switch='batched_key_access=on,mrr_cost_based=off'; Extra: Using join buffer (Batched Key Access with Key Prefetching)
  158. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora Reader Auto Scaling • Aurora Readerを平均CPU利⽤率・平均コネクション数に応じて動的に増 減させる • トラフィックの増減に応じてReader数を増減させることで、読み取りクエリの分散や 余分なコストを⽀払うリスクを軽減 • MariaDB Connector/J やReader Endpointを利⽤することで⾃動的にReaderの追加削 除に対応可能 • Cooldown PeriodやMinimum / Maximum Capacityを設定可能 • 注意点 • 追加されるのはPrimary Instanceと同じDBインスタンスクラス • 急激なスパイクには対応出来ないため予測可能なイベントでは事前にReaderを追加しておく リーダエンドポイント リーダエンドポイント
  159. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Database cloning • ストレージコストを増やすことなく データベースのコピーを作成 • データをコピーするわけではないため、 クローンの作成はほぼ即座に完了 • データのコピーはオリジナルボリュームと コピー先のボリュームのデータが異なる 場合の書き込み時のみ発⽣ • AWS Resource Access Managerを経由して、AWS アカウント間でCloning可能 • ユースケース • プロダクションデータを使⽤したテスト • データベースの再構成 • プロダクションシステムに影響を及ばさずに 分析⽬的で特定の時点での スナップショットを保存 Production database Clone Clone Clone Dev/test applications Benchmarks Production applications Production applications
  160. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. IAM Authentication Integration • Amazon Auroraへログインするための認証にIAMが利⽤可 能に (1.10以降) • IAMのリソース制限を利⽤可能 • パスワードとしてSignature Version 4 を利⽤ (15分間有効の⼀時token) • SSL接続が必須 • データベースアクセスに必要な認証情報をEC2インスタンスなどに配置しなく ても良い • AWS SDKやAWS CLI Tools対応
  161. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. IAM Authentication Integration SSL接続 CREATE USER iam-database-user IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
  162. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. spatial index • 空間インデックスサポート – Amazon Auroraは今までも地点やエリアを表すためにGEOMETRY 型を利⽤可能で、この型を使ってカラムを作成し、ST_Contains, ST_CrossesやST_Distanceといった機能をspatial queryを実⾏す るために利⽤可能 • ⼤きなデータセットに対してスケールするには不⼗分な点や制限が あった – Amazon Auroraではdimensionally ordered space-filling curveを利 ⽤しスケールし、⾼速かつ正確に情報を取得できる改善を⾏った • MySQL5.7と⽐較して最⼤2倍のパフォーマンス
  163. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Advanced Auditing • 設定可能なパラメータ (インスタンスの再起動なし / DBクラスタパラメータグループ) – server_audit_logging: 監査ログの有効/無効化を指定 – server_audit_events: イベントのリストをカンマで区切って指 定 (リスト中のエレメント間にスペースは⼊れなように注意) – server_audit_excl_users: ログに記録しないユーザをカンマ区 切りで指定(リスト中のエレメント間にスペースは⼊れなように注 意) – server_audit_incl_users: ログに記録するユーザをカンマ区切 りで指定(リスト中のエレメント間にスペースは⼊れなように注意)
  164. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Advanced Auditing MariaDB server_audit plugin Aurora native audit support • We can sustain over 500K events/sec Create event string DDL DML Query DCL Connect DDL DML Query DCL Connect Write to File Create event string Create event string Create event string Create event string Create event string Latch-free queue Write to File Write to File Write to File MySQL 5.7 Aurora Audit Off 95K 615K 6.47x Audit On 33K 525K 15.9x Sysbench Select-only Workload on 8xlarge Instance
  165. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Advanced Auditing • server_audit_events – CONNECT – ユーザ情報を含む、接続の成功・失敗・切断を記録 – QUERY – シンタックスや権限不⾜で失敗したクエリを含む、全てのクエリ⽂ 字列とクエリの結果をplane textで記録 – QUERY_DCL – DCLクエリのみを記録 (GRANT, REVOKEなど) – QUERY_DDL – DDLクエリのみを記録 (CREATE, ALTERなど) – QUERY_DML – DMLクエリのみを記録 (NSERT, UPDATEなど) – TABLE – クエリの実⾏で利⽤されたテーブルを記録
  166. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Advanced Auditing • 注意点 – Aurora advanced auditingのタイムスタンプはUnix timeフォー マットで記録される – イベントは各インスタンス毎に4つのログファイルに記録され、ロ グはシーケンシャルには並んでいない。必要に応じてファイルの 結合やタイムスタンプやquery_idを使⽤してソートを⾏う • Unixをお使いの場合の例 cat audit.log.* | sort -t”,” -k1,1 –k6,6 – ファイル数はDBインスタンスサイズに応じて変化しますファイル のローテーションは100MB毎に⾏われ、閾値の変更は不可
  167. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora AuditログをAmazon CloudWatch Logsで管理 DDL DML Query DCL Connect Create event string Create event string Create event string Create event string Create event string Amazon CloudWatch Logs Amazon AuroraのAudit logをCloudWatch Logsに直接転送可能 Filter Patternを設定しMetricsを作成する ことが可能なため、CloudWatchを利⽤した アラートの発報も可能 事前にAmazon Auroraに対して、IAM Role の設定が必要
  168. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora General, Slow, Error ログを Amazon CloudWatch Logsで管理 • General, Slow, Error ログをAmazon CloudWatch Logsで管理で管理可能 • CloudWatch Logsのフィルタリング機能やS3 にエクスポートをして他のシステムなどで活⽤ を容易に⾏なえる
  169. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Zero downtime patch (ZDP) • コネクションを切断すること無くオンラインでパッチを適 ⽤ – 5秒程度スループットの低下が起こりますが、アプリケーションとの接続を維 持したままパッチを適⽤可能に – ベストエフォート • 既に開かれているSSLコネクション、アクティブなロック、トランザクションの完 了やテンポラリテーブルの削除を待ちます。パッチ適⽤可能なウインドウが出来た 場合、ゼロダウンタイムパッチとして適⽤ • ゼロダウンタイムパッチで適⽤出来るウインドウがなかった場合、通常のパッチ適 ⽤プロセスを実⾏ – 以下の条件では通常通りのパッチ適⽤プロセスを実施 • バイナリログを有効にしている (1.19以降では対応) • SSLを利⽤した接続を⾏っており、ZDPのリトライ回数内に接続が終了しない
  170. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ゼロダウンタイムパッチ Networkin g state Applicatio n state Storage Service App stat e Net stat e App state Net stat e Before ZDP New DB Engine Old DB Engine New DB Engine Old DB Engine With ZDP セッションはパッチ 適⽤時に切断される パッチ適⽤中でも セッションは維持される Storage Service
  171. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 性能に関する改善 • Replication improvements – Readerのbuffer cacheを更新するためのログストリームを改善することで、heavy writeやreadワークロードで、リードパフォーマンスの向上と安定 • Throughput improvements for workload with cached reads – Buffer cacheから取得する様なワークロードで、Amazon Auroraはラッチフリーア ルゴリズムをread viewに適⽤することでスループットを向上させました – SysbenchのSelect onlyのベンチマークでは、Amazon Auroraは625K reads/sec、 MySQL5.7は164K reads/secの結果がみられました • Throughput improvements for workload with hot row contention – Amazon Auroraは新しいロックリリースアルゴリズムを利⽤することで、多くのト ランザクションが特定のrowやpageにアクセスするようなワークロードで性能向上 を⾏ないました – TPC-Cベンチマークの結果では、MySQL5.7と⽐較して最⼤16倍のスループットと なりました
  172. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. db.t2.medium / db.t2.smallインスタンスクラス サポート • 検証・テスト向けにdb.t2.medium / db.t2.smallイ ンスタンスをサポート – テストや開発向けの利⽤を推薦 – CPUCreditUsageとCPUCreditBalanceの監視を⾏う
  173. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Improved index build • secondary indexの作成/変更を⾼速化 – db.r3.8xlargeを利⽤した場合、最⼤約75%⾼速化 – ボトムアップ⽅式でインデックスを構築し、不要なページ分割を 排除することで⾼速
  174. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Performance schema • Performance schemaを有効にした場合の性能劣 化を最⼩限に – Amazon Auroraチームのベンチマークでは、Sysbenchを⽤いた場 合MySQLでは60%性能低下があったが、Amazon Auroraでは MySQLと⽐較して1/4の劣化だった – db.r3.8xlargeを⽤いた場合、 Performance schemaを有効にした状 態のSysbenchで100K write/sec, 550K reads/sec
  175. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 性能・安定⾯の向上 • Hot row contention improvement – 特定の⾏に多くのコネクションからアクセスが集中するようなhotな⾏が合っ た場合、CPU利⽤率を権限しスループットを向上 – error 188 がエラーログに出ていたケースを解消 • Improved out-of-memory handling – Amazon Auroraが予約したメモリプールが溢れそうになった場合、メモリの解 放を効率的に⾏うことでOOMによるクラッシュを抑制 • Smart read selector – 全てのリードリクエストで、異なるストレージセグメント間で適切なスト レージセグメントを選択することでリードレイテンシを改善 – SysBenchを⽤いたWriteワークロードのテストで27%性能向上
  176. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Lambda Function Integration • Amazon Aurora内からAWS Lambdaを呼び出せる – ストアードプロシジャーとして実⾏ (mysql.lambda_async) – ⾮同期でLambdaを実⾏する • Version 1.16からは同期実⾏も可能に (lambda_sync関数を利⽤) – IAM Roleで事前にAuroraへ権限を付与しておく • ⾮同期の例 DELIMITER ;; CREATE PROCEDURE SNS_Publish_Message (IN subject VARCHAR(255), IN message TEXT) LANGUAGE SQL BEGIN CALL mysql.lambda_async(’Lambda ARN', CONCAT('{ "subject" : "', subject, '", "message" : "', message, '" }') ); END ;; DELIMITER ;
  177. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Load Data From S3 • S3バケットに保存されたデータを直接Auroraにインポート可 能 – テキスト形式(LOAD DATA FROM S3)・XML形式(LOAD XML FROM S3) – LOAD DATA INFILEとほぼ同様のオプションをサポート (圧縮形式のデータは現在 未サポート) – Manifestによる⼀括ロードにも対応 (Version 1.11以降) <row column1="value1" column2="value2" /> <row column1="value1" column2="value2" /> <row> <column1>value1</column1> <column2>value2</column2> </row> <row> <field name="column1">value1</field> <field name="column2">value2</field> </row>
  178. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Export Data into S3 • S3バケットにデータを直接Auroraエクスポート可能 – LOAD DATA FROM S3で利⽤できるManifestファイルを⽣成可能 – 1ファイルは最⼤6GBずつ分割される • 25GBを超えるようなデータをexportする場合は、複数のSQLに分割して exportする領域をずらして実⾏する事を推薦 SELECT * FROM employees INTO OUTFILE S3 's3://bucket_name/prefixʼ FIELDS TERMINATED BY ',ʼ LINES TERMINATED BY '\nʼ MANIFEST ON OVERWRITE ON;
  179. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 拡張モニタリング 50+ system/OS metrics | sorted process list view | 1–60 sec granularity alarms on specific metrics | egress to Amazon CloudWatch Logs | integration with third-party tools
  180. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 拡張モニタリング Process list Metrics list
  181. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 重要なシステム/OSメトリクスに対応 User System Wait IRQ Idle CPU Utilization Rx per declared ethn Tx per declared ethn Network Num processes Num interruptible Num non-interruptible Num zombie Processes Process ID Process name VSS Res Mem % consumed CPU % used CPU time Parent ID Process List MemTotal MemFree Buffers Cached SwapCached Active Inactive SwapTotal SwapFree Dirty Writeback Mapped Slab Memory TPS Blk_read Blk_wrtn read_kb read_IOs read_size write_kb write_IOs write_size avg_rw_size avg_queue_len Device IO Free capacity Used % Used File System
  182. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 拡張モニタリング • CloudWatch Logsにメトリクスを送信出来る • CloudWtch logs->Lambda->Elasticsearch Service連携も容易 – Kibanaを使って可視化も可能 (Kibanaはインストール済) – アプリケーションやクエリの種類に応じたメトリクスも取得す れば、アプリケーション・DBサーバメトリクス・クエリのパ フォーマンスを⼀箇所で閲覧可能
  183. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 拡張モニタリング • CloudWatch LogsからElasticsearch Service
  184. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Encryption at Rest • Key Management Service(KMS)を利⽤し、透過的な暗 号化と復号を⾏う – 暗号化指定はAuroraクラスタ起動時のみ – ストレージ内やSnapshotが暗号化される – 暗号化されたSnapshotを暗号化が無効なAuroraクラスタに復元は出来ない • Diskに書き込まれるタイミングで⾃動的に実施 • テーブルの中⾝を暗号化するものでは無い点注意 – 実施する場合はアプリケーションなどで実施 (KMSを活⽤可能)
  185. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. パフォーマンスの改善 • Large dataset read performance – スケジューラの改善により、IO/CPUヘビーなワークロードでAuroraが動的に処理スレッド 数を調整することでIO数/CPU利⽤率のバランスがとれ、性能を向上させる • Fast Insert – Primary keyで並んでいるデータを LOAD DATA や INSERT INTO ... SELECT で並列に実⾏ した場合の速度を改善 (将来的には他のワークロードにも適⽤予定) – モニタリング⽤にGlobal変数を追加 • aurora_fast_insert_cache_hits: キャッシュのcursorにヒットした • aurora_fast_insert_cache_misses: ヒットせずindexを⾛査した • Parallel Read Ahead – B-Treeスキャン性能を向上させる。Disk pageの読み込みパターンを⾃動的に判断し、事前 にフェッチしバッファキャッシュに載せることで速度改善を⾏う。 – 現在は、Writerで有効になっており、今後の改善でReaderにも適⽤を⾏う
  186. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Hash joins • equijoinクエリを⾼速化するためにAuroraのオプ ティマイザは、hash joinの使⽤を⾃動的に決定 • クエリプランで強制的に使⽤することも可能 • 内部テストでは、R3.8xlargeインスタンスでコー ルド・バッファー・プールを利⽤したケースで最⼤ 8.2xの性能向上が⾒られた
  187. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Hash joins • Aurora MySQL2.08よりJOINに関するHINTを 追加 – HASH_JOIN, HASH_JOIN_PROBING, HASH_JOIN_BUILDING – MySQL8.0より以下のHINTをbackporting • JOIN_FIXED_ORDER, JOIN_ORDER, JOIN_PREFIX, JOIN_SUFFIX – https://github.com/mysql/mysql- server/commit/d2d91c3286b9ac3b95ef0e5036c5319aa4ffeda2 #diff-4d30ba39ad1958c6f8148f67c94a896b https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Reference.html#AuroraMySQL.Reference.Hints
  188. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Hash joins Latency improvement factor vs. Batched Key Access (BKA) join algorithm Decision support benchmark, R3.8xlarge, cold buffer cache (lower improvement if all data cached) 8.22 - 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 Q uery-1 Q uery-2 Q uery-3 Q uery-4 Q uery-5 Q uery-6 Q uery-7 Q uery-8 Q uery-9 Q uery-10 Q uery-11 Q uery-12 Q uery-13 Q uery-14 Q uery-15 Q uery-16 Q uery-17 Q uery-18 Q uery-19 Q uery-20 Q uery-21 Q uery-22 Hash join used in queries 2, 3, 5, 7, 8, 9, 10, 11, 12, 15, 16, 17,18, 19, 21
  189. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Lab mode • 今後提供予定の機能を試すことが出来る – DBパラメータグループ aurora_lab_mode 変数で設定可能 – 開発中の機能なので本番適⽤ではなく検証⽬的でお使い下さい • GAクオリティですが、全てのワークロードで性能が発揮出来るか検証を⾏っている段 階です – Aurora MySQL version3以降廃⽌ • 現在ご提供中 – Lock compression • ロックマネージャーが利⽤するメモリを最⼤66%削減 • OOMを起こさず、更に多くの⾏ロックを同時に取得することが可能に – Fast DDL • nullableカラムをテーブルの最後に追加する場合にデータ件数によらず⾼速に変更が⾏ なえます • http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraMySQL.Managing.h tml#AuroraMySQL.Managing.FastDDL
  190. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Lab mode • 現在ご提供中 – Batched Scan • インメモリークエリで最⼤1.8xの性能向上が⾒られた https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraMySQL.Updates.LabModeFeatures.html
  191. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Batched scans MySQLでは⾏をに1⾏ずつ評価するため オーバヘッドが以下のような理由で⼤きく なる: • ファンクションコールの増加 • ロックとラッチ • カーソルストアとリストア • InnoDBとMySQL間でフォーマッ トの変換 Amazon Auroraはテーブルスキャン、イ ンデックスフルスキャン、インデックスレ ンジスキャンを⾏う際にInnoDB buffer pool からタプルをまとめて読み込む Latency improvement factor vs. Batched Key Access (BKA) join algorithm Decision support benchmark, R3.8xlarge 1.78X - 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80 2.00 Query-1 Query-2 Query-3 Query-4 Query-5 Query-6 Query-7 Query-8 Query-9 Query-10 Query-11 Query-12 Query-13 Query-14 Query-15 Query-16 Query-17 Query-18 Query-19 Query-20 Query-21 Query-22
  192. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Online DDL: Aurora vs. MySQL § フルテーブルコピー: 全てのインデックスを 再構築 - 数時間から数⽇かかることも § DMLクエリ実⾏のために⼀時領域が必要 § DDLクエリがDMLクエリスループットに影響 § DMLクエリ実⾏中にテーブル・ロックが起こる Index Leaf Leaf Leaf Leaf Index Root table name operation column-name time-stamp Table 1 Table 2 Table 3 add-col add-col add-col column-abc column-qpr column-xyz t1 t2 t3 § メタデータテーブルにエントリーを追加し、 スキーマバージョニングを利⽤する § 変更を適⽤するために最新のスキーマへブロック をアップグレードする際はmodify-on-write § 現在はテーブルの最後にNullableなカラムを 追加する場合に対応 § 他のadd column, drop/reorder, modify datatypesに対応するために実装を⾏っている MySQL Amazon Aurora
  193. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Online DDL performance On r3.large On r3.8xlarge Aurora MySQL 5.6 MySQL 5.7 10GB table 0.27 sec 3,960 sec 1,600 sec 50GB table 0.25 sec 23,400 sec 5,040 sec 100GB table 0.26 sec 53,460 sec 9,720 sec Aurora MySQL 5.6 MySQL 5.7 10GB table 0.06 sec 900 sec 1,080 sec 50GB table 0.08 sec 4,680 sec 5,040 sec 100GB table 0.15 sec 14,400 sec 9,720 sec
  194. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Amazon Aurora • クラウド時代にAmazonが再設計したRDBMS – MySQL5.6/5.7/8.0と互換があり既存の資産を活かしやすい • ⾼いクエリ実⾏並列度・データサイズが⼤きい環境で性 能を発揮 – Amazon Auroraはコネクション数やテーブル数が多い環境で優位性を発揮 • ⾼可⽤性・⾼速なフェイルオーバ・PITRを実現するた めの多くのチャレンジ – Log Structured Storage – SOA
  195. © 2022, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 参考 • 更新情報について – https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide /AuroraMySQL.Updates.html • Amazon Aurora MySQL 2.0 Database Engine Updates • Amazon Aurora MySQL 1.1 Database Engine Updates • MySQL Bugs Fixed by Amazon Aurora MySQL Database Engine Updates • Lab. Modeについて – https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide /AuroraMySQL.Updates.LabModeFeatures.html