2017.06.02

【DMS】データベースの移行[RDS for Oracle → Aurora(MySQL)](DB環境構築編)

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

はじめに

みなさん、こんにちは。倉光です。AWSに関するブログを初めて書きますトップバッターに任命されました!

さて、記念すべき第1回目ですが、データベース関連の記事を投稿させていただきます。
オンプレミス・クラウドに限らず、システム移行で苦労することとして、データベースの移行があるかと思います。AWSではデータベースの移行支援サービスとして、Database Migration Service(以下、DMS)とクライアントツールのSchema Conversion Tool(以下、SCT)が提供されています。
今回、DMSの検証を実施する機会がありましたので、手順をまとめてみました。DMSを利用する際の参考になればと思います!

概要

DMS実施までのプロセス

今回は一番ベーシックであろうRDS to RDSでのDMSの検証を行いました。データベースはOracleからAurora(MySQL)です。 DMSの検証を実施するまでに以下のプロセスで実施しました。

 1.ソースデータベース(RDS for Oracle)の環境構築
 2.ターゲットデータベース(RDS for Aurora(MySQL))の環境構築
 3.SCTからのインストール・スキーマ移行の実施
 4.DMSで使用するレプリケーションインスタンスの構築及びタスクの実行

今回はデータベースの環境構築(1・2)について、話をさせていただきます!

環境構成について

今回は以下の環境構成で実施しました。

DMS環境構成図

パブリックサブネットにEC2を2台(OracleとAurora操作用の管理サーバー、SCT用の作業サーバー)を配置、プライベートサブネットにRDSを配置しています。
※SCT用の作業サーバーに管理サーバー機能を集約しても問題ありません。なお、管理サーバーのOSはAmazon Linux、作業サーバーはWindows Server2012 R2を使用しております。

サーバーの役割を分離させたかったので、私はサーバーをわけました。スキーマ移行が終了すれば、作業サーバーは停止もしくは削除します。

1.ソースデータベース(RDS for Oracle)の環境構築

では、実際の環境構築の設定について話を進めていきます!

事前準備

注)VPC、EC2・RDSのインスタンスは準備ができている前提で話を進めさせていただきます。


環境構築を行うにあたり、事前準備は2点あります。


①Oracle Client及びSQL*PLUSのダウンロード

※今回は管理用のEC2インスタンスからRDSに接続を行いますので、Oracle Client及びSQL*PLUSが必要になります。OTN(Oracle Techlogy Network) [リンク先は Linux x86-64版]よりダウンロードしておいてください。

 【対象ファイル】

  ◆Basicファイル

  ◆SQL*PLUSファイル

②EC2インスタンスへのアップロード

環境構築

ここからは管理用のEC2インスタンスでの操作になります。

①事前準備したファイルのインストール

$ rpm ivh [ダウンロードしたbasicファイル]
$ rpm ivh [ダウンロードしたsqlplusファイル]
Oracle Clinet Install Command

②LD_LIBRARY_PATHの設定

$ export LD_LIBRARY_PATH=/usr/lib/oracle/[Oracle Version]/client/lib
Setting LD_LABRARY_PATH

③SQL*PLUS接続

$ sqlplus64 [awsuser]/[mypassword]@"(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=[RDS Endpoint Name])(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=[Service Name])))"
Connect SQL*PLUS

④テーブル作成

sqlplus> CREATE TABLE [Table Name] (Column Define・・・);
Create Table SQL

⑤データの挿入(※たくさんのデータを処理したい方はSQLファイルで実行してもよいと思います。)

sqlplus> INSERT INTO [Table Name] (Column Define・・・) VALUES (Column Value・・・);
Insert Value SQL

Oracleサプリメンタルロギング(REDOログ)の有効化

DMSではタスク実行後、CloudWatchで結果を確認することができます。終了後、CloudWatchで確認をする為に、Oracleサプリメンタルロギング(REDOログ)を有効にする設定を行います。

sqlplus> exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
Setting Supplemental_Logging

補足(tnsnames.ora関連の環境設定)

SQL*PLUSコマンドの度に、接続情報を入れるのは手間かと思いますので、補足情報としてtnsnames.oraの設定方法を記載します。

①tnsnames.ora用のディレクトリ作成

$ mkdir -p ~/oracle/network/admin
Make Directory for tnsnames.ora

②tnsnames.oraファイルの作成

$ vi ~/oracle/network/admin/tnsnames.ora

##Connection of the Information
[Net_Service_Name]=
    (DESCRIPTION= 
         (ADDRESS=(PROTOCOL=tcp) 
         (HOST=RDS Endpoint Name) (PORT=1521)) 
         (CONNECT_DATA=(SERVICE_NAME=[Service Name])) 
     )
Create tnsnames.ora

③環境変数の設定

$ cd ~
$ vi .bashrc

##Add Oracle Environment Information 
 export TNS_ADMIN=~/oracle/network/admin 
 export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib
Add Oracle Environment Information

④.bashrcの変更の反映

$ source .bashrc
Apply Command

Oracleの環境設定は以上です!

2.ターゲットデータベース(RDS for Aurora[MySQL])の環境構築

続いて、Aurora(MySQL)の環境構築です。

事前準備

事前に必要なファイル等はありません。

環境構築

Oracleの設定と同じく、管理用のEC2での操作になります。

①yumの最新化

$ sudo yum upgrade
Yum Upgrade Command

②MySQL Clinetのインストール

$ sudo yum install mysql
MySQL Clinet Install Command

③MySQLの起動設定

 1.MySQLの起動
$ sudo service mysqld start
Setting Startup mysqld
 2.起動確認を行う
$ sudo service mysqld status
Check mysqld
 3.mysqldの自動起動設定
$ sudo chkconfig mysqld on
Auto Startup mysqld
④Auroraへログイン
$ sudo mysql -u [Master User Name] -p -h [RDS Endpoint Name]
Connect Aurora
Aurora(MySQL)に関しては、SCTを用いてスキーマごと移行する為、テーブル作成等は必要ありません。
以上で、OracleとAurora(MySQL)の設定が完了です!!

まとめ

できるだけ細かく手順化してみましたが、いかがでしたでしょうか。
オンプレミスではデータベースの環境構築に時間がかかっていましたが、クラウドではデータベースを簡単に構築することができます。
RDSはPaaSのサービスである為、OSレイヤー以下の設定を変更することはできませんが、細かいチューニングが不要な方であれば、RDSでデータベース環境構築することでかなり時間を削減できると思います。

次回は、SCTのインストール・設定及びDMSで使用するレプリケーションインスタンスの構築及びタスクの実行について、記事にします!!

最後までご覧いただき、ありがとうございました!!
64 件

関連する記事