この文書では、フルバックアップデータを RDS for SQL Server 2012 および 2016に移行する方法について説明します。

適用バージョン

  • 基本シリーズ (シングルノード): RDS for SQL Server 2016/2012 Web または Enterprise Edition
  • 高可用性シリーズ (デュアルノード): RDS for SQL Server 2016/2012 Standard Edition または Enterprise Edition

SQL Server 2008 R2 Enterprise Edition (高可用性シリーズ) の RDS にデータを移行する方法については、「RDS for SOL Server 2008 R2 へのデータの移行」をご参照ください。

制限事項

バックアップファイルのバージョン

新しいバージョンの SQL Server のバックアップデータを古いバージョンの SQL Server に移行することはできません。 たとえば、SQL Server 2016 から SQL Server 2012 にデータを移行することはできません。

バックアップファイルの種類

差分およびログバックアップファイルはサポートされていません。

バックアップファイルのサフィックス

バックアップファイルのサフィックスは、"bak"、"diff"、"trn"、または "log" である必要があります。 この文書に記載されているスクリプトを使用してバックアップファイルが生成されない場合は、次のサフィックスのいずれかを使用します。

  • "bak": フルバックアップファイルを示します。
  • "diff": 差分バックアップファイルを示します。
  • "trn" または "log": トランザクションログバックアップファイルを示します。

バックアップファイル名

フルバックアップファイルの名前には、「@」や「|」などの特殊文字を含めることはできません。 このような特殊文字が含まれていると、移行は失敗します。

注意事項

AliyunRDSImportRole

RDS 正式サービスアカウントに OSS へのアクセスを許可すると、 RAM システムに ”AliyunRDSImportRole”というロールが作成されます。 このロールを変更または削除しないでください。 変更や削除をしてしまうとバックアップのアップロードが成功せず、ウィザードで再度承認を実行する必要があります。

OSS からのバックアップファイルの削除

バックアップの復元が完了する前に、OSS からバックアップファイルを削除しないでください。

前提条件

インスタンス容量

RDS for SQL Server インスタンスに十分なストレージ容量があることを確認してください。 必要に応じて容量を拡張してください。

対象インスタンスでは、同じ名前のデータベースを使用できません。

対象データベースを事前に作成する必要はありません。 これは、「RDS for SQL Server 2008 R2 へのデータの移行」に記載されている要件とは異なります。

対象 RDS インスタンスに、すでに移行するデータベースの名前と同じ名前のデータベースが存在する場合は、移行タスクを作成する前に、対象 RDS インスタンス内のデータベースをバックアップして削除します。

対象インスタンスにスーパーユーザーアカウントを作成します。

事前にコンソールで対象インスタンスのスーパーユーザーアカウントを作成することを推奨します。 ターゲットインスタンスにスーパーユーザーアカウントがない場合、移行は成功しますが、この文書の最後に記載している 一般的なエラーに従って対策をとらないかぎり、データベースにアクセスできません。

スーパーユーザーアカウントの作成方法については、 「アカウントとデータベースの作成 (SQL Server 2012 または 2016) をご覧ください。

OSS バケットを準備します。

OSS バケットが対象インスタンスと同じリージョンにない場合は、作成します。

  1. OSS コンソールにログインします。
  2. 左ウィンドウにある [+] をクリックします。

  3. バケット名、リージョン、ストレージクラス、および ACL 許可を設定して、 [OK] をクリックします。 (以降の手順でバケットを選択できるように、バケットが SQL Server インスタンスの対象 RDS と同じリージョンにあることを確認します。)

DBCC CHECKDB を実行します。

ローカルデータベースで DBCC CHECKDB ('xxx') を実行します。結果が次のとおりであることを確認し、割り当てエラーや整合性エラーがないことを確認します。


CHECKDB found 0 allocation errors and 0 consistency errors in database 'xxx'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

DBCC CHECKDB でエラーが表示された場合は、移行を実行する前に修正してください。

手順

ローカルデータベースを RDS for SQL Server 2012 または 2016 インスタンスに移行するために必要な手順は、3 つだけです。

  1. ローカルデータベースをバックアップします。
  2. バックアップファイルを OSS にアップロードします。
  3. 移行タスクを作成します。

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

ローカルデータベースのフルバックアップを実行する前に、データベースへのデータの書き込みを停止します。 バックアップ中にデータベースに書き込まれたデータはバックアップされません。

ご自身の方法を使用するか、次の手順に従ってフルバックアップを実行します。

  1. バックアップスクリプトをダウンロードして、SSMS で開きます。
  2. 必要に応じて以下のパラメーターを変更します。
    設定項目 説明
    @backup_databases_list バックアップするデータベース 複数のデータベースは、セミコロン (;)、またはコンマ (,) で区切ります。
    @backup_type バックアップの種類 値は以下のとおりです。
    • "FULL": フルバックアップ
    • "DIFF": 差分バックアップ
    • "LOG": ログバックアップ
    @backup_folder: バックアップファイルを保存するローカルフォルダ 存在しない場合は自動的に作成されます。
    @is_run バックアップを実行するかどうか 値は以下のとおりです。
    • "1": バックアップします。
    • "0": 確認のみします。
  3. バックアップスクリプトを実行します。

バックアップファイルを OSS にアップロードします。

バックアップファイルを OSS バケットにアップロードするには、次のいずれかの方法を使用します。

方法 1: ossbrowser を使う

ossbrowser ツールを使ってバックアップファイルを OSS にアップロードすることを推奨します。 詳細は、「ossbrowser」 をご参照ください。

方法 2: OSS コンソールを使用する

バックアップファイルが 5 GB 未満の場合は、OSS コンソールを使用してアップロードします。 詳細については、「オブジェクトのアップロード」をご参照ください。

方法 3: OSS API を使用する

自動移行が必要な場合は、OSS API を使用してアップロードを実行します。アップロードは一時停止および再開することができます。 詳細については、「マルチパートアップロード」をご参照ください。

データ移行タスクの作成

  1. RDS コンソールにログインします。
  2. 対象インスタンスのリージョンを選択します。
  3. 対象インスタンス ID をクリックして、[基本情報] ページに移動します。
  4. 左側のナビゲーションウィンドウで、[バックアップとリカバリ] をクリックします。
  5. 右上隅にある [OSS バックアップデータのアップロード] をクリックします。
  6. 初めてこの機能を使用する場合は、RDS の公式サービスアカウントに OSS へのアクセスを許可します。
    1. [インポートガイド][データのインポート] 手順で、[承認] をクリックします。

    2. [権限付与ポリシーを確認] をクリックします。

  7. 次のパラメーターを設定し、[OK] をクリックして、OSS バックアップファイルアップロードタスクを生成します。
    設定項目 説明
    データベース名 対象インスタンス内のターゲットデータベース名
    OSS バケット バックアップファイルを保存する OSS バケット
    OSS サブフォルダ名 バックアップが保存されているサブフォルダーの名前
    OSS ファイル 右側の虫眼鏡アイコンをクリックします。 バックアップファイルのプレフィックスを使って、あいまい検索を実行できます。 ファイル名、サイズ、および更新時間が表示されます。 必要なバックアップファイルを選択します。
    クラウド移行プラン
    • [即時アクセス (フルバックアップ) ]: フルバックアップファイルのみがある場合は、[即時アクセス] をクリックします。
    • [アクセス保留 (増分バックアップ) ]: フルバックアップファイルと差分バックアップファイルまたはログバックアップファイルがある場合、このオプションを選択します。
    整合性チェックモード
    • [同期 DBCC]: データベースが開いた後のみ DBCC チェックを行います。 データベースが大きいと DBCC チェックに時間がかかるため、これによりサービスの停止時間が短縮されます。 サービスの停止時間が重要で DBCC チェックの結果を気にしない場合は、このオプションを選択します。
    • [非同期DBCC]: ソースデータベースの整合性エラーを見つけるために DBCC チェックを使用する場合は、このオプションを選択します。 このオプションを選択すると、データベースを開くのにかかる時間が長くなりますのでご注意ください。

    [更新] をクリックして移行タスクの最新状態を確認します。 移行に失敗した場合は、この文書の最後に記載されている「一般的なエラー」を参照してタスクの説明を確認し、問題を修正します。

移行レコードを表示します。

次のとおり、移行レコードを表示します。

[バックアップとリカバリ] ページで、[バックアップデータのアップロード履歴] をクリックします。 過去 1 週間の移行記録がデフォルトで表示されます。 必要に応じてクエリの時間範囲を変更できます。

共通のエラー

それぞれの移行レコードにはタスクの説明があります。これは、失敗の原因を特定するのに役立ちます。 共通のエラーは次のとおりです。

同じ名前のプロジェクトがすでに存在します。

  • エラーメッセージ: データベース (xxx) はすでに RDS に存在します。バックアップしてドロップしてから、もう一度実行します。
  • エラーの原因: 同じ名前の既存のデータベースは対象インスタンスでは使用できません。 これにより、データベースを誤って上書きすることを防ぎます。
  • 解決方法: 同じ名前のデータベースが対象インスタンスにすでに存在する場合は、コンソールでデータベースのフルバックアップを実行し、移行前にそのデータベースを削除します。

差分バックアップファイル

  • エラーメッセージ: バックアップセット (xxx.bak) はデータベースの差分バックアップです。フルバックアップのみ使用できます。
  • エラーの原因: 移行は差分バックアップファイルではなくフルバックアップファイルのみを使用できます。

トランザクションログバックアップファイル

  • エラーメッセージ: バックアップセット (xxx.trn) はトランザクションログバックアップです。フルバックアップのみ使用できます。
  • エラーの原因: フルマイグレーションは、ログバックアップファイルではなくフルバックアップファイルのみを使用できます。

バックアップファイルの検証に失敗する

  • エラーメッセージ: "xxx.bak" の確認に失敗しました。バックアップファイルが破損していたか、RDS より新しいバージョンです。
  • エラーの原因: バックアップファイルが破損しているか、ローカルの SQL Server のバージョンが対象 RDS SQL Server のバージョンより新しいと、検証は失敗します。 たとえば、SQL Server 2016 から SQL Server 2012 へ移行しようとすると、検証は失敗します。
  • 解決策: バックアップファイルが破損している場合は、フルバックアップをもう一度実行して新しいバックアップファイルを生成します。 ローカル SQL Server のバージョンが対象 RDS SQL Server のバージョンより新しい場合は、対象 RDS SQL Server のバージョンを変更します。

DBCC CHECKDB エラー

  • エラーメッセージ: DBCC checkdb が失敗しました。
  • エラーの原因: DBCC CheckDB の失敗は、ローカルデータベースにエラーがあることを示しています。
  • 解決方法:
    1. 次のコマンドを実行してローカルデータベースを修正します (これによりデータが失われる可能性があります)。
      NO_INFOMSGS、ALL_ERRORMSGS を指定した DBCC CHECKDB (DB名、REPAIR_ALLOW_DATA_LOSS)
    2. データベースのフルバックアップを再度実行します。
    3. 新しいデータベースファイルを OSS にアップロードします。
    4. RDS コンソールで再度移行を実行します。

OSS ダウンロードリンクの有効期限が切れている

このエラーは、RDS for SQL 2008 R2 高可用性版インスタンスでのみ発生します。

  • エラーメッセージ: OSS URL が期限切れのため、バックアップファイルのダウンロードに失敗しました。
  • エラー原因: OSS ダウンロードリンクが期限切れになったため、バックアップファイルのダウンロードが失敗します。
  • 解決方法:
    • 解決方法 1: ダウンロードリンクの有効期間をもっと大きい値 (最大 18 時間) に設定します。

    • 解決方法 2: OSS データベースバックアップファイルの ACL 権限を [公開読み取り] に設定します。

      公開読み取り ACL 権限を持つバックアップファイルは、有効期限なしでいつでもダウンロードできます。 セキュリティ上のリスクを回避するには、ファイルを移行した後、ACL 権限を プライベートに設定します。

スペース不足 1

  • エラーメッセージ: 復元するのに十分なディスク容量がありません。残りの容量 (xxx MB) < 必要容量 (xxx MB)
  • エラーの原因: インスタンス上の空き容量が移行を行うには不十分です。
  • 解決方法:インスタンスのストレージ容量を拡張します。

スペース不足 2

  • エラーメッセージ: ディスク容量が足りません。空き容量 (xxx MB) < bak ファイル (xxx MB)
  • エラーの原因: インスタンスの空き容量がバックアップファイルのサイズよりも小さいです。
  • 解決方法: インスタンスのストレージ容量を拡張します。

スーパーユーザーアカウントなし

  • エラーメッセージ: RDS に init アカウントが作成されていません。アカウントを作成し、この移行されたデータベース (XXX) に対して RDS コンソールの権限を付与します。
  • エラーの原因: RDS インスタンスにスーパーユーザーアカウントがない場合、移行は成功しますが、移行タスクはどのユーザーを承認するのかわかりません。
  • 解決方法:
    1. スーパーユーザーアカウントを作成します。 詳細については、「アカウントとデータベースの作成 (SQL Server 2012 または 2016)」をご参照ください。
    2. スーパーユーザーアカウントのパスワードをリセットします。 詳細については、「インスタンスパスワードのリセット」をご参照ください。
    3. スーパーユーザーアカウントを使用してクラウド上のデータベースにアクセスします。