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

Cloud Native RDBMS Aurora 〜進化は止まらず〜

maroon1st
November 11, 2017

Cloud Native RDBMS Aurora 〜進化は止まらず〜

maroon1st

November 11, 2017
Tweet

More Decks by maroon1st

Other Decks in Technology

Transcript

  1.  European Southern Observatory(ESO) / Creative Commons Attribution 4.0 International

    https://upload.wikimedia.org/wikipedia/commons/3/38/Artist%27s_rendering_ULAS_J1120%2B0641.jpg
  2. "VSPSBͷಛ௃  w ؅ཧ͕؆୯ w ߴ͍εέʔϥϏϦςΟ w Մ༻ੑͱ଱ٱੑ w ߴ଎

    w ҆શ w ҆Ձ Creative Commons Attribution-Share Alike 3.0 Unported https://commons.wikimedia.org/wiki/File:Aurora_Borealis_22Jan2004.jpg
  3. "VSPSBͷಛ௃ ⾼性能 MySQL の5倍 PostgreSQL の2倍 Read 最⼤ 500,000 IOPS

    Write 最⼤ 100,000 IOPS 10msのレプリカレイテンシ ⾼いスケーラビリティ 1 vCPU/2 GB 〜 32 vCPU/244 GB 64 TBまで⾃動拡張 最⼤15個のレプリカ 
  4. "VSPSBͷಛ௃  互換性 MySQL 5.6 互換 PostgreSQL 9.6 互換 完全マネージド型

    管理タスクに悩まない ⾃動的なモニタリング ⾃動バックアップ
  5. 4UPSBHF/PEF  インメモリキューイング Update Queue Hot Log Data Blocks S3

    Backup ACK 振り分けて 集める レコードを記録 GC 洗浄 合体 ポイントインタイム スナップショット P2Pで通信 ① レコードを受信しインメモリの キューに追加 ② レコードを永続化してACK ③ レコードを整理してギャップを把握 ④ ピアと通信して⽳埋め ⑤ ログレコードを新しいバージョンの データブロックに合体 ⑥ 定期的にログと新しいバージョンの ブロックをS3に転送 ⑦ 定期的に古いバージョンのガベージ コレクションを実施 ⑧ 定期的にブロックのCRCを検証 ⑧ ⑦ ⑥ ⑤ ④ ③ ② ①
  6. -PH4USVDUVSFE4UPSBHF  • データをログのように先頭から追記する • 各々のログレコードはLog Sequence Number (LSN)を持ち不⾜・重複を判別できる •

    既存のデータがあるブロックを上書きしない • (個⼈の感想ですが)DDDのEvent Sourcingに通じる 空きスペース data data data data data 時系列
  7. -PH4USVDUVSFE4UPSBHF  LSNに関する略称。意味は後述。 • LSN: Log Sequence Number • VCL:

    Volume Complete LSN • VDL: Volume Durable LSN • CPL: Consistency Point LSN • LAL: LSN Allocation Limit • SCL: Segment Complete LSN • PGMRPL: Protection Group Min Read Point LSN
  8. -PH4USVDUVSFE4UPSBHFʢ8SJUFʣ  Zone-A Segment A1 Segment A2 SCL:10000 SCL:10000 Zone-B

    Segment B1 Segment B2 SCL:10000 SCL:10000 Zone-C Segment C1 Segment C2 SCL:10000 SCL:10000 VCL:Volume Complete LSN(ボリューム完了LSN) VDL:Volume Durable LSN(ボリューム耐久LSN) CPL:Consistency Point LSN(⼀貫性ポイントLSN)
  9. -PH4USVDUVSFE4UPSBHFʢ8SJUFʣ  Zone-A Segment A1 Segment A2 SCL:10300 SCL:10300 Zone-B

    Segment B1 Segment B2 SCL:10300 SCL:10050 Zone-C Segment C1 Segment C2 SCL:10300 SCL:10000 CPL VCL VDL CPL 書き込み1
  10. -PH4USVDUVSFE4UPSBHFʢ8SJUFʣ  Zone-A Segment A1 Segment A2 SCL:10600 SCL:10300 Zone-B

    Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10050 CPL VDL CPL VCL 書き込み1 書き込み2
  11. -PH4USVDUVSFE4UPSBHFʢ8SJUFʣ  Zone-A Segment A1 Segment A2 SCL:10600 SCL:10300 Zone-B

    Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10300 CPL VDL CPL VCL 書き込み1 書き込み2 データの補完 同AZのデータを コピーして補完する
  12. -PH4USVDUVSFE4UPSBHFʢ$PNNJUʣ  Zone-A Segment A1 Segment A2 SCL:10600 SCL:10300 Zone-B

    Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10300 CPL VDL CPL コミットLSNよりVDLが進んでいれば コミットができる 書き込み1 書き込み2
  13. -PH4USVDUVSFE4UPSBHFʢ3FBEʣ  ⼀般的なDBのページキャッシュ 普通はダーティページがあれば置き換え前に ディスクにフラッシュ Zone-A Segment A1 Segment A2

    SCL:10600 SCL:10300 Zone-B Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10050 CPL VDL CPL Cache
  14. -PH4USVDUVSFE4UPSBHFʢ3FBEʣ  Auroraのページキャッシュ キャッシュがページLSNを保持 Zone-A Segment A1 Segment A2 SCL:10600

    SCL:10300 Zone-B Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10050 CPL VDL CPL Cache ページLSN
  15. -PH4USVDUVSFE4UPSBHFʢ3FBEʣ  Auroraのページキャッシュ キャッシュがページLSNを保持 Zone-A Segment A1 Segment A2 SCL:10600

    SCL:10300 Zone-B Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10050 CPL VDL CPL Cache ページLSN ページLSN ≧ VDL でページアウト
  16. -PH4USVDUVSFE4UPSBHFʢ3FBEʣ  Auroraのページキャッシュ キャッシュミスの場合はVDLを要求 Zone-A Segment A1 Segment A2 SCL:10600

    SCL:10300 Zone-B Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10050 CPL VDL CPL Cache ページLSN VDLを要求
  17. -PH4USVDUVSFE4UPSBHFʢ3FBEʣ  レプリカがデータを読む場合 データが読込済みのLSNをProtection Group Min Read Point LSN (PGMRPL)

    Zone-A Segment A1 Segment A2 SCL:10600 SCL:10300 Zone-B Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10050 CPL VDL CPL PGMRPL Cache Cache Cache
  18. -PH4USVDUVSFE4UPSBHFʢ3FBEʣ  レプリカがデータを読む場合 PGMRPLをRead Replica間で交換する それ以降のデータを読めば良い Cache Cache Zone-A Segment

    A1 Segment A2 SCL:10600 SCL:10300 Zone-B Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10050 CPL VDL Cache PGMRPL
  19. -PH4USVDUVSFE4UPSBHFʢ3FQMJDBʣ  Protection Group Availability Zone Availability Zone Availability Zone

    Storage Node Storage Node Storage Node Storage Node Storage Node Storage Node Cache Cache ログのLSN Cache
  20. -PH4USVDUVSFE4UPSBHFʢ3FQMJDBʣ  Protection Group Availability Zone Availability Zone Availability Zone

    Storage Node Storage Node Storage Node Storage Node Storage Node Storage Node Cache Cache 削除 Cache 削除 VDL以下のLSNのログレコードである場合
  21. -PH4USVDUVSFE4UPSBHFʢ5SBOTBDUJPO3FDPWFSZʣ  Zone-A Segment A1 Segment A2 SCL:10600 SCL:10300 Zone-B

    Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10300 CPL VDL CPL 書き込み1 書き込み2
  22. -PH4USVDUVSFE4UPSBHFʢ5SBOTBDUJPO3FDPWFSZʣ  Zone-A Segment A1 Segment A2 SCL:10600 SCL:10300 Zone-B

    Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10300 CPL VDL CPL 書き込み1 書き込み2 書き込み中に クラッシュ
  23. -PH4USVDUVSFE4UPSBHFʢ5SBOTBDUJPO3FDPWFSZʣ  Zone-A Segment A1 Segment A2 SCL:10600 SCL:10300 Zone-B

    Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10300 CPL VDL CPL 書き込み1 書き込み2
  24. -PH4USVDUVSFE4UPSBHFʢ5SBOTBDUJPO3FDPWFSZʣ  Zone-A Segment A1 Segment A2 SCL:10600 SCL:10300 Zone-B

    Segment B1 Segment B2 SCL:10600 SCL:10450 Zone-C Segment C1 Segment C2 SCL:10600 SCL:10300 CPL VDL CPL 書き込み1 書き込み2 書き込み3 Segment A1 Segment A2 Segment B1 Segment B2 Segment C1 Segment C2 LAL:LSN Allocation Limit (LSN割当上限)
  25. -PH4USVDUVSFE4UPSBHFʢ3FDPWFSZʣ  Zone-A Segment A1:PG1 Segment A2:PG1 Zone-B Segment B1:PG1

    Segment B2:PG1 Zone-C Segment C1:PG1 Segment C2:PG1 故障 クォーラムA
  26. -PH4USVDUVSFE4UPSBHFʢ3FDPWFSZʣ  Zone-A Segment A1:PG1 Segment A2:PG1 Zone-B Segment B1:PG1

    Segment B2:PG1 Zone-C Segment C1:PG1 Segment C2:PG1 クォーラムA Segment C2-2:PG1 新規に選出
  27. -PH4USVDUVSFE4UPSBHFʢ3FDPWFSZʣ  Zone-A Segment A1:PG1 Segment A2:PG1 Zone-B Segment B1:PG1

    Segment B2:PG1 Zone-C Segment C1:PG1 Segment C2:PG1 クォーラムA Segment C2-2:PG1 クォーラムB
  28. -PH4USVDUVSFE4UPSBHFʢ3FDPWFSZʣ  Zone-A Segment A1:PG1 Segment A2:PG1 Zone-B Segment B1:PG1

    Segment B2:PG1 Zone-C Segment C1:PG1 Segment C2:PG1 クォーラムA Segment C2-2:PG1 クォーラムB 修復
  29. -PH4USVDUVSFE4UPSBHFʢ3FDPWFSZʣ  Zone-A Segment A1:PG1 Segment A2:PG1 Zone-B Segment B1:PG1

    Segment B2:PG1 Zone-C Segment C1:PG1 Segment C2:PG1 クォーラムA Segment C2-2:PG1 クォーラムB 完了
  30. -PH4USVDUVSFE4UPSBHFʢ3FDPWFSZʣ  Zone-A Segment A1:PG1 Segment A2:PG1 Zone-B Segment B1:PG1

    Segment B2:PG1 Zone-C Segment C1:PG1 Segment C2:PG1 クォーラムA (正常) Segment C2-2:PG1 クォーラムB (正常)
  31. -PH4USVDUVSFE4UPSBHFʢ3FDPWFSZʣ  Zone-A Segment A1:PG1 Segment A2:PG1 Zone-B Segment B1:PG1

    Segment B2:PG1 Zone-C Segment C1:PG1 Segment C2:PG1 Segment C2-2:PG1 クォーラムB (正常)
  32. -PH4USVDUVSFE4UPSBHFʢ3FDPWFSZʣ  Zone-A Segment A1:PG1 Segment A2:PG1 Zone-B Segment B1:PG1

    Segment B2:PG1 Zone-C Segment C1:PG1 Segment C2-2:PG1 クォーラムB (正常)
  33. ϑΣΠϧΦʔόʔ  Protection Group Availability Zone Availability Zone Availability Zone

    Storage Node Storage Node Storage Node Storage Node Storage Node Storage Node Cache Cache Cache
  34. ϑΣΠϧΦʔόʔ  Protection Group Availability Zone Availability Zone Availability Zone

    Storage Node Storage Node Storage Node Storage Node Storage Node Storage Node Cache Cache 昇格 Cache
  35. ϑΣΠϧΦʔόʔ  Protection Group Availability Zone Availability Zone Availability Zone

    Storage Node Storage Node Storage Node Storage Node Storage Node Storage Node Cache Cache 全て削除 Cache 全て削除
  36. "VSPSBͷશମਤ Primary RW DB RDS VPC Customer VPC Storage VPC

    Customer Application 3%4 )PTU.BOBHFS "VSPSB .Z42- Secondary RO DB 3%4 )PTU.BOBHFS "VSPSB .Z42- Local SSDs Storage Node Local SSDs Storage Node Local SSDs Storage Node Local SSDs Storage Node Backup Backup 
  37. *"."VUIFOUJDBUJPO*OUFHSBUJPO  AuroraにIAM権限でログイン ① 認証情報を問合せる ② 認証情報を取得する ③ Auroraにアクセスする(SSL) ④

    (おそらく)認証情報を検証する ⑤ (おそらく)権限を取得する ※ スループットが低いのが難点 (20接続/秒、db.t2.microは10接続/秒) client IAM temporary security credential permissions AWSAuthenticationPlugin Amazon Aurora ⑤ ④ ③ ② ①
  38. "VSPSBͷ࣮ߦதΫΤϦΛ؂ࢹ͢Δ  Slow Queryは完了後の出⼒。『実⾏中』の状況が⾒たい。 Event Schedulerでクエリ実⾏ PROCESSLISTの結果を Lambdaへ送る LambdaからCloudWatch Logsへ

    詳細はこちらへ http://dev.classmethod.jp/cloud/aws/aurora-processlist-to-cloudwatch-logs/ ※ ReaderはEvent Schedulerが動かなくてツラい Amazon CloudWatch AWS Lambda EVENT SCHEDULER PROCESSLIST TABLE call lambda_async