ついに解禁!amazon aurora徹底検証!

62
؇נ峄䱢猳Bnb{po!Bvspsb ㊚ㅶ㯽崝猳 ⁵Bvspsb⁶!jt!b!ofx!bxftpnf!SECNT!uibu!jt!opu!⁵NzTRM⁶ cz! Nbtbtij!Ufsvj!bu!ec!ufdi!tipxdbtf!Tbqqpsp!3126

Upload: terui-masashi

Post on 16-Apr-2017

22.472 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: ついに解禁!Amazon Aurora徹底検証!
Page 2: ついに解禁!Amazon Aurora徹底検証!

2

Page 4: ついに解禁!Amazon Aurora徹底検証!

Masashi Terui @ marcy_teruiI’m a developer and architect in the operators company (JIG-SAW Inc.)

I'm the organizer on the some of events in sapporo with the theme of "Infrastructure as Code”. I’m a AWS Certified DevOps Engineer Professional.

I’m a member of JAWS-UG Sapporo and GCPUG Sapporo (Coming soon!) I’m the winner of “Tuningathon 5” (The theme was MySQL!)

ABOUT ME

4

Page 5: ついに解禁!Amazon Aurora徹底検証!

ABOUT US

5

Coming soon!!

Page 6: ついに解禁!Amazon Aurora徹底検証!

6

Page 7: ついに解禁!Amazon Aurora徹底検証!

7

Page 8: ついに解禁!Amazon Aurora徹底検証!

Aurora #とは

8

Amazon Aurora は、MySQL と互換性のあるリレーショナルデータベースエンジンで、

高性能の商業用データベースの可用性およびスピードと、

オープンソースデータベースのコスト効率性および簡素性を併せ持っています。

Amazon Aurora は、MySQL の 5 倍の性能を持ち、

同様の機能や可用性を提供している商用データベースの 10 分の 1 の価格です。 - Amazon Aurora公式ページ(https://aws.amazon.com/jp/rds/aurora/) より抜粋 -

Page 9: ついに解禁!Amazon Aurora徹底検証!

9

∀`

Page 10: ついに解禁!Amazon Aurora徹底検証!

Auroraの評判 (一部)

10

• 革新的

• これぞ、クラウド時代のデータベースだ!!1

• うまい、はやい、やすい、で使わない理由がない

• MySQLはもう要らない子

Page 11: ついに解禁!Amazon Aurora徹底検証!

11

Page 12: ついに解禁!Amazon Aurora徹底検証!

12

Page 13: ついに解禁!Amazon Aurora徹底検証!

13

Page 14: ついに解禁!Amazon Aurora徹底検証!

14

Page 15: ついに解禁!Amazon Aurora徹底検証!

前提知識① 特徴

15

MySQL5.6互換

ストレージは10GBから64TBまで自動拡張、使った分だけ課金

3つのAZで6つの領域に分散した共有ストレージ

S3へ継続的なバックアップ

独自機能の実装も多数

Page 16: ついに解禁!Amazon Aurora徹底検証!

前提知識② Architecture

16

SSD, scale-out, multi-tenant storage

Quorum

Log structured storage

Service Oriented Architecture

Page 17: ついに解禁!Amazon Aurora徹底検証!

17

4本の書込みQuorum

残りは非同期で反映

3本の読込みQuorum

3本でデータが揃えば正と言える

DynamoDB等でも使われている※DynamoDBはQuorumの本数が異なる

http://yoshidashingo.hatenablog.com/entry/2014/11/26/032121

Page 18: ついに解禁!Amazon Aurora徹底検証!

18

ファイルシステムそのものをログのように扱う

書き込みは常に追記

ファイルとそれにまつわるメタデータがまとめて書き出せる

上書きがないため過去データが残っているバイナリ(REDO)ログ保管の必要がない

http://www2.cs.uh.edu/~paris/7360/PowerPoint/LFS3.ppt

Page 19: ついに解禁!Amazon Aurora徹底検証!

19

Page 20: ついに解禁!Amazon Aurora徹底検証!

20

Page 21: ついに解禁!Amazon Aurora徹底検証!

21

Page 22: ついに解禁!Amazon Aurora徹底検証!

22

Amazon, Auroraに限らず

5倍とは何に対して5倍なのか?

例:RDS 30kPIOPSがi2.8xlargeのローカルSSDより書き込みが速いなんて、

ちゃんとチューニングしてないのでは?http://www.slideshare.net/AmazonWebServices/sdd415-new-launch-amazon-aurora-amazons-new-relational-database-engine-aws-reinvent-2014/21 とはいえ、Auroraが速いことを否定するものではない

自分の要件にあっているかは自分で測る

Page 23: ついに解禁!Amazon Aurora徹底検証!

例の件だけ やってみた

23

Aurora r3.8xlarge

i2.8xlarge, MySQL5.6 Local SSD x1 ext4 ほぼデフォルト設定

i2.8xlarge, MySQL5.6 Local SSD x8 RAID0 XFS

チューニング済み

102768.28 writes/sec

38020.90 writes/sec

108131.92 writes/sec

MySQL Sysbench 1000threads * 4clients Write (Insert) Only

Page 24: ついに解禁!Amazon Aurora徹底検証!

24

Page 25: ついに解禁!Amazon Aurora徹底検証!

25

Page 26: ついに解禁!Amazon Aurora徹底検証!

Point

26

Replication (Scale out, Fault tolerance)

Cache (Buffer Pool, Query Cache)

Storage (Random R/W, Scan)

Engine (Parser, Optimizer)

Page 27: ついに解禁!Amazon Aurora徹底検証!

27

Page 28: ついに解禁!Amazon Aurora徹底検証!

Read Replica

28

厳密にはレプリカ(複製)じゃない

マスターとディスクを共有しているリードオンリーのノード

書き込みはマスターノードのみ

分散ディスクによる耐障害性の確保とQuorumによる一貫性の担保の両立

レプリカ遅延は数ms〜数十ms

同じディスクを見てるのに遅延があるのは何故?

→キャッシュのパージにかかる時間

Page 29: ついに解禁!Amazon Aurora徹底検証!

29

低遅延

SQLスレッド(更新適用)による

パフォーマンス劣化なし

データ追従を考えなくて良いため

ノード追加が高速

遅延レプリケーションができない

マルチソース、部分的レプリケーションなど、

変則的なレプリケーションができない

Page 30: ついに解禁!Amazon Aurora徹底検証!

30

Page 31: ついに解禁!Amazon Aurora徹底検証!

Buffer Pool

31

本体とキャッシュのプロセスを分離

再起動時にBuffer Poolを失わない

innodb_buffer_pool_dumpとの違いは?

→リストア時間・リストアにかかる負荷の有無

Page 32: ついに解禁!Amazon Aurora徹底検証!

Query Cache

32

Query Cacheにも手を入れている デフォルトON オーバヘッドは減っているが、Write Heavyな環境ではOFF推奨

r3.large MySQL5.6 Query Cache ON

522.4tps

MySQL Sysbench 400threads 1Client OLTP (Read Only OFF)

r3.large MySQL5.6 Query Cache OFF

543.14tps

r3.large Aurora Query Cache ON

545.32tps

r3.large Aurora Query Cache OFF

547.03tps

Page 33: ついに解禁!Amazon Aurora徹底検証!

33

Page 34: ついに解禁!Amazon Aurora徹底検証!

Random R/W

34

SSD最適化による高速化

あらゆる更新が追記であるため、DELETEとUPDATEのコストが低い?

r3.large MySQL5.6 Query Cache OFF

9057.89 writes/sec

r3.large Aurora Query Cache OFF

MySQL Sysbench 400threads 1Client UPDATE

5837.87 writes/sec

r3.large MySQL5.6 Query Cache OFF

15361.38 writes/sec

r3.large Aurora Query Cache OFF

16762.52 writes/sec

MySQL Sysbench 400threads 1Client DELETE

Page 35: ついに解禁!Amazon Aurora徹底検証!

Scan

35

ストレージが全く別物なので、これに関しては同じということはまず無い

Log structured storageはデータが連続した領域に書き込まれるため、シーケンシャルアクセスに強そう

巨大なデータセットをQuorumで多数決するオーバヘッドが気になる所(オーバヘッドあるっぽいで・・・)

最大64TBのデータが入るとは言っても、別にスキャンが速いわけではないので、DWHの代わりにはならない?

r3.large MySQL5.6 Local SSD

4.85sec

r3.large Aurora

312.92sec10,000,000 Records Full Scan

Buffer Pool is empty

・・・

Page 36: ついに解禁!Amazon Aurora徹底検証!

36

Page 37: ついに解禁!Amazon Aurora徹底検証!

Parser Optimizer

37

この辺りも変わっている

この辺を見だすとキリが無くなるので、今回は・・・

よりリソースを効率的に使用してスループットを上げるよう改良されているとのこと

→CPU等のリソース消費をあまり気にせず、スループットを見て比較すると良い

Page 38: ついに解禁!Amazon Aurora徹底検証!

38

Page 39: ついに解禁!Amazon Aurora徹底検証!

39

Page 40: ついに解禁!Amazon Aurora徹底検証!

40

従来は、定期フルバックアップ+差分バイナリログバックアップ

復旧は直近のフルバックアップをリストアした上で、

差分バイナリログによる更新を順次適用

フルバックアップからの更新量に比例して復旧時間が長くなる

RDSならフル・差分どちらもS3に待避されるため信頼性は非常に高い

Page 41: ついに解禁!Amazon Aurora徹底検証!

41

過去のデータがそのままの状態で継続的にS3へバックアップされている

リストアも差分適用が無い分、間違いなく高速

どのタイミングでも安定したリストア時間が期待できる

Page 42: ついに解禁!Amazon Aurora徹底検証!

42

Page 43: ついに解禁!Amazon Aurora徹底検証!

43

まずはスケールアップ

読み込みはRead Replicaでスケール可能

書き込みはShardingするしかない

容量追加はディスク増設(要停止) or Sharding

Page 44: ついに解禁!Amazon Aurora徹底検証!

44

読み込みスケールがRead Replicaなのは一緒だが、

Replicaの作成コストが低い(前述)

書き込みはノードとしては1つであるものの、

分散ディスクによってローカルSSD並の性能が出せているので良好と言える

ディスク容量は64TBまで自動でスケール(使った分だけ支払い)

※64TBはInnoDBの制限でAurora的にはもっといけるらしい

Page 45: ついに解禁!Amazon Aurora徹底検証!

45

Page 46: ついに解禁!Amazon Aurora徹底検証!

46

RDS for MySQLではない場合はRead Replicaを組んで、

mysqlfailoverやMHAが一般的

対象が非同期レプリケーションだとデータ損失の可能性有り

(凖同期でも100%ではない)

RDS for MySQLの場合、Multi-AZスタンバイへのレプリケーションは、

独自の仕組みにより完全同期となっており基本的に損失はない

ただし、Multi-AZスタンバイはRead Replicaとしては使えない

Page 47: ついに解禁!Amazon Aurora徹底検証!

47

対象はRead Replicaのいずれか

ストレージは同じものであるためデータ損失無し

RDS for MySQLのMulti-AZと比べるとスタンバイ分の料金がお得

Page 48: ついに解禁!Amazon Aurora徹底検証!

48

Page 49: ついに解禁!Amazon Aurora徹底検証!

49

基本的に難しい

シャットダウンとクラッシュは違う

想定した復旧オペレーションが想定と違いがうまくいかないことも

Page 50: ついに解禁!Amazon Aurora徹底検証!

50

SQLコマンドで障害のシミュレーション可能

インスタンスのクラッシュのような全体障害

NW、Disk等の部分障害

万が一の障害時のオペレーションが簡単にシミュレートでき、

復旧の確実性が上がる

Page 51: ついに解禁!Amazon Aurora徹底検証!

51

Page 52: ついに解禁!Amazon Aurora徹底検証!

52

InnoDB Buffer Pool Dump(5.6〜)

Query CacheはWarming不可

mysqldが止まると消える(InnoDB Buffer Pool Dump以外)

再起動直後は性能が落ちる

Buffer Pool Dumpは時間とリストア中の性能への影響が・・・

Page 53: ついに解禁!Amazon Aurora徹底検証!

53

Cache機構は別プロセス

Shutdown(正確にはreboot)しても消えない

再起動時の性能が安定する

起動時の影響無し

Page 54: ついに解禁!Amazon Aurora徹底検証!

54

Page 55: ついに解禁!Amazon Aurora徹底検証!

55

1. mysqldump --single-transaction --master-data=2

2. RDS for MySQLからなら既存のスナップショットからマイグレーション可能

3. 稼働中のインスタンスからバックグラウンドでスナップショットを取らせてマイグレーションも可能

4. 無停止(に近い)移行なら1 or 3して、Aurora Slaveに外部Masterにぶらさげて

(AWS謹製ストアドmysql.rds_set_external_masterをコール)、Master昇格させる

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.NonRDSRepl.html

Page 56: ついに解禁!Amazon Aurora徹底検証!

56

Page 57: ついに解禁!Amazon Aurora徹底検証!

57

5.7もかなり進化してます

https://yakst.com/ja/posts/2478

Auroraは相当に手を入れている感じがするので、どう取り込まれるかは未知数という印象

ただ、AuroraはAuroraで進化するし、事実、Preview中からの改良は目を見張るものがある

5.7との性能比較などについては天下のDimitri先生からお聞きください|彡サッ

http://dimitrik.free.fr/blog/archives/2014/11/mysql-performance-57-and-rds-aurora-so-what.html

Page 58: ついに解禁!Amazon Aurora徹底検証!

58

Page 59: ついに解禁!Amazon Aurora徹底検証!

59

特に運用面では優位性が際立つ

どんなものにも向き不向きがあるのは当然

運用まで含めてトータルで考えれば、十分選択肢に入る

小中規模よりは、Write Heavyなハイトランザクション環境へおすすめ

そもそもLarge未満の小さいサイズのインスタンスは提供予定が今のところない

Auroraに限らず、新しいものの導入に際しては検証をしよう

Auroraはこれからも進化するはずなので、期待したい(もちろんMySQLも)

Page 60: ついに解禁!Amazon Aurora徹底検証!

60

Page 62: ついに解禁!Amazon Aurora徹底検証!