はじめに
みなさん、こんにちは。倉光です。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)について、話をさせていただきます!
環境構成について
パブリックサブネットに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ファイル]
②LD_LIBRARY_PATHの設定
$ export LD_LIBRARY_PATH=/usr/lib/oracle/[Oracle Version]/client/lib
③SQL*PLUS接続
$ sqlplus64 [awsuser]/[mypassword]@"(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=[RDS Endpoint Name])(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=[Service Name])))"
④テーブル作成
sqlplus> CREATE TABLE [Table Name] (Column Define・・・);
⑤データの挿入(※たくさんのデータを処理したい方はSQLファイルで実行してもよいと思います。)
sqlplus> INSERT INTO [Table Name] (Column Define・・・) VALUES (Column Value・・・);
Oracleサプリメンタルロギング(REDOログ)の有効化
DMSではタスク実行後、CloudWatchで結果を確認することができます。終了後、CloudWatchで確認をする為に、Oracleサプリメンタルロギング(REDOログ)を有効にする設定を行います。
sqlplus> exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
補足(tnsnames.ora関連の環境設定)
SQL*PLUSコマンドの度に、接続情報を入れるのは手間かと思いますので、補足情報としてtnsnames.oraの設定方法を記載します。
①tnsnames.ora用のディレクトリ作成
$ mkdir -p ~/oracle/network/admin
②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])) )
③環境変数の設定
$ cd ~ $ vi .bashrc ##Add Oracle Environment Information export TNS_ADMIN=~/oracle/network/admin export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib
④.bashrcの変更の反映
$ source .bashrc
Oracleの環境設定は以上です!
2.ターゲットデータベース(RDS for Aurora[MySQL])の環境構築
続いて、Aurora(MySQL)の環境構築です。
事前準備
事前に必要なファイル等はありません。
環境構築
Oracleの設定と同じく、管理用のEC2での操作になります。
①yumの最新化
$ sudo yum upgrade
②MySQL Clinetのインストール
$ sudo yum install mysql
③MySQLの起動設定
1.MySQLの起動
$ sudo service mysqld start
2.起動確認を行う
$ sudo service mysqld status
3.mysqldの自動起動設定
$ sudo chkconfig mysqld on
$ sudo mysql -u [Master User Name] -p -h [RDS Endpoint Name]
まとめ
オンプレミスではデータベースの環境構築に時間がかかっていましたが、クラウドではデータベースを簡単に構築することができます。
RDSはPaaSのサービスである為、OSレイヤー以下の設定を変更することはできませんが、細かいチューニングが不要な方であれば、RDSでデータベース環境構築することでかなり時間を削減できると思います。
次回は、SCTのインストール・設定及びDMSで使用するレプリケーションインスタンスの構築及びタスクの実行について、記事にします!!
最後までご覧いただき、ありがとうございました!!