【AWS】【RDS】オンプレ Microsoft SQL Server を Amazon RDS for SQL Server に移行する際の問題点や知識やノウハウまとめ

データセンターなどにあるオンプレの Microsoft SQL Server を Amazon RDS for SQL Server に移行する際の問題点をまとめました。

 

 

オンプレ環境にある場合の問題点

 

 

Amazon RDS for SQL Server に移行した場合の制限事項

 

 

RDS をマルチ AZ 配置にする場合

マルチ AZ 配置にする場合、以下の機能により実装されます。

 

Always On とは

SQL Server の「高可用性」を実現する機能です。

データベースミラーリング(SQL Server ミラーリング)に変わる機能としてリリースされました。

「高可用性」とは「可用性」が高く、障害が発生してサービスが提供できなくなるような事態がない状態のことを言います。

Always On は、「Windows Server Failover Clustering(WSFC)、別名 Microsoft Failover Clustering(MSFC)」の上に乗っています。

 

 

移行方法

実際に移行するとなると、以下の 2 つの方法が考えられます。

 

 

SQL Server でバックアップを取得して RDS にリストアする場合

完全バックアップファイル(データベース名.bak)を利用して RDS にリストアできます。

RDS にリストアする場合は、一旦完全バックアップファイルを Amazon S3 に保存します。

 

完全バックアップフィル(データベース.bak)ファイルには、以下の情報を保存できます。

などすべてのデータベースオブジェクトが含まれます。

 

SQL Server Management Studio より取得できる RDS のバックアップ

SQL Server Management Studio より RDS へアクセスをして以下のようにバックアップを取得することができます。

 

取得したいデータベースを選択して右クリックし「タスク」「バックアップ」を選択します。

【AWS】【RDS】オンプレ Microsoft SQL Server を Amazon RDS for SQL Server に移行する際の問題点や知識やノウハウまとめ

 

 

 

 

下図のように「復旧モデル」「完全」になっています。

「バックアップの種類」「完全」「差分」「トランザクション ログ」の 3 種類から選択できます。

【AWS】【RDS】Amazon RDS for SQL Server インスタンス構築手順および動作確認手順

 

 

 

 

「master」データベースは下図のように復旧モデルが「単純」しかありません。

 

 

 

 

ストアドプロシージャ(STORED PROCEDURE)とは

ストアドプロシージャ(STORED PROCEDURE)とは、データベースに対する処理をまとめて 1 つのプログラムとし、RDBMS(リレーショナル・データベース・マネジメント・システム)に保存したものを言います。

SQL 文も 1 行だけでなく、複数行記述できるほか、SQL 文の結果に対する条件分岐や繰り返し処理も可能になるため、より複雑な処理が可能になります。

 

Microsoft SQL Server は Transact-SQL(T-SQL)という言語を使って記述します。

 

■AWS 公式サイトの「暗号化による完全バックアップ」の例

exec msdb.dbo.rds_backup_database  
        @source_db_name='database_name',  
        @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension', 
        @overwrite_S3_backup_file=1, 
        @type='differential';

 

 

ストアドプロシージャは下図のようにデータベース内にあります。

【SQL Server】Microsoft SQL Server の基本的な知識

 

 

 

 

RDS の場合は、下図のように「rds_backup_database」など、RDS に特化したプロシージャを保有しています。

【AWS】【RDS】オンプレ Microsoft SQL Server を Amazon RDS for SQL Server に移行する際の問題点や知識やノウハウまとめ

 

 

 

.bak ファイルを使用する際の制限事項

■1 TB を超えるサイズのデータベースのバックアップはサポート対象外

1 TB を超えるサイズのデータベースのバックアップはサポート対象外になります。

「不可能」ではなく「サポート対象外」ということなので、できるかもしれませんがサポートされないので自己責任となります。

 

■マルチ AZ DB インスタンスでは、完全復旧モデルのみリストア可能

マルチ AZ DB インスタンスでは、完全復旧モデルでバックアップされたデータベースのみリストア(復元)できます。

 

 

ネイティブバックアップとは?

AWS の公式サイトでよく使われる「ネイティブバックアップ」という用語ですが、オンプレの Microsoft SQL Server で取得されるバックアップのことを言います。

 

 

Amazon S3 バケットにアクセスできるロールが必要

RDS へリストア(復元)する際に、RDS から S3 へのアクセスが必要になります。

また、「ユーザー」「個人アカウント」という概念ではなく、RDS の「サービス」が S3 へアクセスするという考え方になります。

サービスの場合は「サービスロール」と言います。

 


    "Version": "2012-10-17", 
    "Statement": 
    [{ 
        "Effect": "Allow", 
        "Principal": {"Service":  "rds.amazonaws.com"}, 
        "Action": "sts:AssumeRole" 
    }] 

 

■sts:AssumeRole とは

 

AWS 公式サイトでは、「AWS Security Token Service (AWS STS) を使用して、AWS リソースへのアクセスをコントロールできる一時的セキュリティ認証情報を持つ、信頼されたユーザーを作成および提供することができます。」と記載があります。

 

 

Amazon RDS プロシージャ

RDS 上の SQL Server データベース(RDS for SQL Server)に接続し、以下の Amazon RDS プロシージャを呼び出して操作することができます。

接続するには「SQL Server Management Studio(SSMS)」を利用します。

 

以下のストアドプロシージャが利用できます。

 

 

rds_backup_database プロシージャ

■AWS 公式サイトの「暗号化による完全バックアップ」の例

exec msdb.dbo.rds_backup_database  
        @source_db_name='database_name',  
        @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension', 
        @overwrite_S3_backup_file=1, 
        @type='differential';

 

 

 

バックアップ(完全バックアップファイル)のリストア(復元)

リストアする場合は、RDS 上の SQL Server データベース(RDS for SQL Server)に接続し、上で解説した Amazon RDS プロシージャを呼び出してリストアします。

接続するには「SQL Server Management Studio(SSMS)」を利用します。

 

リストアする場合は「rds_restore_database」を呼び出してリストアします。

 

 

 

 

DMS(Database Migration Service)を利用する場合

DMS(Database Migration Service)を利用しても SQL Server を RDS へ移行することができます。

【AWS】【RDS】オンプレ Microsoft SQL Server を Amazon RDS for SQL Server に移行する際の問題点や知識やノウハウまとめ

 

 

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください