ApsaraDB RDS for SQL Serverインスタンスを使用すると、データをクラウドに簡単に移行できます。 自己管理型SQL Serverインスタンスのソースデータベースの完全バックアップデータをObject Storage Service (OSS) バケットにアップロードし、ApsaraDB RDSコンソールを使用して、完全バックアップデータをApsaraDB RDS for SQL Serverインスタンスのターゲットデータベースに移行するだけで済みます。 この機能は、データのバックアップ、移行、ディザスタリカバリなどのシナリオで使用できます。
このトピックで説明する操作は、RDSインスタンスがクラウドディスクを使用してSQL Server 2008 R2を実行している場合、またはSQL Server 2012以降を実行している場合にのみ実行できます。
自己管理型SQL Serverインスタンスの完全バックアップデータを、ローカルディスクでSQL Server 2008 R2を実行するRDSインスタンスに移行する方法の詳細については、「自己管理型SQL Serverインスタンスの完全バックアップデータを、ローカルディスクでSQL Server 2008 R2を実行するApsaraDB RDSインスタンスに移行」をご参照ください。
前提条件
RDSインスタンスは、クラウドディスクを使用してSQL Server 2008 R2を実行するか、SQL Server 2012以降を実行します。 RDSインスタンス上のデータベースの名前は、自己管理型SQL Serverインスタンスから移行するデータベースの名前とは異なります。 RDSインスタンスの作成方法の詳細については、「ApsaraDB RDS For SQL Serverインスタンスの作成」をご参照ください。
説明クラウドディスクでSQL Server 2008 R2を実行するApsaraDB RDSインスタンスは、購入できなくなりました。 詳細については、「 [EOS /廃止] クラウドディスクを備えたSQL Server 2008 R2を実行しているApsaraDB RDSインスタンスは、2023年7月14日から購入できなくなりました」をご参照ください。
RDSインスタンスの使用可能なストレージは十分です。 使用可能なストレージが不十分な場合は、移行を開始する前にRDSインスタンスのストレージ容量を拡張する必要があります。 詳細については、「ApsaraDB RDS For SQL Serverインスタンスの仕様の変更」をご参照ください。
RDSインスタンス用に特権アカウントが作成されます。 詳細については、「アカウントとデータベースの作成」をご参照ください。
DBCC CHECKDB
ステートメントを実行して、自己管理型SQL Serverインスタンスで割り当てエラー
または整合性エラー
が発生しないようにします。 割り当てエラーまたは整合性エラーが発生しなかった場合、次の実行結果が返されます。... CHECKDB found 0 allocation errors and 0 consistency errors in database 'xxx'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
OSSが有効化されています。 詳細については、「OSSの有効化」をご参照ください。
RAMユーザーを使用する場合は、次の要件が満たされていることを確認してください。
AliyunOSSFullAccessおよびAliyunRDSFullAccessポリシーはRAMユーザーにアタッチされます。 RAMユーザーに権限を付与する方法の詳細については、「RAMを使用してOSS権限を管理する」および「RAMを使用してApsaraDB RDS権限を管理する」をご参照ください。
ApsaraDB RDSのサービスアカウントは、Alibaba Cloudアカウントを使用してOSSバケットにアクセスすることで承認されます。
カスタムポリシーは、Alibaba Cloudアカウントを使用して手動で作成され、RAMユーザーにアタッチされます。 カスタムポリシーの作成方法の詳細については、「カスタムポリシーの作成」の「JSONタブでカスタムポリシーを作成する」をご参照ください。
カスタムポリシーには次のコンテンツを使用する必要があります。
{ "Version": "1", "Statement": [ { "Action": [ "ram:GetRole" ], "Resource": "acs:ram:*:*:role/AliyunRDSImportRole", "Effect": "Allow" } ] }
使用上の注意
このトピックで説明する移行方法は、データベースレベルです。 一度に単一の自己管理データベースのフルバックアップデータのみをRDSインスタンスに移行できます。 自己管理型SQL Serverインスタンス内の複数またはすべてのデータベースのバックアップデータを一度に移行する場合は、インスタンスレベルの移行方法を使用することをお勧めします。 詳細については、「セルフマネージドSQL ServerインスタンスからApsaraDB RDS For SQL Serverインスタンスへのデータの移行」をご参照ください。
RDSインスタンスよりも新しいバージョンのデータベースエンジンを実行する自己管理型SQL Serverインスタンスのバックアップファイルを移行することはできません。 たとえば、SQL Server 2016を実行する自己管理型インスタンスのバックアップファイルを、SQL Server 2012を実行するRDSインスタンスに移行することはできません。
差分バックアップファイルとログバックアップファイルはサポートされていません。
データ移行の失敗を避けるために、完全バックアップファイルの名前に次の特殊文字が含まれていないことを確認してください:! @ # $ % ^ & * ( ) _ + - =
ApsaraDB RDSのサービスアカウントにOSSバケットへのアクセスを許可すると、AliyunRDSImportRoleという名前のロールがRAMに作成されます。このロールを変更または削除しないでください。 このロールを変更または削除した場合、バックアップファイルはOSSバケットからダウンロードできません。 この場合、移行ウィザードを使用してサービスアカウントを再承認する必要があります。
RDSインスタンスは、自己管理型SQL Serverインスタンスのアカウントを引き継ぎません。 移行が完了したら、ApsaraDB RDSコンソールでRDSインスタンスのアカウントを作成する必要があります。
移行が完了する前に、OSSバケットから完全バックアップファイルを削除しないでください。 移行が完了する前に完全バックアップファイルを削除すると、移行は失敗します。
バックアップファイルの名前の末尾には、bak、diff、trn、またはlogを付ける必要があります。 次のリストでは、サフィックスについて説明します。
"bak": フルバックアップファイルを示します。
"diff": 差分バックアップファイルを示します。
trnまたはlog: トランザクションのログバックアップファイルを示します。
説明バックアップファイルが上記のサフィックスを使用しない場合、システムはバックアップファイルのタイプを識別できない可能性があります。 これは後続の操作に影響します。
デフォルトでは、RDSインスタンスの完全バックアップファイルはZIP形式です。 ZIPファイルをダウンロードする場合は、ZIPファイルを解凍して、名前の末尾にbakが付いている完全なバックアップファイルを取得する必要があります。 次に、フルバックアップファイルを使用して、データをRDSインスタンスに移行できます。
課金
このトピックで説明されている方法を使用してデータを移行する場合、OSSバケットの使用に対してのみ課金されます。
シナリオ | 課金ルール |
OSSバケットへのバックアップファイルのアップロード | 無料です。 |
OSSバケットにバックアップファイルを保存する | ストレージ料金が請求されます。 詳細については、OSSの料金 ページをご覧ください。 |
OSSバケットからRDSインスタンスへのバックアップファイルの移行 |
|
ステップ1: 自己管理型インスタンスのソースデータベースのバックアップ
完全バックアップを実行する前に、自己管理インスタンスのソースデータベースへのすべてのデータ書き込みを停止する必要があります。 完全バックアッププロセス中に自己管理データベースに書き込まれたデータはバックアップできません。
バックアップスクリプトをダウンロードし、SQL Server Management Studio (SSMS) を使用してバックアップスクリプトを開きます。
ビジネス要件に基づいてパラメーターを変更します。 次の表に、バックアップスクリプトのパラメーターを示します。
パラメーター
説明
@backup_databases_list
バックアップするデータベースの名前。 複数のデータベースを指定する場合は, データベース名をセミコロン (;) またはコンマ (,) で区切ります。
@backup_type
バックアップの種類。 有効な値:
"FULL": フルバックアップ
DIFF: 増分バックアップ
"LOG": ログバックアップ
@backup_folder
自己管理データベースのバックアップファイルを格納するために使用されるディレクトリ。 指定されたディレクトリが存在しない場合、システムは自動的にディレクトリを作成します。
@is_run
バックアップまたはチェックを実行するかどうかを指定します。 有効な値:
"1":バックアップを実行します。
0: チェックを実行します。
説明バックアップスクリプトの [PUBLIC VARIABLES HEREを入力する] セクションのSELECTステートメントの上記パラメーターを変更します。
バックアップスクリプトを実行します。
手順2: バックアップファイルをOSSバケットにアップロードする
OSSバケットを作成します。
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、[バケットの作成] をクリックします。
次のパラメーターを設定します。 他のパラメーターのデフォルト値を保持します。
重要作成されたOSSバケットはデータ移行にのみ使用され、データ移行が完了すると使用されなくなります。 キーパラメーターのみを設定する必要があります。 データのリークや過剰なコストを防ぐために、できるだけ早い機会にデータ移行が完了した後にOSSバケットを削除することを推奨します。
OSSバケットの作成時にデータ暗号化を有効にしないでください。 詳細については、「データ暗号化」をご参照ください。
パラメーター
説明
例
バケット名
OSS バケットの名前。 名前はグローバルに一意であり、設定後に変更することはできません。
命名規則:
名前には、小文字、数字、ハイフン (-) のみを使用できます。
先頭と末尾は小文字または数字である必要があります。
名前の長さは 3 ~ 63 文字である必要があります。
migratetest
リージョン
OSS バケットの名前です。 内部ネットワークを介してElastic Compute Service (ECS) インスタンスからOSSバケットにデータをアップロードし、内部ネットワークを介してRDSインスタンスにデータを復元する場合は、OSSバケット、ECSインスタンス、およびRDSインスタンスが同じリージョンにあることを確認してください。
中国 (杭州)
ストレージクラス
バケットのストレージクラス。 [標準] を選択します。 このトピックで説明するクラウド移行操作は、他のストレージクラスのバケットでは実行できません。
標準
バックアップファイルをOSSバケットにアップロードします。
説明RDSインスタンスとOSSバケットが同じリージョンにある場合、内部ネットワークを介して相互に通信できます。 内部ネットワークを使用してバックアップデータをアップロードできます。 この方法は高速で、インターネットトラフィックの料金は発生しません。 ターゲットRDSインスタンスと同じリージョンにあるOSSバケットにバックアップファイルをアップロードすることを推奨します。
自己管理型SQL Serverインスタンスの完全バックアップが完了したら、次のいずれかの方法を使用して、生成された完全バックアップファイルをOSSバケットにアップロードする必要があります。
ステップ3: 移行タスクの作成
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、バックアップと復元をクリックします。
ページの右上隅にあるOSSバックアップデータをRDSに移行するをクリックします。
インポートガイドウィザードで、次へを2回クリックします。
説明OSSベースの移行ウィザードを初めて使用する場合は、ApsaraDB RDSのサービスアカウントにOSSバケットへのアクセスを許可する必要があります。 この場合、[承認] をクリックして承認を完了する必要があります。 それ以外の場合、[データのインポート] ステップの [OSSバケット] ドロップダウンリストは空です。
次のパラメーターを設定します。
パラメーター
説明
データベース名
RDSインスタンスのターゲットデータベースの名前を入力します。 ターゲットデータベースは、ソースデータベースから移行されたデータを自己管理型SQL Serverインスタンスに格納するために使用されます。 ターゲットデータベースの名前は、オープンソースのSQL Serverの要件を満たす必要があります。
重要移行する前に、移行先RDSインスタンスのデータベースの名前が、指定したバックアップファイルを使用して復元するデータベースの名前と異なることを確認する必要があります。 さらに、指定されたバックアップファイルを使用して復元するデータベースと同じ名前のデータベースファイルが、ターゲットRDSインスタンスのデータベースに追加されないようにします。 上記の両方の要件が満たされている場合は、バックアップセット内のデータベースファイルを使用してデータベースを復元できます。 データベースファイルは、復元するデータベースと同じ名前である必要があります。
上記の要件のいずれかが満たされない場合、移行は失敗します。
OSSバケット
フルバックアップファイルを格納するOSSバケット。
OSSサブフォルダ名
フルバックアップファイルを格納するOSSサブフォルダーの名前。
OSSファイル
インポートするフルバックアップファイル。 検索ボックスにプレフィックスを入力し、アイコンをクリックすると、ファジーマッチモードで完全バックアップファイルを検索できます。 名前にプレフィックスが含まれている各完全バックアップファイルの名前、サイズ、および更新時間が表示されます。 クラウドに移行するバックアップファイルを選択します。
Cloud Migrationメソッド
即時アクセス (完全バックアップ): 完全バックアップファイルのみを移行する場合は、この移行計画を選択します。 この例では、[即時アクセス (フルバックアップ)] を選択します。 この場合、CreateMigrateTask操作では、
BackupMode = FULL
およびIsOnlineDB = True
のパラメーター設定が有効になります。アクセス保留 (増分バックアップ): 完全バックアップファイルとログまたは差分バックアップファイルを移行する場合は、この移行方法を選択します。 この場合、CreateMigrateTask操作で次のパラメーター設定が有効になります。
BackupMode = UPDF
およびIsOnlineDB = False
。
整合性チェックモード
非同期DBCC: DBCC CHECKDBステートメントは、ターゲットデータベースが開かれた後に実行されます。 これにより、ターゲットデータベースを開くのに必要な時間が短縮され、アプリケーションのダウンタイムが最小限に抑えられます。 ターゲットデータベースが大きい場合、DBCC CHECKDBステートメントの実行に時間がかかります。 アプリケーションがダウンタイムの影響を受けやすいが、DBCC CHECKDBステートメントの結果の影響を受けない場合は、この整合性チェックモードを選択することを推奨します。 この場合、CreateMigrateTask操作で次のパラメーター設定が有効になります。
CheckDBMode = AsyncExecuteDBCheck
。同期DBCC: DBCC CHECKDBステートメントは、ターゲットデータベースが開かれると同時に実行されます。 DBCC CHECKDBステートメントの結果に基づいて、ソースデータベースとターゲットデータベース間の整合性エラーを特定する場合は、この整合性チェックモードを選択することを推奨します。 ただし、ターゲットデータベースを開くのに必要な時間が長くなります。 この場合、CreateMigrateTask操作で次のパラメーター設定が有効になります。
CheckDBMode = SyncExecuteDBCheck
。
OKをクリックします。
移行タスクが完了するまで待ちます。 [更新] をクリックすると、移行タスクの最新の状態が表示されます。 移行タスクが失敗した場合は、移行タスクの説明に基づいて障害をトラブルシューティングできます。 詳細については、「一般的なエラー」をご参照ください。
ステップ4: 移行タスクを表示する
移行タスクの詳細を表示する場合は、[バックアップと復元] ページに移動し、[バックアップデータのクラウド移行レコード] タブをクリックします。 デフォルトでは、このタブには先週の移行タスクが表示されます。
(共通エラーコード 29~31 など)
[バックアップと復元] ページの [バックアップデータのアップロード履歴] タブの各移行タスクレコードには、タスクの説明が含まれます。 移行タスクが失敗した場合、またはエラーが報告された場合は、タスクの説明に基づいて障害またはエラーをトラブルシューティングできます。 以下の一般的なエラーが発生する可能性があります。
RDSインスタンス上の既存のデータベースの名前は、ソースデータベースと同じです。
エラーメッセージ: データベース (xxx) はすでに RDS に存在します。バックアップしてドロップしてから、もう一度実行します。
原因: RDSインスタンス上の既存のデータベースの名前がソースデータベースと同じ場合、移行はサポートされていません。 このメカニズムは、データのセキュリティを確保するために設計されています。
解決策: RDSインスタンスの既存のデータベースを上書きする場合は、データベースをバックアップし、RDSインスタンスからデータベースを削除してから、移行タスクを再度作成して実行します。
差分バックアップファイルが使用されます。
エラーメッセージ: バックアップセット (xxx.bak) はデータベースの差分バックアップです。フルバックアップのみ使用できます。
原因: アップロードするファイルは、完全バックアップファイルではなく、差分バックアップファイルです。 このトピックの移行方法では、フルバックアップファイルのみがサポートされます。
ログバックアップファイルが使用されます。
エラーメッセージ: バックアップセット (xxx.trn) はトランザクションログバックアップです。フルバックアップのみ使用できます。
原因: アップロードするファイルは、完全バックアップファイルではなくログバックアップファイルです。 このトピックの移行方法では、フルバックアップファイルのみがサポートされます。
完全なバックアップファイルが検証に失敗します。
エラーメッセージ: "xxx.bak" の確認に失敗しました。バックアップファイルが破損していたか、RDS より新しいバージョンです。
原因: 完全バックアップファイルが破損しているか、自己管理型インスタンスがRDSインスタンスよりも新しいバージョンのSQL Serverを実行しています。 たとえば、このエラーは、自己管理インスタンスがSQL Server 2016を実行し、RDSインスタンスがSQL Server 2012を実行している場合に発生します。
解決策: 完全バックアップファイルが破損している場合は、自己管理型SQL Serverインスタンスで完全バックアップを再度実行します。 次に、移行タスクを再度作成して実行します。 自己管理インスタンスがRDSインスタンスよりも後のバージョンのSQL Serverを実行する場合は、自己管理インスタンスと同じバージョンまたは後のバージョンを実行する別のRDSインスタンスを選択します。
説明既存のRDS for SQL Serverインスタンスのメジャーエンジンバージョンをアップグレードするには、「メジャーエンジンバージョンのアップグレード」をご参照ください。
DBCC CHECKDBステートメントが失敗します。
エラーメッセージ: DBCC checkdbに失敗しました。
原因: 自己管理型SQL Serverインスタンスの割り当てエラーまたは整合性エラーが発生しました。
解決策: 自己管理型SQL Serverインスタンスで次のステートメントを実行して、エラーを修正します。 次に、移行タスクを再度作成して実行します。
重要このソリューションを使用して問題を解決すると、データが失われる可能性があります。
DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS
RDSインスタンスの使用可能なストレージが不足しています。
エラー1
エラーメッセージ: 復元に十分なディスクスペースがありません。スペースが残っています (xxx MB) < needed (xxx MB) 。
原因: RDSインスタンスの使用可能なストレージが、フルバックアップファイルを使用してデータを復元するために必要な最小ストレージ未満です。
解決方法: RDSインスタンスのストレージ容量を拡張します。 詳細については、「ApsaraDB RDS For SQL Serverインスタンスの仕様の変更」をご参照ください。
エラー2
エラーメッセージ: Not Enough Disk Space, space left xxx MB < bak file xxx MB.
原因: RDSインスタンスの使用可能なストレージが、フルバックアップファイルのサイズよりも小さいこと。
解決方法: RDSインスタンスのストレージ容量を拡張します。 詳細については、「ApsaraDB RDS For SQL Serverインスタンスの仕様の変更」をご参照ください。
RDSインスタンスに特権アカウントが作成されていません。
エラーメッセージ: Your RDS doesn't have any init account yet, please create one and grant permissions on RDS console to this migrated database (XXX).
原因: RDSインスタンスに特権アカウントが作成されていません。 その結果、移行タスクは承認が必要なアカウントを見つけることができません。 ただし、完全バックアップファイルはRDSインスタンスに復元されており、移行タスクは成功しています。
解決策: RDSインスタンスに特権アカウントを作成します。 詳細については、「特権アカウントまたは標準アカウントの作成」をご参照ください。
RAMユーザーに必要な権限がありません。
エラー1
エラー: ステップ3: 移行タスクの作成のサブステップ5に記載されているパラメーターは正しく設定されていますが、[OK] ボタンは暗くなっています。
原因: 必要な権限を持たないRAMユーザーを使用しています。
解決策: RAMユーザーに必要な権限を付与するには、このトピックの「前提条件」セクションを参照してください。
エラー2
エラー: RAMユーザーに
AliyunRDSImportRole
権限を付与する権限がないことを示すメッセージが表示されます。原因: 使用しているRAMユーザーに必要な権限がありません。
解決策: Alibaba Cloudアカウントを使用して、RAMユーザーに
AliyunRAMFullAccess
権限を付与します。 詳細については、「RAMを使用したApsaraDB RDS権限の管理」をご参照ください。
関連する API 操作
API 操作 | 説明 |
データ移行タスクを作成します。 | |
バックアップデータの移行先のデータベースをApsaraDB RDS for SQL Serverインスタンスで開きます。 | |
ApsaraDB RDS for SQL Serverインスタンスのバックアップデータを移行するために作成されたタスクを照会します。 | |
ApsaraDB RDS for SQL Serverインスタンスのバックアップデータ移行タスクのバックアップファイルの詳細を照会します。 |