データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

SQLServerデータベースをAWSRDSインスタンスに移行します

このブログでは、オンプレミス(またはAmazon®EC2またはAzure®)でホストされているMicrosoft®SQLServer®データベースをAmazon Relational DatabaseService(RDS)に移動する方法について説明します。この移動には、SQLデータベースをAWS S3bucketにバックアップし、そのS3バケットからAWSRDSインスタンスのデータベースを復元する必要があります。

はじめに

以前のバージョンのAmazonRDSインスタンスでは、 .bakからデータを復元できませんでした ファイル。その結果、ユーザーはAmazon Data Migration Servicesを使用するか、インポートとエクスポートを使用する必要がありました。 AWSRDSとの間でデータを移動するウィザード。

Amazonは2016年7月にネイティブバックアップ復元のサポートを開始し、RDSのMSDBデータベースに次のストアドプロシージャを追加しました:

  • rds_backup_database –単一のデータベースをS3バケットにバックアップします。
  • rds_restore_database –S3から単一のデータベースを復元します。
  • rds_task_status –実行中のバックアップと復元のタスクを追跡します。
  • rds_cancel_task –実行中のバックアップまたは復元タスクをキャンセルします。

このブログでは、 rds_restore_databaseを活用する方法について説明しています。 .bakを復元する手順 S3からのファイルとrds_task_statusの使用方法 AWSS3syncコマンドを使用してバックアップファイルをAWSS3バケットにアップロードしている間に復元の進行状況を監視する手順。

前提条件

移行を実行するには、次の前提条件が必要です。

  • SQLServerエージェントプロキシ
  • AWSコマンドラインインターフェース(AWS CLI)
  • ProfileName(AmazonS3およびaws_access_key_idを含むS3バケットにアクセスできるAWSユーザー およびaws_secret_access_key 。)
  • SQLSERVER_BACKUP_RESTOREを持つ適切なオプショングループを持つAWSRDSインスタンス それにマップされたオプション。
  • PowerShellのインストール

また、SQL Server、S3バケットの作成、AWSユーザーの作成、S3バケットへのアクセスの許可、およびRDSインスタンスの作成に関する基本的な知識も必要です。

ソリューション

次の手順では、次のセクションの解決策について説明します。

  1. ローカルサーバー上のデータベースをバックアップします。

  2. バックアップファイルをAWSS3バケットにコピーします。

  3. S3バケットからRDSのSQLバックアップを復元します。

ローカルサーバー上のデータベースをバックアップします

任意の方法を使用して、ローカルでバックアップを作成できます。次の例では、 .batを使用しています 移行タスクをスケジュールする必要がある場合に備えて、他のSQLエージェントジョブと同じように使用できるsqlcmdコマンドを使用したスクリプト:

Sqlcmd -S SourceInstanceName -U sa -P password_here -Q
"Declare @DBName nvarchar(200)='MigrationTestDB'
DECLARE @BackupLocation NVARCHAR(2000) = 'C:\Temp\RDSmigration\backup\'+@DBName+
+ REPLACE(CONVERT(VARCHAR(20), GETDATE(), 120) + '.bak', ':', '');
BACKUP DATABASE @DBName TO DISK = @BackupLocation with compression;"
バックアップファイルをコピーしてAWSS3バケットにアップロードします

これは、AWS S3 copyを使用して行うことができます またはAWS S3 sync コマンド。ただし、syncコマンドは非常に人気があり、業界で広く使用されているため、次の例で使用します。

デフォルトでは、AWSsyncコマンドはファイルを削除しません。新しいファイルまたは変更されたファイルを宛先にコピーするだけです。次のPowerShellスクリプトをSQLエージェントジョブで使用できます。 cmdExecを実行するように構成されたSQLエージェントプロキシアカウントを使用して、バックアップとこのコピー手順の両方を実行する必要があります。 およびPowerShellサブシステム。

$LogDate = Get-Date -Format yyyy-MM-dd
$Global:LogFile = "C:\Temp\RDSmigration\Logs\$LogDate.log"

$env:Path += ';C:\Program Files\Amazon\AWSCLI\bin'

Set-AWSCredential -ProfileName backuptos3user
aws configure set aws_access_key_id AKIAVIH6FYWVO62BZ7QA
aws configure set aws_secret_access_key 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
aws configure set region ap-south-1

try
{
   $now = (Get-Date -Format G)
   aws s3 sync C:\Temp\RDSmigration\backup s3:// ramkrdsrestore --sse | out-file $LogFile
}
catch {
   Write-Host $_.Exception.Message -ForegroundColor Green
}

S3バケットからRDSにSQLバックアップを復元する

次のコマンドを実行して、 MigrationTestDB2019-08-15 181640.bakを復元します。 MigrationTestDBとしてファイル データベース:

EXEC msdb.dbo.rds_restore_database
   @restore_db_name = 'MigrationTestDB',
   @S3_arn_to_restore_from = 'arn:aws:s3:::ramkrdsrestore/MigrationTestDB2019-08-15 181640.bak'
SQLServerデータベースをAWSRDSインスタンスに移行します

ストアドプロシージャに提供されるパラメータに注意してください。次のパラメータを指定する必要があります:

  • 復元するデータベースの名前。
  • バックアップファイルのAmazonリソース名(ARN)。 S3オブジェクトの場合、ARNはここに示されている形式に従います。

SQL Serverは復元タスクを開始し、それに TaskIDを割り当てます。 。次のコマンドを使用して、タスクのステータスを簡単に追跡できます。

EXEC  msdb.[dbo].[rds_task_status]  @db_name ='DestinationDBName'

TaskIDを使用できます @db_nameの代わりに進行状況を追跡する 。

SQLServerデータベースをAWSRDSインスタンスに移行します

次の懸念事項に注意してください。

  • バケットバックアップファイル名は、 rds_restore_databaseでは大文字と小文字が区別されます 手順。
  • オプショングループで使用されるIAMロールは、S3バケットにアクセスできます。
  • S3バケットポリシーは、IAMの役割を除外することを制限するものではありません。
  • RDS SQLインスタンスは、バックアップ/復元オプションを追加した正しいオプショングループを使用します。この設定は重要です。これがないと、復元は開始されません。

AmazonRDSでのSQLServerネイティブバックアップと復元の制限

以下は、AmazonRDSでのSQLServerネイティブバックアップと復元のいくつかの制限です。

  • 差分、トランザクションログ、ファイルグループのバックアップ、または復元はできません。これは、データ回復の妨げにはなりません。 Amazon RDSを使用すると、スケジュールされたインスタンススナップショットを作成でき、それらのスナップショットは35日間のローリングの間アクセス可能に保たれます。過去35日間の指定された時間から5分以内にインスタンスを復元できます。
  • KMSで暗号化されたバックアップをS3からオンプレミスに復元することはできません。
  • 同じRDSインスタンスでデータベースを復元することはできません。
  • 表形式データ暗号化(TDE)対応データベースのバックアップを復元することはできません。
  • ターゲットRDSインスタンスにはS3バケットへのアクセスが必要です。
  • RDS SQL Serverのネイティブバックアップおよび復元コマンドを実行しているユーザーアカウントには、適切な権限が必要です。
結論

このブログでは、クラウドの宛先でデータベースをバックアップし、AWSRDSインスタンスでデータベースを復元する方法を紹介しました。 RDSインスタンスは、ドライブまたはサーバーへのアクセスを提供しません。重要なのは、バックアップファイルをAWS S3bucketに転送し、そこから復元することです。

この記事のもう1つの使用例は、SQLバックアップをAWSS3に直接保存することです。これにより、データの可用性、セキュリティ、パフォーマンスが強化されます。AmazonS3は、99.999999999%(11 9秒)の耐久性を実現するように設計されています。このアプローチは、多くのハードストレージを節約することでデータベースのバックアップを保存する場合に費用効果があります。

[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。

専門家による管理、管理、構成で環境を最適化する

Rackspaceのアプリケーションサービス(RAS) 専門家は、幅広いアプリケーションポートフォリオにわたって次の専門的かつ管理されたサービスを提供します。

  • eコマースおよびデジタルエクスペリエンスプラットフォーム
  • エンタープライズリソースプランニング(ERP)
  • ビジネスインテリジェンス
  • Salesforceの顧客関係管理(CRM)
  • データベース
  • メールホスティングと生産性

お届けします:

  • 偏りのない専門知識 :私たちは、即時の価値を提供する機能に焦点を当てて、お客様の近代化の旅を簡素化し、導きます。
  • 狂信的な経験 ™:最初にプロセスを組み合わせます。テクノロジーセカンド。包括的なソリューションを提供するための専用のテクニカルサポートを備えたアプローチ。
  • 比類のないポートフォリオ :豊富なクラウドエクスペリエンスを適用して、適切なテクノロジーを適切なクラウドに選択して導入できるようにします。
  • アジャイルデリバリー :私たちはあなたがあなたの旅の途中であなたに会い、あなたの成功と一致します。

データベースの詳細

コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。


  1. AWS SQLネイティブデータベースのバックアップ、復元、監視

    データベースのバックアップは、データベースの動作状態、アーキテクチャ、および保存されたデータをバックアップするときに行われます。プライマリデータベースがクラッシュしたり、破損したり、失われたりした場合に備えて、データベースの複製インスタンスまたはコピーを作成できます。 このブログ投稿では、Amazon®Web Services(AWS)リレーショナルデータベースサービス(RDS)でのSQLネイティブデータベースのバックアップ、復元、および監視について説明しています。 AWSRDSでのSQLネイティブフルバックアップ AWSでは、AWSRDSSQLインスタンスのSQLネイティブデータベースの

  2. MS Access から SQL Server データベースにデータを移行する

    最近、データベースが大きくなりすぎて Access で処理できなくなったため、Access データベースから SQL Server 2014 にデータを移行する必要がありました。プロセスはかなり単純ですが、段階的な手順を記載した記事を書こうと思いました. まず、コンピューターに SQL Server または SQL Server Express がインストールされていることを確認する必要があります。 PC に SQL Server Express をダウンロードする場合は、必ず Advanced Services を含むバージョンをダウンロードしてください。 .そうしないと、データベース エ