【レポート】Amazon RDS for Oracle/SQL Server への移行ベストプラクティス #AWSSummit

2019.06.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、崔です。
AWS Summit Tokyo 2019 3日目のB3-01のセッションである「Amazon RDS for Oracle/SQL Server への移行ベストプラクティス」のレポートをお届けします。

Oracle Database 11g R2、Microsoft SQL Server 2008 のサポート終了日が間近に迫っています。そこで、オンプレミスで使用しているこれらのバージョンから、バージョンアップを伴いながら RDS プラットフォームへ移行するためのベストプラクティスをご紹介します。

スピーカー

アマゾン ウェブ サービス ジャパン株式会社
技術統括本部
ソリューションアーキテクト 柴田 竜典 様

はじめに

RDS

6つのデータベースエンジンから選択できるRDBMS

  • 容易な管理
  • 高可用性と永続性
  • 高スケール
  • 高セキュア

既存DBをクラウドに移行するときの悩み

  • たくさんのシステムが1つのDBを共有しており、DBで密結合している
  • DBのダウンタイムを可能な限り短くしたい
  • 移行時のデータの漏れ/重複は許されない

DBが移行できないので、それを使うシステムがクラウドに移行できない

考えられる移行パス

  • Replatform
    • エンジンを変更せずプラットフォームのみ変更
    • 例えば、オンプレミスOracleをDBエンジンを変更せずにRDSに移行する
  • Refactor
    • エンジンもプラットフォームも変更(Amazon Auroraに変えるなど)
  • Refactor after Replatform
    • プラットフォーム変更後にエンジン変更

ReplatformとRefactorの比較

  • Replatform
    • 移行しやすい(短期的なメリット)
    • ライセンスコストがかかる(長期的なデメリット)
  • Refactor
    • 移行コストがかかる(短期的なデメリット)
    • ライセンスコストがかからない(長期的なメリット)

商用RDBMSのサポート期間

データベースバージョンとExtended Support終了

  • Oracle Database 11.2 - 2020/12
  • Oracle Database 12.1 - 2021/07
  • Oracle Database 12.2 - 2026/03
  • SQL Server 2008 - 2019/07
  • SQL Server 2012 - 2022/07
  • SQL Server 2014 - 2024/07

SQL Server 2008はあと1ヶ月でサポート終了
Oracle Database 11.2 12.1は、2年以内にサポート終了

どのような手段で移行するか

移行手段の選択フローチャート

  • 十分な停止時間を取れる場合、
    • ソースとターゲットが同一エンジンかどうか(時間がとれる場合)
      • ダンプツール(同一の場合)
      • CSVアンロード (同一でない場合)
    • ソースとターゲットが同一エンジンかどうか(時間がとれない場合)
      • DB純正のレプリケーションが組めるかどうかで
      • レプリケーションを使う
      • AWS DMSを使う

今日は、ダンプツールとレプリケーションについて、話す

オンプレOracleからの移行方式

十分なダウンタイムが取れる場合

Oracle Data Pumpを使用する

  • ソースDB:expdpコマンドでDumpファイルを出力
  • ダンプファイルをS3にコピー
  • ターゲットDB:rdsadmin_s3_tasks.download_from_s3プロシージャを利用してS3からダンプファイルをダウンロード
  • ターゲットDB:DBMS_DATAPUMPでデータをインポート

十分なダウンタイムが取れない場合

マテリアライズド・ビューを使用した方法

  • ターゲットDB:RDSからオンプレミスに向けてDBリンクを作成
    • create database link xxxx connect to xxxx idenrtified by xxx
  • ソースDB:高速リフレッシュのため、マテリアライズド・ビューログを作成
    • create materialized view log on xxxxx;
  • ターゲットDB:オンプレミスを元表としてマテリアライズド・ビュー作成
    • create materialized view xxxx build immediate refresh fast as select * from xxx.xxxxxx@xxxxxx;
  • ターゲットDB:マテリアライズド・ビューをリフレッシュ
    • exec dbms_mv.refresh('xxxxx','f');
  • ターゲットDB:マテリアライズド・ビューを実表に変換
    • drop materialize view xxxxx preserve table;

オンプレSQL Serverからの移行方式

十分なダウンタイムがとれる場合

.bakファイルによる移行

  • .bakファイル取得
  • S3コピー
  • プロシージャを実行して復元

十分なダウンタイムがとれない場合

レプリケーションによる移行

  • オンプレをパブリッシャーとして構成
    • Publication
    • 差分の場合は、transactional を選択
    • create snapshot immediately
  • RDSをサブスクライバとして構成
    • Subscription
    • Agentにソース側の情報
  • レプリケーション開始
  • オンプレ書き込み停止
  • RDSを確認
  • アプリをRDSに接続

まとめ

Refactor(DBエンジン変更)のためのスケジュールが確保出来ない場合、Replatform(プラットフォームのみ変更)も検討
同一エンジン移行の場合、DBエンジン付属ツールや機能だけで移行できる
データベースリンク+マテリアライズド・ビューやレプリケーションを使用すれば、アップデートを伴いながら、ニアゼロダウンタイムで漏れ/重複なく、段階的に移行できる

感想

オンプレミスOracleやSQL ServerからDBエンジンを変更せずにRDS for OracleやRDS for SQL Serverへ移行する際の方式が紹介されました。
移行にあたり、十分なダウンタイムを取れる場合は、DataPumpや.bakファイルを利用した移行が可能です。
十分なダウンタイムを取れない場合は、レプリケーションを利用した移行を検討しましょう。