【レポート】Amazon RDS for Oracle/SQL Server への移行ベストプラクティス #AWSSummit
こんにちは、崔です。
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ファイルを利用した移行が可能です。
十分なダウンタイムを取れない場合は、レプリケーションを利用した移行を検討しましょう。