Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Amazon Aurora Deep Dive
Yutaka Hoshino, Solution Architect
Amazon Web Services Japan K.K.
⾃⼰紹介
• 星野 豊 (ほしの ゆたか)
@con_mame conmame
ソリューションアーキテクト
DB Specialized SA
• メディア系のお客様や⼤規模なWebサービス企
業様を担当
今回お話する内容は2016/7/15現在の情報です
Amazon Aurora
データベース管理を簡単に
• データベースを数分で作成可能
• ⾃動でパッチの適⽤
• 数クリックするだけでスケールアウト可能
• S3への継続的なバックアップ
• 障害の⾃動検知と⾃動フェールオーバ
• DBAが本来⾏うべき作業に注⼒して頂けるように
– スキーマ設計・チューニング
– クエリ設計・チューニング などなど
Amazon RDS
RDSでデータベースを簡単に作成
• 数クリックでDBが起動
– DBエンジン
– インスタンスクラス
– ディスクの種類とサイズ
等を選ぶだけ
• 必須機能が実装済み
– バックアップ(スナップショット)
• ⾃動バックアップ
• ⼿動バックアップ
– 同期レプリケーションよる可⽤性向上
– 監視 (CloudWatch)
– 管理GUIやAPIで操作可能
2015/7/28 GAリリース!
Virginia / Oregon / Ireland / Sydney / Tokyo / Seoul / Mumbai
リージョン
Amazon Auroraの特徴
ハイパフォーマンス
フルマネージド ⾼可⽤性・⾼耐久性セキュリティにも配慮
MySQL5.6互換スケーラブル
リレーショナルデータベースをもう⼀度考える
• 今、データベースを再度実装するならどうする
か?
– 少なくとも1970年代の⽅法で実装はしない
– AWSサービスを活かすことができ、スケールアウトが簡単で、
セルフヒーリングが出来るようなデータベースを作りたいと考
えた
MySQLのエコシステムをそのまま活⽤可能
Business Intelligence Data Integration Query and Monitoring SI and Consulting
Source: Amazon
“Amazon Auroraに対してコンパチビリティを確認するテストスイートを実施し、全て完
璧に動作を行うことが確認出来ました。- Dan Jewett, Vice President of Product
Management at Tableau
多くのサードパーティ監視ツールが利⽤可能
利⽤事例(⼀例)
Fastest growing service in AWS history
利⽤事例 (⼀例)
インスタンスタイプ
8GB
16GB
32GB
60GB
122GB
244GB
4core 8core 16core 32core
r3.8xl
2core1core
r3.4xl
r3.2xl
r3.xl
r3.large
4GB
1GB
Memory
vCPU
アーキテクチャ
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
キャッシュレイヤの分離
• キャッシュをデータベースプロセ
ス外に移動
• データベースプロセスのリスター
トが発⽣してもキャッシュが残っ
た状態を維持可能
• サービスにすぐデータベースを戻
すことが出来る
• ⾼速なクラッシュリカバリ + 保持
可能なキャッシュ = DB障害から
⾼速に復帰可能
SQL
Transactions
Caching
SQL
Transactions
Caching
SQL
Transactions
Caching
キャッシュプロセスをDBプロセス外におくことで
DBプロセスの再起動でもキャッシュが残る
セキュリティ
• データの暗号化
– AES-256 (ハードウエア⽀援)
– ディスクとAmazon S3に置かれている全ブロックを暗号化
– AWS KMSを利⽤したキー管理
• SSLを利⽤したデータ通信の保護
• 標準でAmazon VPCを使ったネットワークの分
離
• ノードへ直接アクセスは不可能
Storage
SQL
Transactions
Caching
Amazon S3
Application
Auroraのストレージ
• SSDを利⽤したシームレス
にスケールするストレージ
• 標準で⾼可⽤性を実現
• Log structured Storage
SQL
Transactions
AZ 1 AZ 2 AZ 3
Caching
Amazon S3
Auroraのストレージの特徴
• リードレプリカもマスタと同じストレージを参照
• 継続的なS3へ増分バックアップ
– パフォーマンスへの影響なし
• 64TBまで⾃動でストレージがシームレスにスケールアッ
プ
– パフォーマンスや可⽤性に影響無し・利⽤開始時のプロビジョニング不要
• ⾃動で再ストライピング、ミラー修復、ホットスポット
管理、暗号化
Log Structured Storage
• 追記型のストレージ・システム
– ログの様に常に末尾にデータを追加していくだけ
– データが書き込まれているブロックを上書いたりはしない
– ガベージコレクションによりデータを効率的に格納する
• シーケンシャルに読み出すことが出来る
• 常に最新のデータが末尾にある
• これらの特徴によりS3への継続バックアップや⾼速なリカバリ、書き込
み性能の向上を実現
空きスペース
data
data
先頭
data
data
data
新規データは末尾に追記される
↓
ディスク障害検知と修復
• 2つのコピーに障害が起こっても、読み書きに影響は無い
• 3つのコピーに障害が発⽣しても読み込みは可能
• ⾃動検知、修復
SQL
Transaction
AZ 1 AZ 2 AZ 3
Caching
SQL
Transactio
n
AZ 1 AZ 2 AZ 3
Caching
読み書き可能読み込み可能
IO traffic in Aurora (ストレージノード)
LOG RECORDS
Primary
instance
INCOMING QUEUE
STORAGE NODE
S3 BACKUP
1
2
3
4
5
6
7
8
UPDATE
QUEUE
ACK
HOT
LOG
DATA
BLOCKS
POINT IN TIME
SNAPSHOT
GC
SCRUB
COALESCE
SORT
GROUP
PEER-TO-PEER GOSSIPPeer
storage
nodes
全てのステップは非同期
ステップ1と 2だけがフォアグラウンドのレイテンシーに影響
インプットキューはMySQLの1/46 (unamplified, per node)
レイテンシーにセンシティブな操作に向く
ディスク領域をバッファーに使ってスパイクに対処
OBSERVATIONS
IO FLOW
① レコードを受信しインメモリのキューに追加
② レコードを永続化してACK
③ レコードを整理してギャップを把握
④ ピアと通信して穴埋め
⑤ ログレコードを新しいバージョンのデータブロックに合体
⑥ 定期的にログと新しいバージョンのブロックをS3に転送
⑦ 定期的に古いバージョンのガベージコレクションを実施
⑧ 定期的にブロックのCRCを検証
レプリケーション
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
書き込みの種類
レプリケーション
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
新しいメトリクス画⾯
• Throughput
– Select
– Commit
– DML/DDL
• Latency
– Select
– Commit
– DML/DDL
• Cache Hit Ratio
– Buffer Cache
– Result Set
• Deadlocks
• Login Failures
• Blocked Transactions
新しいメトリクス画⾯
• 課⾦に関わるディスク利⽤量やIOPS
– Billed storage
– Billed read operations
– Billed write operations
フェイルオーバとリカバリ
フェイルオーバ と リプレース
• リードレプリカが存在する場合は1分程でフェイル
オーバ可能
– RDS for MySQLよりも⾼速にフェイルオーバ可能
– リードレプリカが存在しない場合は15分程
• Multi-AZ配置として別AZで起動する
– RDS for MySQLと違いリードアクセス可能
クラスタエンドポイント
• WriterとReaderのセットをクラスタと呼び、クラスタで常にWriter(マスタ)を指すクラ
スタエンドポイントが存在する
• 各Auroraノードは個別にエンドポイントを持っている(⾍眼鏡タブ内のEndpointで確認可
能)
Reader
Writer
クラスタエンドポイント
Availability Zone A Availability Zone B
VPC subnet VPC subnet
VPC subnet VPC subnet
Aurora Writer Aurora Reader
クラスタエンドポイント
• 各Auroraノードは個別
にエンドポイントを
持っている
• クラスタエンドポイン
トは、その時アクティ
ブなAurora Writerノー
ドのCNAME
• Readは各Readerを参
照する
Write
クラスタエンドポイント
• フェイルオーバが発
⽣すると、Aurora
ノードの昇格が⾏わ
れ、クラスタエンド
ポイントの指し先が
変わる
Availability Zone A Availability Zone B
VPC subnet VPC subnet
VPC subnet VPC subnet
Aurora Writer Aurora Writer
クラスタエンドポイント
Write
フェイルオーバー時の注意点
• Auroraのフェイルオーバーの仕組みにより、RDS
MySQLよりも⾼速にフェイルオーバーが⾏われる
• フェイルオーバー実⾏時に新WriterとReaderの
キャッシュの整合性をとるため各ReaderのAuroraプ
ロセスもリスタートされる
• 数秒アクセスが出来なくなるため、Readerのインスタンス障害に
備える意味でも、アプリケーションやドライバ側でクエリのリトラ
イ処理を⼊れることを推薦
⾼速でより予測可能なフェイルオーバー時間
App
runningFailure 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
Streaming snapshotとPITR
• Amazon Auroraでは各セグメント毎にAmazon S3
へ継続的に増分バックアップを取得している
– Backup retention periodでバックアップを残す期間を指定可能
• Amazon Auroraが使⽤しているディスクの仕組み
によりパフォーマンスへ影響を与えない
• PITRで5分前からBackup Retention Periodまでの
任意の位置に秒単位で復元可能
継続的なバックアップ
Segment snapshot Log records
Recovery point
Segment 1
Segment 2
Segment 3
Time
各セグメントの定期的なSnapshotは並列で⾏われ、redo logはストリームで継
続バックアップのためにS3に送られるが、パフォーマンスや可⽤性に対する影
響は無し。
リストアでは、適切なセグメントのSnapshotとログストリームをストレージ
ノードに転送し、並列/⾮同期で適⽤していく
⾼速なデータ修復
既存のデータベース
• 最後のチェックポイントからロ
グを適⽤していく
• MySQLではシングルスレッドな
ため適⽤完了までの時間が増加
Amazon Aurora
• Disk readの⼀環として、オンデ
マンドでredo logの適⽤を⾏う
• 並列、分散、⾮同期で⾏われる
Checkpointed Data Redo Log
T0 でクラッシュが発⽣すると
最後のチェックポイントからの
ログを適⽤する必要がある
T0 T0
T0 でクラッシュが発⽣するとredo
を並列で分散して⾮同期でログの適⽤を⾏う
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 ];
• 他にも
– ディスク障害をシミュレート
– ディスクコンジェスションをシミュレート
チューニングとパフォーマンス
WRITE PERFORMANCE READ PERFORMANCE
MySQL SysBench results
R3.8XL: 32 cores / 244 GB RAM
5X faster than RDS MySQL 5.6 & 5.7
SysBenchを⽤いたベンチマークにおいて
MySQLと⽐較して、5倍⾼いスループットを計測
0
25,000
50,000
75,000
100,000
125,000
150,000
0
100,000
200,000
300,000
400,000
500,000
600,000
700,000
Aurora MySQL 5.6 MySQL 5.7
WRITE PERFORMANCE READ PERFORMANCE
インスタンスサイズによるスケール
AuroraはRead/Writeパフォーマンス共にインスタンスサイズに⽐例してスケール
Aurora MySQL 5.6 MySQL 5.7
Beyond benchmarks
• もしも 実環境のアプリケーションがベンチマークと
同様のパフォーマンスを出すのであれば、新しい
データベースを作る必要は無かった
• POSSIBLE DISTORTIONS
– 実環境のリクエストは相互に影響がある
– 実環境のメタデータがディクショナリーキャッシュに収まり続けるの
は稀である
– 実環境のデータがバッファキャッシュに収まり続けるのは稀である
– 実本番環境のデータデータベースはHA構成で動かす必要がある
チューニング指針
• Amazon AuroraはMySQLと⽐較してインスタンスリ
ソースを効率的に最⼤限利⽤する設計
• CPUやメモリの利⽤率が⾼めだが、パフォーマンスに影響が出ない限
りは過度な⼼配は必要ない
• Amazon Auroraは実際のワークロードで性能が発揮でき
るように開発・チューニングが⾏われている
– ベンチマークテストでは無く実際のワークロードでテストを⾏う
– 監視項⽬もインスタンスリソースでは無く、実際のパフォーマンステス
トを元にクエリレイテンシやスループット・buffer poolのcache hitレー
トに注⽬
チューニング指針
• まずはデフォルトのパラメータグループを使⽤
– Amazon Auroraはデフォルトの設定でパフォーマンスを発揮できる
ようにチューニング済み
• 適切なインスタンスタイプを選択することが⼤切
– それでも性能が出ない場合にパラメータグループの変更を検討
チューニングTips
• 1トランザクションで⼤量の更新や削除を⾏っ
たり、⼤量データのシーケンシャルリードを⾏
う場合
• 1トランザクションで⼤量の更新・削除やシーケンシャル
リードを⾏う場合Amazon Auroraのアーキテクチャに合わ
せてクエリを実⾏することで性能を向上させることが可能
• Amazon Auroraは並列でトランザクションが実⾏される
ワークロード(実ワークロード)に向けてチューニングされて
いるため、クエリを分割して並列で実⾏
チューニングTips
#1> SELECT * FROM Table;
#1> SELECT * FROM Table WHERE id BETWEEN 1 AND 10000;
#2> SELECT * FROM Table WHERE id BETWEEN 10001 AND 20000;
#3> SELECT * FROM Table WHERE id BETWEEN 20001 AND 30000;
#4> .........
• SELECT (Parallel Read Aheadで大幅性能改善)
• DELETE / UPDATE
#1> DELETE * FROM Table WHERE id
>= 100000;
#1> DELETE FROM Table WHERE id BETWEEN 10000 AND 20000;
#2> DELETE FROM Table WHERE id BETWEEN 20001 AND 30000;
#3> DELETE FROM Table WHERE id BETWEEN 300001AND 40000;
#4> .........
I/Oを減らす
ネットワークパケットを最⼩限にする
結果をキャッシュしておく
データベースエンジンをオフロードする
DO LESS WORK
⾮同期で処理する
レイテンシーの通り道を減らす
ロックフリーなデータ構造を使う
バッチ操作を同時に⾏う
BE MORE EFFICIENT
データベースは I/O が全て
ネットワーク接続したストレージは PACKETS/SECOND が全て
⾼スループットの処理に コンテキストスイッチ は許されない
性能向上のために⾏っていること
IO traffic in RDS MySQL
BINLOG DATA DOUBLE-WRITELOG
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 mirrorEBS mirror
AZ 1 AZ 2
Amazon S3
EBS
Amazon Elastic
Block Store (EBS)
Primary
instance
Standby
instance
1
2
3
4
5
IO traffic in Aurora (データベース)
AZ 1 AZ 3
Primary
instance
Amazon S3
AZ 2
Replica
instance
AMAZON AURORA
ASYNC
4/6 QUORUM
DISTRIBUTED
WRITES
BINLOG DATA DOUBLE-WRITELOG 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順に並ぶ
適切なセグメントに分割する – 部分ごとに並ぶ
ストレージノードへまとめて書き込む
スレッドプール
• Amazon Auroraはスレッドプールが実装されてい
る
– MariaDBやMySQL EEで提供されているような機能だが、Amazon
Auroraに実装されているものはオリジナル実装
– パラメータグループに項⽬があるが、設定変更は不可能
Client
Thread
Thread
Thread
Thread
Client
MySQL
Client
Thread
Thread
Thread
Thread
Client
Aurora
Thread Pool
• アクティブなスレッドに複数のコネクションを収容
• スレッドプールの数は動的に調整される
• r3.8xlインスタンスのAmazon Auroraで5,000同時コネクションを扱
える
• Standard MySQL – コネクション毎に1
• コネクション数に応じてスケールしない
• MySQL EE – スレッドプール毎にコネクションをアサイン
• しきい値を慎重に設定する必要がある
CLIENTCONNECTION
CLIENTCONNECTION
LATCH FREE
TASK QUEUE
epoll()
MYSQL THREAD MODEL AURORA THREAD MODEL
Adaptive Thread Pool
⾮同期グループコミット
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が返ってきた時
点で堅牢性のある書き込みが完了
過去数ヶ⽉で改善したこと
書き込みバッチサイズのチューニング
read/write I/O要求送信の⾮同期化
パージスレッドのパフォーマンス
バルクインサートのパフォーマンス
バッチ操作
フェイルオーバー時間の短縮
mallocの削減
システムコールの削減
Undoスロットのキャッシュパターン
協調したログ適⽤
その他
binlogと分散トランザクション
ロックの圧縮
先読み(read-ahead)
顧客フィードバック
ホットな⾏競合
ディクショナリ統計
⼩さなトランザクションのコードパス
クエリーキャッシュのread/write競合
ディクショナリシステムのmutex
ロック競合
Amazon Auroraの使いどころ
クエリ同時実⾏数やテーブルサイズが⼤きい
• Amazon Auroraに移⾏することで、クエリスル
ープットの向上などが⾒込まれる
– マルチコア環境でCPUを効率的に利⽤
– 分散ロック機構やQuery Cacheの改善による性能向上
• ディスク
– データ量の増加に応じてディスク容量を気にする必要が無い
– 性能に影響を及ばさずバックアップ
複数のサーバにシャーディングしている
• 複数の⼩さいDBを1つにまとめる
– コスト効果増⼤と管理コストの軽減
– シャーディングをするデータベースを減らすことでアプリケー
ションの設計を簡略化出来る
– 障害時の影響を考慮する必要はある
新機能
クロスリージョンレプリケーション対応
• リージョン間でWriterとReaderを配置可能
• クロスリージョンレプリケーションのセットアップなどは全て
マネージド
• コンソールやAPI経由で簡単に構築可能
• DRや他リージョンへDBを移設する場合などに利⽤
• 注意点
• 機能を有効にする前に必ず最新のパッチを適⽤して下さい
• バイナリログを利⽤したレプリケーションのため、設定前にDB
パラメータグループでbinlog_formatを設定(MIXED推薦)
• バイナリログを利⽤したリージョン間レプリケーションのため、
⼤きめのレプリカラグが発⽣しやすい
Auroraでアカウント間でスナップショットを共有可能
に
• Auroraスナップショットを共有可能に
– スナップショットは他のAWSアカウントと共有するだけではな
く、パブリック(全ユーザ)に共有も可能
– 同⼀リージョンの他のAWSアカウントで起動しているAuroraス
ナップショットからデータベースをリストア可能
• ⽤途
– 環境の分離
– データの共同利⽤
Auroraで暗号化されていないSnapshotから暗号化ク
ラスタを作成可能に
• 暗号化されていないAuroraクラスタを、KMSで
暗号化されたAuroraクラスタへ簡単に移⾏可能
• Snapshotからrestoreを⾏う
• 既存のSnapshotからrestoreする際にEnable
EncryptionをYesに設定し使⽤するKeyを選択
ローカルタイムゾーン対応
• time_zoneパラメータにより任意のタイムゾー
ンに設定可能
– RDS MySQL, RDS MariaDBでは既に対応済み
フェイルオーバー順の指定
• Amazon Auroraのフェイルオーバーの順位を任
意に設定可能
– フェイルオーバーで昇格させるReaderの順番を指定可能
• 優先的にフェイルオーバー先に指定するReaderを設定可能なため、
バッチや集計⽤となどで利⽤している、サービスに組み込みたくな
いReaderを作ることも可能
• 優先度: Tier 0 > Tier 1 > … > Tier 15
• 同じ優先度のReaderが存在する場合
– Writerよりも⼤きいインスタンス
– 優先度もインスタンスサイズも同じ場合は、同じ優先度のReaderから
任意に選択される
Cluster View
• Amazon Aurora Clusterの情報専⽤の画⾯
– Cluster毎に情報を参照出来る
– 例: Cluster Snapshotからリカバリを⾏ったり、Cluster内のDB
インスタンスを全て削除した場合、Cluster定義のみが残るので、
Instance Viewには表⽰されないが、Cluster Viewには表⽰され
る
拡張モニタリング
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
拡張モニタリング
Process list
Metrics list
重要なシステム/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
拡張モニタリング
• CloudWatch LogsからElasticsearch Service
Encryption at Rest(格納時暗号化)
• Key Management Service(KMS)を利⽤し、透過的な暗
号化と復号を⾏う
– 暗号化指定はAuroraクラスタ起動時のみ
– ストレージ内やSnapshotが暗号化される
– 暗号化されたSnapshotを暗号化が無効なAuroraクラスタに復元は出来ない
• Diskに書き込まれるタイミングで⾃動的に実施
• テーブルの中⾝を暗号化するものでは無い点注意
– 実施する場合はアプリケーションなどで実施 (KMSを活⽤可能)
パフォーマンスの改善
• 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にも適⽤を⾏う
– シーケンシャルアクセスのパフォーマンスを⼤幅に改善
Lab mode
• 今後提供予定の機能を試すことが可能
– DBパラメータグループ aurora_lab_mode 変数で設定可能
– 開発チームでテストがされておりますが、開発中の機能なので
本番適⽤ではなく検証⽬的でお使い下さい
• Production⽤途で利⽤可能なクオリティではありますが、正式公開
に向けて多くのワークロードで安定して性能を出せるように最後の
調整が⾏われているステータスです
• パラメータをOFFにすることで直ぐに無効化できるためテストしや
すい
– フィードバックをお待ちしています!
まとめ
Amazon Aurora
• クラウド時代にAmazonが再設計したRDBMS
– MySQL5.6と互換があり既存の資産を活かしやすい
• ⾼いクエリ実⾏並列度・データサイズが⼤きい環境で
性能を発揮
– Amazon Auroraはコネクション数やテーブル数が多い環境で優位性を
発揮
• ⾼可⽤性・⾼速なフェイルオーバ・実環境での性能向
上を実現するための多くのチャレンジ
Amazon Aurora Deep Dive (db tech showcase 2016)

More Related Content

Amazon Aurora Deep Dive (db tech showcase 2016)