[AWS] Database Migration Seminar 20191008
by
toru.kimura
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Page.1 ©IPG inc. All Rights Reserved. 株式会社IPG 開発部 TPMチーム兼ITチーム チームリーダー ⽊村徹 AWS DMSを活⽤した異種データベース間の 継続的レプリケーション
Slide 2
Slide 2 text
Page.2 ©IPG inc. All Rights Reserved. CHAPTER 0 / ⾃⼰紹介 ⽊村 徹 Toru Kimura • 株式会社IPG • 2006年からIPGに参画 • Technical Program Manager • 番組情報基幹システム(minds)および機械学習 プロジェクトの開発チームリーダー • ⾮エンジニア
Slide 3
Slide 3 text
Page.3 ©IPG inc. All Rights Reserved. CHAPTER 0 / アジェンダ AGENDA 1. IPGについて 2. AWS DMSを選んだ理由 3. AWS DMSを使ってみる 4. AWS DMSを導⼊する 5. まとめ 6. 今後の改善 ※ AWS Database Migration Service 以降資料上では、AWS DMS、DMSと略させて頂きます。
Slide 4
Slide 4 text
Page.4 ©IPG inc. All Rights Reserved. CHAPTER 1 IPGについて
Slide 5
Slide 5 text
Page.5 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて Gガイド受信機(TV/レコーダー/セットトップBOX) 放送型Gガイド AD シンジケーテッドGガイド メーカー スマホ/タブレット向け対応アプリ 3キャリア標準プリイン 通信型Gガイド 株式会社IPG 設⽴:1999年4⽉22⽇ 主要株主:電通、TiVo Corporation、東京ニュース通信社 電⼦番組表(EPG)サービス「Gガイド」のサービス企画、開発、運⽤
Slide 6
Slide 6 text
Page.6 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて ⾒る・聴く・楽しむコンテンツと⼈々との最適な コミュニケーションを担うインフラになる
Slide 7
Slide 7 text
Page.7 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて mindsの仕組み minds ウェブ モバイル テレビ コンテンツ 全国放送局 番組情報
Slide 8
Slide 8 text
Page.8 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて mindsで取り扱うデータ 番組情報 250,000 番組/⽇ 放送局 200 局 1,000 ch プラットフォーマー 10 社 バッチプログラム 40 本 オペレーションUI 10 本 APIサービス 40 本 テレビ 56,000,000 台 モバイル 2,000,000 MAU ウェブサービス 140,000,000 PV
Slide 9
Slide 9 text
Page.9 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて minds構成図 • データベースエンジンには、Oracleを 採⽤ • システム連携、ユーザ⼊⼒など、⼊り 組んだ構成となっている • オンプレの構成そのままAWS化
Slide 10
Slide 10 text
Page.10 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて 1. システムが密結合となっていて変更に対 する影響範囲が⼤きい 2. 社内にOracleに精通しているエンジニア が少ない 現状の課題
Slide 11
Slide 11 text
Page.11 ©IPG inc. All Rights Reserved. CHAPTER 2 AWS DMSを選んだ理由
Slide 12
Slide 12 text
Page.12 ©IPG inc. All Rights Reserved. CHAPTER 2 / AWS DMSを選んだ理由 1. トライ&エラーのできる新たな環境 2. Oracleからの脱却 3. 既存のシステムは、安定的に維持 要件の整理
Slide 13
Slide 13 text
Page.13 ©IPG inc. All Rights Reserved. • 同種のデータベース間での移⾏ • データベースの異種間移⾏ • 開発とテスト • データベースの統合 • 継続的なデータレプリケーション DMSとの出会い DMS活⽤にあたってのポイント CHAPTER 2 / AWS DMSを選んだ理由
Slide 14
Slide 14 text
Page.14 ©IPG inc. All Rights Reserved. CHAPTER 3 AWS DMSを使ってみる
Slide 15
Slide 15 text
Page.15 ©IPG inc. All Rights Reserved. • AWS Summitへの参加 • ソリューションアーキテクトへの構成相談 • ハンズオンの活⽤ • AWS Cloud Formation を使って環境を⾃動⽣成 • AWS Schema Conversion Tool(SCT)を使ったスキーマ変換 • DMSのセットアップと実⾏ Ø AWS アカウントを持っていれば1時間程度で習得可能 DMSの理解を深める AWSイベントの活⽤ CHAPTER 3 / AWS DMSを使ってみる
Slide 16
Slide 16 text
Page.16 ©IPG inc. All Rights Reserved. CHAPTER 3 / AWS DMSを使ってみる ターゲットデータベースを決める AWS Schema Conversion Toolによる検証 • Oracle からの移⾏先として、 機能互換性の観点から⼀般的には PostgreSQL が選ばれるケースが 多い • ⼀⽅で、社内でよく利⽤していた デー タベースエンジン は、MySQL • 移⾏対象の Oracle データベースを AWS Schema Conversion Tool (SCT) でチェック • それぞれのエンジンの互換性を確認
Slide 17
Slide 17 text
Page.17 ©IPG inc. All Rights Reserved. ステージングシステムで試してみたところ、以下の問題が顕在化しました。 A) フルロード時にソースデータベース(Oracle) の負荷が上がること で業務影響が発⽣ B) フルロードが、10時間を経過しても終わらない CHAPTER 3 / AWS DMSを使ってみる 実際に試す ステージング環境を使って、DMSを実施
Slide 18
Slide 18 text
Page.18 ©IPG inc. All Rights Reserved. CHAPTER 3 / AWS DMSを使ってみる A) フルロード時にソースデータベース(Oracle) の負荷が上がることで業務影 響が発⽣ Ø 原因として、ソースデータベースの Read Throughput が上がったことで、 Network 帯域の上限に達し影響を及ぼしたことが判明 B) フルロードが、10時間を経過しても終わらない Ø 原因としては、以下の3点が影響していることが判明 I. テーブルマッピングを明⽰的に指定しなかったため、テンポラリのテーブルなども⾃動 で作成されターゲットテーブルでエラーになっていた II. AWS SCTで⾃動作成されるスキーマは、外部キーやインデックスが設定されたままのた め、フルロードの⻑時間化を引き起こしていた III. ターゲットデータベースのインスタンスサイズが、⼩さかったため書き込みにかかる処 理速度に影響を与えた
Slide 19
Slide 19 text
Page.19 ©IPG inc. All Rights Reserved. ステージングで問題が顕在化したことで、改めて以下整理の上、導⼊構成の検討 1. 既存の Oracle 環境は、システム停⽌や構成変更が容易には⾏えないため、Oracle 環境 には最低限の影響で実⾏ができる必要がある 2. フルロードの時間が短くすることは、障害復旧におけるRTO(Recovery Time Objective)を短くし、サービスレベルを向上させる 3. インフラは、ダブルコストになる。新しい環境は、できる限り最低限のインフラ構成 でランニングコストを抑える CHAPTER 3 / AWS DMSを使ってみる DMS導⼊にあたって 問題の整理
Slide 20
Slide 20 text
Page.20 ©IPG inc. All Rights Reserved. CHAPTER 4 AWS DMSを導⼊する
Slide 21
Slide 21 text
Page.21 ©IPG inc. All Rights Reserved. 1. 移⾏テーブルの明⽰化 2. ターゲットデータベースでの外部キーとインデック スの調整 3. ソース/レプリケーション/ターゲットのそれぞれの インスタンスサイズの調整 CHAPTER 4 / AWS DMSを導⼊する DMS導⼊にあたって アクションの決定
Slide 22
Slide 22 text
Page.22 ©IPG inc. All Rights Reserved. データ量調整 所要時間 無し 12 時間 有り 7 時間 CHAPTER 4 / AWS DMSを導⼊する アクション.1 移⾏テーブルの明⽰化 • ソースデータベースのデータ量としては、約 500 テーブル/ 約 15 億 ⾏のデー タが存在 • サービス利⽤に必要なテーブルを選別することで、約 160 テーブル/ 約 3.5 億 ⾏ に削減 • 移⾏タスクに設定する Mapping rule で、すべてのテーブルに対してルールを 作成し、各テーブルの “rule-action” に "include"(移⾏する) or "exclude" (移⾏しない) を明⽰的に設定 データ調整有/無時のフルロード時間
Slide 23
Slide 23 text
Page.23 ©IPG inc. All Rights Reserved. 実⾏⽅法 所要時間 インデックスを付けたままのフルロード 12時間 実⾏⽅法 所要時間 インデックスをすべて外してフルロード 5 時間 インデックスをすべてに付与(8プロセス並列) 13 時間 CHAPTER 4 / AWS DMSを導⼊する アクション.2 ターゲットデータベースでの外部キーとインデックスの調整 • フルロード時間を約半分以下に削減したが、フルロード後に外部キー制約及びイ ンデックスを付け直すための時間に、フルロードにかかる時間以上にかかった • 1テーブルあたりの⾏数が少ないケースでは有⽤かもしれない。 • 今回は外部キー制約及びインデックスを付けたままフルロードを実施
Slide 24
Slide 24 text
Page.24 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する アクション.3 ソース/レプリケーション/ターゲットのそれぞれの インスタンスサイズの調整 • フルロード時は、⼤きなインスタンスサイズでフルロードにか かる時間を短縮 • 差分適⽤であるCDC(Change Data Capture)では、必要最⼩ 限のインスタンスサイズで構成 ※ ただし、本番 Oracle環境のインスタンスの停⽌も構成変更もできない
Slide 25
Slide 25 text
Page.25 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ① フルロード専⽤インスタンスの⽴ち上げ ② フルロード専⽤インスタンスからフルロード ③ インスタンスサイズの変更 ④ CDCタスクの実⾏
Slide 26
Slide 26 text
Page.26 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ① 本番 Oracle から Snapshot を取得して フルロード専⽤ Oracleインスタンスと して復元 ü Snapshotの作成時刻を記録する(コンソールから確認) ü 復元したフルロード専⽤ Oracleインスタンスは、既存業務系に接続しない ü フルロード専⽤ oracleインスタンスのインスタンスサイズは⼤きなサイズ で復元する
Slide 27
Slide 27 text
Page.27 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ② フルロード専⽤ Oracle インスタンスをソースデータベースとしてフル ロードタスクを実⾏ ü レプリケーション/ターゲットデータベースインスタンスのインス タンスサイズは⼤きなサイズを選択する ü タスク設定の移⾏タイプ(Migration type)は、既存のデータを 移⾏する(Migrate existing data)を指定する
Slide 28
Slide 28 text
Page.28 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ③ フルロード完了後、インスタンスサイズの変更 ü フルロード専⽤ Oracle インスタンスは削除 ü レプリケーション/ターゲットデータベースインスタンスの インスタンスサイズをスケールダウン
Slide 29
Slide 29 text
Page.29 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ④ 本番 Oracle をソースデータベースとして、CDCタスクを実⾏ ü ①で取得したSnapshot作成時刻から、SCN(System Change Number)を割り出す ü CDC開始モード(CDC Start mode)に、ログシーケンス番号の指定 (Specify log sequence number)を選択し、 SCN をセットする ex) SELECT timestamp_to_scn(to_timestamp('16/04/2019 13:46:51','DD/MM/YYYY HH24:MI:SS')) as scn from dual; SCN ------------ 12345678
Slide 30
Slide 30 text
Page.30 ©IPG inc. All Rights Reserved. インスタンス サイズ 所要時間 ソースデータベース: レプリケーションインスタンス: ターゲットデータベース: large large large 7時間36分 ソースデータベース: レプリケーションインスタンス: ターゲットデータベース: 2xlarge 2xlarge 2xlarge 2時間30分 ソースデータベース: レプリケーションインスタンス: ターゲットデータベース: 4xlarge 4xlarge 4xlarge 1時間46分 CHAPTER 4 / AWS DMSを導⼊する 各インスタンスサイズとフルロード時間
Slide 31
Slide 31 text
Page.31 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する 継続的に運⾏する トラブルに強くするには? l ソースデータベース • REDOログのサイズ調整 • オンラインREDOログ ※ REDOログサイズの調整⽅法はこちら • アーカイブログ ※ アーカイブログ期間の調整⽅法はこちら l 監視メトリクス • DMSタスクログのエラー監視 • CDCレイテンシーソース • CDCレイテンシーターゲット • DMSタスクの稼働状態 l マルチAZ • 通常運⾏時は、ソース/レプリケーション/ターゲットを同ゾーンで運⾏ ex) aws dms describe-replication-tasks --filters "Name=replication-task-arn,Values=${taskarn}" --query "ReplicationTasks[0].{Status: Status}" { "Status": "running" }
Slide 32
Slide 32 text
Page.32 ©IPG inc. All Rights Reserved. CHAPTER 5 まとめ
Slide 33
Slide 33 text
Page.33 ©IPG inc. All Rights Reserved. ü 既存環境にフルロード時の負荷を与えない。 ü フルロード時に、インスタンスのリソースを多く取り、フル ロードタスクを短い時間で実⾏することで、RTOを短くする ü CDC時には、最低限のインスタンスサイズに変更することで、 ランニングコストを最⼩限に抑える CHAPTER 5 / まとめ まとめ
Slide 34
Slide 34 text
Page.34 ©IPG inc. All Rights Reserved. CHAPTER 5 / まとめ minds構成図
Slide 35
Slide 35 text
Page.35 ©IPG inc. All Rights Reserved. CHAPTER 6 改善に向けて
Slide 36
Slide 36 text
Page.36 ©IPG inc. All Rights Reserved. u CDCのスタートポイントが曖昧 Ø CDC の開始位置は SCN で指定することが可能です。 現状は Oracle データベースの Snapshot を取得したタイミングの SCN を特定することができません。 そのため、Snapshot の取得時間から、 SCN を特定しているのですが、 秒オーダーの精度なので、そのタイミングでの発⽣した更新の状態が 不定になり、データの消失やデータ重複が発⽣し得ます。 CHAPTER 6 / 今後の改善 改善ポイント
Slide 37
Slide 37 text
Page.37 ©IPG inc. All Rights Reserved. 募集職種 機械学習.アプリ.インフラ. etc… わたしたちが求める⼈材 • ⽣涯エンジニアを希望している⼈。 • 何事も「変化すること」を前提に、変化を受け⼊れ、柔 軟に物事を進める事ができる⼈。 • 常に新しい技術分野にチャレンジし、良い物はチームや 世間に広げたい⼈。 • ユーザーファーストで物事を思考している⼈。 • チームワークを⼤事にしている⼈。 • 効率化のために何でも⾃動化したくなる⼈。 気軽にオフィスに遊びに来てください! ご連絡はこちら(https://ipg.co.jp/recruit/)まで IPGでは、エンジニアを募集しています
Slide 38
Slide 38 text
Page.38 ©IPG inc. All Rights Reserved.