Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Wataru Nishimoto
8,246 views
Zaim 500万ユーザに向けて〜Aurora 編〜
ZaimのデータベースをAmazon RDS MySQLからAmazon Auroraに載せ替えた時のお話
Engineering
◦
Read more
7
Save
Share
Embed
Embed presentation
Download
Downloaded 10 times
1
/ 39
2
/ 39
3
/ 39
4
/ 39
5
/ 39
6
/ 39
7
/ 39
8
/ 39
9
/ 39
10
/ 39
11
/ 39
12
/ 39
13
/ 39
14
/ 39
15
/ 39
16
/ 39
17
/ 39
18
/ 39
19
/ 39
20
/ 39
21
/ 39
22
/ 39
23
/ 39
24
/ 39
25
/ 39
26
/ 39
27
/ 39
28
/ 39
29
/ 39
30
/ 39
31
/ 39
32
/ 39
33
/ 39
34
/ 39
35
/ 39
36
/ 39
37
/ 39
38
/ 39
39
/ 39
More Related Content
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
by
Amazon Web Services Japan
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
PDF
Dockerからcontainerdへの移行
by
Kohei Tokunaga
PDF
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
PPTX
Dockerからcontainerdへの移行
by
Akihiro Suda
PPTX
Helidon 概要
by
オラクルエンジニア通信
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
by
Amazon Web Services Japan
マイクロにしすぎた結果がこれだよ!
by
mosa siru
Dockerからcontainerdへの移行
by
Kohei Tokunaga
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
Dockerからcontainerdへの移行
by
Akihiro Suda
Helidon 概要
by
オラクルエンジニア通信
What's hot
PPTX
分散トレーシングAWS:X-Rayとの上手い付き合い方
by
Recruit Lifestyle Co., Ltd.
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
Keycloak拡張入門
by
Hiroyuki Wada
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
by
Amazon Web Services Japan
PPTX
イベント・ソーシングを知る
by
Shuhei Fujita
PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
by
Amazon Web Services Japan
PPTX
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
PDF
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
by
Chihiro Ito
PDF
DockerとPodmanの比較
by
Akihiro Suda
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
by
NTT DATA Technology & Innovation
PDF
分散トレーシング技術について(Open tracingやjaeger)
by
NTT Communications Technology Development
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
by
AdvancedTechNight
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PPTX
トランザクションの設計と進化
by
Kumazaki Hiroki
PDF
コンテナにおけるパフォーマンス調査でハマった話
by
Yuta Shimada
PPTX
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
by
Shohei Koyama
分散トレーシングAWS:X-Rayとの上手い付き合い方
by
Recruit Lifestyle Co., Ltd.
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
Keycloak拡張入門
by
Hiroyuki Wada
20190911 AWS Black Belt Online Seminar AWS Batch
by
Amazon Web Services Japan
イベント・ソーシングを知る
by
Shuhei Fujita
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
by
Amazon Web Services Japan
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
Javaはどのように動くのか~スライドでわかるJVMの仕組み
by
Chihiro Ito
DockerとPodmanの比較
by
Akihiro Suda
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
by
NTT DATA Technology & Innovation
分散トレーシング技術について(Open tracingやjaeger)
by
NTT Communications Technology Development
単なるキャッシュじゃないよ!?infinispanの紹介
by
AdvancedTechNight
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
トランザクションの設計と進化
by
Kumazaki Hiroki
コンテナにおけるパフォーマンス調査でハマった話
by
Yuta Shimada
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
インフラエンジニアの綺麗で優しい手順書の書き方
by
Shohei Koyama
Viewers also liked
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
PDF
オンプレミスRDBMSをAWSへ移行する手法
by
Amazon Web Services Japan
PDF
AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...
by
Amazon Web Services Japan
PDF
Black Belt Online Seminar AWS Amazon RDS
by
Amazon Web Services Japan
PDF
AWS初心者向けWebinar RDBのAWSへの移行方法(Oracleを例に)
by
Amazon Web Services Japan
PDF
WS Black Belt Online Seminar 2016 RDBのAWSへの移行
by
Amazon Web Services Japan
PDF
[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ
by
Amazon Web Services Japan
PDF
Aurora
by
maruyama097
PDF
ついに解禁!Amazon Aurora徹底検証!
by
Terui Masashi
PDF
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
by
Terui Masashi
PDF
【ヒカラボ】RDS for MySQL → Aurora
by
Yuki Kanazawa
PDF
【JAWS DAYS 2016】ランサーズを支えるAurora
by
Yuki Kanazawa
PDF
Amazon Aurora
by
Shinpei Ohtani
PDF
jaws-ug kansai-special_aurora_20150207
by
Toshiyuki Konparu
PDF
JAWS DAYS 2015 Deep Dive & Ace Amazon RDS for Aurora 大崎充博
by
充博 大崎
PDF
Logにまつわるエトセトラ
by
leverages_event
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
オンプレミスRDBMSをAWSへ移行する手法
by
Amazon Web Services Japan
AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...
by
Amazon Web Services Japan
Black Belt Online Seminar AWS Amazon RDS
by
Amazon Web Services Japan
AWS初心者向けWebinar RDBのAWSへの移行方法(Oracleを例に)
by
Amazon Web Services Japan
WS Black Belt Online Seminar 2016 RDBのAWSへの移行
by
Amazon Web Services Japan
[Aurora事例祭り]AWS Database Migration Service と Schema Conversion Tool の使いドコロ
by
Amazon Web Services Japan
Aurora
by
maruyama097
ついに解禁!Amazon Aurora徹底検証!
by
Terui Masashi
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
by
Terui Masashi
【ヒカラボ】RDS for MySQL → Aurora
by
Yuki Kanazawa
【JAWS DAYS 2016】ランサーズを支えるAurora
by
Yuki Kanazawa
Amazon Aurora
by
Shinpei Ohtani
jaws-ug kansai-special_aurora_20150207
by
Toshiyuki Konparu
JAWS DAYS 2015 Deep Dive & Ace Amazon RDS for Aurora 大崎充博
by
充博 大崎
Logにまつわるエトセトラ
by
leverages_event
Similar to Zaim 500万ユーザに向けて〜Aurora 編〜
PDF
Amazon Aurora - Auroraの止まらない進化とその中身
by
Amazon Web Services Japan
PDF
AWS Black Belt Online Seminar 2017 Amazon Aurora
by
Amazon Web Services Japan
PPTX
Oracleからamazon auroraへの移行にむけて
by
Yoichi Sai
KEY
activerecord-turntable
by
Drecom Co., Ltd.
PDF
Zaim 500万ユーザに向けて
by
Wataru Nishimoto
PDF
AWSのデータベースサービス全体像
by
Amazon Web Services Japan
PDF
Amazon Aurora 最新アップデートと日本のお客様の移行事例
by
Amazon Web Services Japan
PDF
20160705 ふたつのAuroraクラスタを同期した話
by
Wataru Nishimoto
PDF
MySQL→Aurora移行セミナー
by
真吾 吉田
PDF
AWSデータベースアップデート2017
by
Amazon Web Services Japan
PPTX
Apuri she ji_gaido_d_bmentenansushe_ji__v1.0
by
Kaito Tonooka
PDF
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
by
decode2016
PPTX
Apuri she ji_gaido_teburushe_ji__v1.0
by
Kaito Tonooka
Amazon Aurora - Auroraの止まらない進化とその中身
by
Amazon Web Services Japan
AWS Black Belt Online Seminar 2017 Amazon Aurora
by
Amazon Web Services Japan
Oracleからamazon auroraへの移行にむけて
by
Yoichi Sai
activerecord-turntable
by
Drecom Co., Ltd.
Zaim 500万ユーザに向けて
by
Wataru Nishimoto
AWSのデータベースサービス全体像
by
Amazon Web Services Japan
Amazon Aurora 最新アップデートと日本のお客様の移行事例
by
Amazon Web Services Japan
20160705 ふたつのAuroraクラスタを同期した話
by
Wataru Nishimoto
MySQL→Aurora移行セミナー
by
真吾 吉田
AWSデータベースアップデート2017
by
Amazon Web Services Japan
Apuri she ji_gaido_d_bmentenansushe_ji__v1.0
by
Kaito Tonooka
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
by
decode2016
Apuri she ji_gaido_teburushe_ji__v1.0
by
Kaito Tonooka
Zaim 500万ユーザに向けて〜Aurora 編〜
1.
家計簿サービス 株式会社 Zaim 西本 航 500万ユーザに向けて Aurora編
2.
© 2016 Zaim
Inc. All rights reserved. 自己紹介 2 エンジニア iOS Web インフラ 株式会社 Zaim 西本航 (@watura)
3.
© 2016 Zaim
Inc. All rights reserved. 家計簿サービス 「Zaim」 3 クチコミで普及した国内最大級のオンライン家計簿 もうすぐ500万ダウンロード!!
4.
info@zaim.net 一緒に働く仲間を募集中! https://www.wantedly.com/companies/Zaim
5.
© 2016 Zaim
Inc. All rights reserved. 目次 5 •DB構成 •パーティション? •危機到来 •DB分割 •Aurora移行 •発生した障害 しっかりとしたログがあったらよかったんですが,今回はそこまで気が回らなかった のでありません
6.
© 2016 Zaim
Inc. All rights reserved. DB構成 6 •おもに Amazon RDS for MySQL を利用 •user_id の Range でパーティションを設定 •家計簿情報はユーザごとで,他ユーザと交わらない •対象DB: •XXX億のレコード数 •膨大なI/O •日々増大するレコード
7.
© 2016 Zaim
Inc. All rights reserved. パーティション? 7 •データを特定のルールに従って格納すること •userごとのデータを取得するとき早くなる 0から10 11から20 21から30 31から40 41から50 user_idが user_id が 10 のデータ user_id が 15 のデータ user_id が 44のデータ
8.
© 2016 Zaim
Inc. All rights reserved. パーティション? 8 •データを特定のルールに従って格納すること •userごとのデータを取得するとき早くなる → user_id = 51のデータは??? 0から10 11から20 21から30 31から40 41から50 user_idが user_id が 10 のデータ user_id が 15 のデータ user_id が 44のデータ
9.
© 2016 Zaim
Inc. All rights reserved. パーティション? 9 •データを特定のルールに従って格納すること •userごとのデータを取得するとき早くなる → user_id = 51のデータは??? → エラー! 0から10 11から20 21から30 31から40 41から50 user_idが user_id が 10 のデータ user_id が 15 のデータ user_id が 44のデータ
10.
© 2016 Zaim
Inc. All rights reserved. 最大ユーザ数危機 10 ダウンロード数が400万を超えている パーティションの最大値を500万としている
11.
© 2016 Zaim
Inc. All rights reserved. 最大ユーザ数危機 11 ダウンロード数が400万を超えている パーティションの最大値を500万としている Zaimを使えないユーザが出てきてしまう危機 過負荷,容量不足などとは違う洒落にならない危機 まさかこれほどユーザが増えるとは
12.
© 2016 Zaim
Inc. All rights reserved. alter tableすればいいじゃない 12 目的:パーティションを1000万ユーザまでにする 利用:pt-online-schema-change テスト環境:(他にI/Oがない環境) •何の問題もなく成功 テスト環境その2:(本番さながらなI/Oを用意) •すごい勢いでデッドロックが発生 •失敗した 少ない知恵を絞って色々試したが全て失敗した
13.
© 2016 Zaim
Inc. All rights reserved. 迫り来る危機 13 一回の試行に数時間はかかる レコード数は刻一刻と増える
14.
© 2016 Zaim
Inc. All rights reserved. 迫り来る危機 14 一回の試行に数時間はかかる レコード数は刻一刻と増える 負荷は時間が経てば経つほど増える! 本当はやりたくないけど, サービス停止メンテナンスをするしかない
15.
© 2016 Zaim
Inc. All rights reserved. DB分割 開き直って! 15 •せっかく停止するんだから普段できないことを! •DBが大きすぎるのが悪い → シャーディング •シャーディング: DBの分割 今回やることは •1つのDBを5つに分割 (mod(user_id, 5)) •auto_increment_offset auto_increment_increment, •サービス側が適切に接続するように設定 簡単だ!
16.
© 2016 Zaim
Inc. All rights reserved. 長い長い前置きが終わってAurora 16 •10月頭 試行錯誤してメンテするか! •そういえば re: Invent がある.ちょっと待とう
17.
© 2016 Zaim
Inc. All rights reserved. 長い長い前置きが終わってAurora 17 •10月頭 試行錯誤してメンテするか! •そういえば re: Invent がある.ちょっと待とう •10月7日http://aws.typepad.com/aws_japan/2015/10/amazon-aurora-is-available-in-tokyo.html •AuroraがTokyo Regionでも使えるだと!!
18.
© 2016 Zaim
Inc. All rights reserved. Auroraいっちゃう? 18 •せっかく停止するんだから普段できないことを! •部分的にAuroraにしてみる? •ストレージが勝手にスケールするの嬉しい •性能いいんだ? •やるしかない! •調査 •国内で大きなところが移行してないかなぁ •安定動作するの? →Tokyoリージョン出た当初,あんまり情報がなかった •テーブルにアクセスできなくなることがあった •alter tableを途中でキャンセルした時?
19.
© 2016 Zaim
Inc. All rights reserved. 移行手順 19 • 調査もそこそこに時間もないのでAuroraにする •シャーディング 5台 → やっぱりしない •やりたいことはパーティションを1000万にすること! •手順はほとんど↓を参考に 「わずかなダウンタイムでの Amazon RDS MySQL または MariaDB DB インスタンスへのデータのインポート」 • http://amzn.to/1PwbLoa •いきなりはAurora信用しきれない •MySQL+Auroraとして動かしてみる
20.
© 2016 Zaim
Inc. All rights reserved. やったこと - 登場DB - 20 •元DB(A) •(A)のMySQLレプリカ(B) •(B)をもとに作ったMySQLインスタンス(C) •(C)のSnapshotで作ったAuroraレプリカ(D) (A) (B) (C) (D) レプリカ レプリカ Aurora アイコンサイズに意味はありません
21.
© 2016 Zaim
Inc. All rights reserved. やったこと(1) 21 •(A)のRead Replica(B)を作る •同期できたら(B)のReplicationをストップする •(B)からデータをdumpする •元DB(A) •(A)のmysqlレプリカ(B) •(B)をもとに作ったmysqlインスタンス(C) •(C)のSnapshotで作ったAuroraレプリカ(D) (A) (B) Dump Replicate dump
22.
© 2016 Zaim
Inc. All rights reserved. やったこと(2) 22 •(C)を作成する •(C)にパーティションを1000万までにしたス キーマを適用する •(B)からdumpしたデータを(C)にinsertする (C) •元DB(A) •(A)のmysqlレプリカ(B) •(B)をもとに作ったmysqlインスタンス(C) •(C)のSnapshotで作ったAuroraレプリカ(D) Dump Schema replicaをalter partitionするよりこちらの方が早かった
23.
© 2016 Zaim
Inc. All rights reserved. やったこと(3) 23 •(C)のSnapshotからAuroraDB(D)を作る •(D)に不要なテーブルをBlackholeEngineにする •(D)をCのRead Replicaにする (C) •元DB(A) •(A)のmysqlレプリカ(B) •(B)をもとに作ったmysqlインスタンス(C) •(C)のSnapshotで作ったAuroraレプリカ(D) (D) Aurora Read Replica
24.
© 2016 Zaim
Inc. All rights reserved. やったこと(4) 24 •(C)を(A)のRead Replicaにする (C) •元DB(A) •(A)のmysqlレプリカ(B) •(B)をもとに作ったmysqlインスタンス(C) •(C)のSnapshotで作ったAuroraレプリカ(D) (D) Aurora Read Replica (A) Read Replica Access
25.
© 2016 Zaim
Inc. All rights reserved. やったこと(5) 25 •サービス停止メンテ •アプリ, サービスが(C)に接続するようにする •(C)のReplicationをストップする •一回目メンテ終了 (C) •元DB(A) •(A)のmysqlレプリカ(B) •(B)をもとに作ったmysqlインスタンス(C) •(C)のSnapshotで作ったAuroraレプリカ(D) (D) Aurora Read Replica Access (A)
26.
© 2016 Zaim
Inc. All rights reserved. やったこと(6) 26 •停止メンテ2回目 •(D)のReplicationをやめる •条件によって接続先を変更する (C) (D) Aurora Access •元DB(A) •(A)のmysqlレプリカ(B) •(B)をもとに作ったmysqlインスタンス(C) •(C)のSnapshotで作ったAuroraレプリカ(D)
27.
© 2016 Zaim
Inc. All rights reserved. 使用感 27 •一つ小さいインスタンスにしてみた •CPU利用率60-80% •レスポンス,メモリ使用量は問題なし •突発的な高負荷が怖いのでインスタンスサイズUP →それでもCPU利用率はMySQL時より高い •Failover早い およそ1minで切り替わる •ほぼ障害に気付かれることなく切り替えられた •インスタンスサイズの変更がやりやすかった •テレビ露出にも耐えられた •CPU利用率80%以上まで上がったが問題なし
28.
© 2016 Zaim
Inc. All rights reserved. CPUの利用率 28 •リソースを最大限利用するように設計されている •MySQLと比較すると利用率が高い傾向がある •高い状態でもMySQLよりも性能が出る •もしくは,性能劣化が緩やかである •利用率が高い == あっぷあっぷ状態 ではない! •モニタを眺めた時に高利用率は心臓に良くない気 がするので大きめなインスタンスに
29.
© 2016 Zaim
Inc. All rights reserved. 発生した障害 29 •突然Auroraが劇重になる •Free Local Storageが枯渇 詳細にログを残しておいたらよかったんですが……
30.
© 2016 Zaim
Inc. All rights reserved. 突然Auroraが劇重になる 30 突然 •CPU使用率 100% •show processlist → unauthenticated user 大量発生 •クエリが詰まる •再起動すれば復活(特定のプロセスをkill すれば?) みたいな状態に移行直後からちょくちょくなった 原因調査 •general log, slow queryをDBに出力させた 原因 •重い (全探索に近い) Selectクエリ 対策 •クエリの最適化
31.
© 2016 Zaim
Inc. All rights reserved. Free Local Storageが枯渇 31 •突然Auroraが言う事を聞いてくれなくなる •SQLコマンドが効かない •show processlistも動かない •前ページのように再起動したら復活する?? →Auroraが再起動しない. 失敗している •原因解明よりも動くようにすることが先決 •リードレプリカを作成してみる •最新のデータを諦めてBackupから復元 •Backupに接続する準備している間に再起動完了
32.
© 2016 Zaim
Inc. All rights reserved. Free Local Storageが枯渇 32 •時間 •再起動: 40分 •レプリカ作成: 27分(再起動と同時?) •バックアップから復元 20分 •原因 •モニタを眺めているとFree Local Storageが枯渇 •「突然Auroraが劇重になる」の時にログをtable に書き出すようにしたままだったのが原因? •対策 •ログをtableに書き出すのをやめた •Free Local Storageを監視するようにした
33.
© 2016 Zaim
Inc. All rights reserved. Free Local Storage?? 33 •CloudWatchにある一要素 •モニタリングを表示した時には下の方にいる •各インスタンスサイズで固定? 知らない子, 誰なんでしょう??
34.
© 2016 Zaim
Inc. All rights reserved. 補足 Free Local Storage 34 •各インスタンス付属のインスタンスストレージ •tmpテーブル等一時的なテーブルデータを保存 •disk fullになると動作が不安定になってしまう •この問題をAurora開発チームは認識しており、 修正を行っている最中だそうです •「Aurora劇重」もこれが原因と考えられる 教えてもらいました
35.
© 2016 Zaim
Inc. All rights reserved. まとめ 35 •パーティションを1000万にしようと思っていた •最初はMySQLでシャーディング予定だった •実施直前にTokyo RegionにAurora登場 •やっぱりAuroraにする! •概ね問題なかったけど,ちょくちょく障害発生 •クエリの最適化不足 •人為的ミスによる障害 •以降は重大なエラーに遭遇していない気がする
36.
info@zaim.net 一緒に働く仲間を募集中! https://www.wantedly.com/companies/Zaim
37.
info@zaim.net ご静聴ありがとうございました
38.
info@zaim.net
39.
© 2016 Zaim
Inc. All rights reserved.39
Download