2018.08.15

【DMS】データベースの移行[RDS for Oracle → Aurora(MySQL)](DMS実践編)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

はじめに

こんにちは、倉光です。

前回、DMS検証のDB環境構築について話をしてきましたが、今回は後半戦、いよいよDMSを使って移行を行います。

前回のおさらい

今回の構成は以下の図です。

  OracleとAurora(MySQL)のセットアップ方法については前回の記事をご確認ください。

DMS環境構成図

1.SCTからのインストール・スキーマ移行の実施

事前準備

SCTを実行するためには、JRE 8u45以上が必要となります。JREのインストーラーをダウンロードします。

  (※リンク先はJREのダウンロードサイトになります。Java SE Runtime Environment版を選択します)

SCTのインストール

では、SCTのインストールを行います。

1.Windows Serverにログインし、SCTのインストーラーをダウンロードします。

  ※リンク先はSCTのインストールサイトになります。Microsoft Windows版を選択します

  ※同サイトにて、Aurora(MySQL)およびOracleのデータベースドライバーも併せてダウンロードし、Windows Server上に配置してください。

   ◆Aurora(MySQL)データベースドライバー名:mysql-connector-java-5.1.41-bin.jar

   ◆Oracleデータベースドライバー名:ojdbc7.jar

2.インストーラーの実行

インストール合意画面

"Accept"を押下します。その後、インストーラーが起動し、インストールされます。
インストール後にプロジェクト作成のダイヤログが表示されますが、本記事では一度"取消"ボタンを押下し、一つひとつ設定を行います。

Oracle・Auroraへの接続設定

1.新規プロジェクトの作成
①左上の"File"タブより"New Project"を選択します。
②"Source DB"(Oracle)、"Target DB"(Aurora(MySQL))を選択します。。

Select DB

2.Oracleへの接続
①"Connect to Oracle"を選択します。

Connect to Oracle①

②下記情報を入力します。

  ◆Type:SID

  ◆Server name:RDS for Oracle Endpoint Name

  ◆Server port:1521

  ◆Oracle SID:Oracle SID(OracleのSID)

  ◆User name:Master User

  ◆Password:Master User Password

  ◆Use SSL:No Check

  ◆Oracle Driver Path:ojdbc.jarの配置場所

Connect to Oracle②

③入力が完了したら、"Test Connection"を押下し、接続が成功することを確認します。
④SCTの画面にOracleのスキーマ構成が表示すれば接続完了です。
3.Auroraの接続
①"Connect to Amazon Aurora(MySQL compatible)"を選択します。

Connect to Aurora①

②下記情報を入力します。

  ◆Server name:RDS for Aurora Endpoint Name

  ◆Server port:3306

  ◆User name:Master User

  ◆Password:Master User Password

  ◆MySQL Driver Path:mysql-connector-java-5.1.41-bin.jarの配置場所

Connect to Aurora②

③入力が完了したら、"Test Connection"を押下し、接続が成功することを確認します。
④SCTの画面にAuroraのスキーマ構成が表示すれば接続完了です。

OracleからAuroraへのスキーマの移行

1.OracleからAuroraに移行したいスキーマを選択します。(本記事では、"ORACLE_TEST"スキーマを移行します)
2.[Actions - Convert Schema]を選択します。

Convert Schema

3.SCTの画面にて、スキーマがAuroraに移行されていることを確認します。

Convert Schema Result

スキーマ移行は以上です。
スキーマが移行できているかどうかはAurora接続後、下記のコマンドを実行することで確認できます。
mysql> show databases;
mysql> use ORACLE_TEST;
mysql> desc TEST_TABLE;
show databases

2.DMSで使用するレプリケーションインスタンスの構築及びタスクの実行

①レプリケーションサブネットグループの作成

レプリケーションインスタンスを配置するサブネットを作成します。構成としては、マルチAZにします。

  ◆識別子:任意の名前

  ◆説明:任意の値(備考欄)

  ◆VPC:VPC ID

Repliaction Subnet Group

②レプリケーションインスタンスの作成

続いて、レプリケーションインスタンスを作成します。
1.[レプリケーションインスタンスの作成]を選択します。

2.下記情報を入力します。

  ◆名前:任意の名前

  ◆説明:任意の値(備考欄)

  ◆インスタンスクラス:インスタンスタイプ

  ◆VPCセキュリティグループ:VPCに該当するセキュリティグループ

  ◆マルチAZ:いいえ

  ◆パブリックアクセス:はい

  ◆割り当てられたストレージ:50GB

  ◆レプリケーションサブネットグループ:2-①で作成したレプリケーションサブネットグループ

  ◆アベイラビリティゾーン:ap-northeast-1a

  ◆VPCセキュリティグループ:レプリケーションインスタンスに使用するVPCセキュリティグループ

  ◆KMSマスターキー:事前に作成したKMS(私は事前に作成しましたが、"Default"を選択すれば自動的に作成してくれます。

Create Replication Instance①

Create Replication Instance②

③データベースエンドポイントの設定

次に、移行元と移行先のデータベースエンドポイントの設定を行います。
1.ソースDB(Oracle)の設定

  エンドポイントタイプ:Source

  ◆エンドポイント識別子:任意の名前

  ◆ソースエンジン:Oracle

  ◆サーバー名:OracleのエンドポイントDNS

  ◆ポート:1521

  ◆SSLモード:None

  ◆ユーザー名:マスターユーザー名

  ◆パスワード:マスターユーザーのパスワード

  ◆SID:Oracle SID

  ◆追加の接続属性:Null

  ◆KMSマスターキー:事前に作成したKMS(私は事前に作成しましたが、"Default"を選択すれば自動的に作成してくれます。

  ◆VPC:DBが属するVPC ID

  ◆レプリケーションインスタンス:2-②で作成したレプリケーションインスタンス

設定が完了しましたら、"テストの実行"ボタンをクリックし、接続確認を行っておきましょう。

※接続テストに失敗した際は、RDS for Oracle - レプリケーションインスタンス間のセキュリティグループが怪しい可能性があります。

Setting Source DB Endpoint

Setting Source DB Endpoint

2.ターゲットDB(Aurora)の設定

同様にターゲットDBとなるAuroraも設定します。

  ◆エンドポイントタイプ:Target

  ◆エンドポイント識別子:任意の名前

  ◆ソースエンジン:Aurora

  ◆サーバー名:AuroraのエンドポイントDNS

  ◆ポート:3306

  ◆SSLモード:None

  ◆ユーザー名:マスターユーザー名

  ◆パスワード:マスターユーザーのパスワード

  ◆追加の接続属性:Null

  ◆KMSマスターキー:事前に作成したKMS

  ◆VPC:DBが属するVPC ID

  ◆レプリケーションインスタンス:2-②で作成したレプリケーションインスタンス

Setting Target DB Endpoint

Setting Target DB Endpoint

タスクの設定

最後に移行タスクを作成します。

  ◆タスク名:任意の値

  ◆レプリケーションインスタンス:2-②で作成したレプリケーションインスタンス

  ◆ソースエンドポイント:Oracleのエンドポイント

  ◆ターゲットエンドポイント:Auroraのエンドポイント

  ◆移行タイプ:既存データを移行する

  ◆作成時にタスクを開始:No Check

  ◆ターゲットテーブル作成モード:TRUNCATE

  ◆レプリケーションにLOB列を含める:制限付きLOBモード(Default)

  ◆最大LOBサイズ:32(Default)

  ◆ロギングの有効化:Check

  ◆Schema name is:ORACLE_TEST

  ◆Table name is like:%(Default)

  ◆Action:Include

Task1

Task2

上記入力が完了したら、"開始/再開"ボタンを押下し、いよいよ実行します。

DMS Task

Result

スキーマの更新とCloudWatch上のログ出力でエラーが出ていなければ完了です。

Log

3.最後に

いかがでしたでしょうか。自分の力でDB移行をするとなるとかなりの労力が必要となりますが、SCTやDMSを利用することで軽減をすることが可能です。

ただし、今回はOracle特有の機能を利用しておりませんでしたが、実際にDBを移行する際は、何をどのように移行するのかを計画する段階が一番重要であると思います。

特に異なるエンジンに移行する際は、移行元と移行先のDBの特徴・アプリケーションSQLの違いなどを理解した上で対応する必要があります。DMSやSCTは移行において大きな助けとなりますが、すべてを賄えるわけではありません。
まずは小さなDB・アプリケーションから移行の検証をされることをおすすめします。


RDS for OracleからAuroraに関するAWS公式のドキュメントにて詳細がございますので、そちらもあわせてご確認いただければと思います。


最後までお読みいただき、ありがとうございました。

76 件

関連する記事