ApsaraDB RDS for SQL Server では、セルフマネージド SQL Server 上の 1 つ以上のデータベースから、インスタンスレベルでデータセット全体をクラウドに移行できます。移行するには、セルフマネージド SQL Server からすべてのデータベースをバックアップし、バックアップファイルを OSS バケット内の単一フォルダーにアップロードしてから、クラウド移行スクリプトを実行します。
単一のデータベースを移行するには、「完全バックアップからのデータ移行」および「増分バックアップからのデータ移行」を参照してください。
前提条件
ソースは自己管理の SQL Server データベースである必要があります。
移行先の ApsaraDB RDS for SQL Server インスタンスは、次の要件を満たす必要があります:
インスタンスの利用可能なストレージ領域は、移行するデータファイルのサイズより大きい必要があります。利用可能なストレージ領域が不足している場合は、インスタンス仕様をアップグレードしてください。
SQL Server 2008 R2 の場合、移行先インスタンスにソースデータベースと同じ名前のデータベースを作成する必要があります。この要件は、他のバージョンには適用されません。
RAM ユーザーとしてログインする場合は、以下の要件を満たす必要があります。
RAM ユーザーに AliyunOSSFullAccess および AliyunRDSFullAccess 権限が付与されていること。RAM ユーザーへの権限付与方法の詳細については、「RAM を使用した OSS 権限の管理」および「RAM を使用した ApsaraDB RDS 権限の管理」をご参照ください。
Alibaba Cloud アカウント (プライマリアカウント) が、ApsaraDB RDS の公式サービスアカウントに OSS リソースへのアクセスを許可していること。
Alibaba Cloud アカウント (プライマリアカウント) で手動で権限ポリシーを作成し、そのポリシーを RAM ユーザーにアタッチします。
制限
このソリューションは完全移行のみをサポートし、増分移行は現在サポートしていません。
課金
このトピックで説明されている方法を使用してデータを移行する場合、OSS バケットの使用に対してのみ課金されます。
シナリオ | 課金ルール |
OSS バケットにバックアップファイルをアップロードする | 無料。 |
OSS バケットにバックアップファイルを保存する | ストレージ料金が発生します。詳細については、OSS のPricingページをご覧ください。 |
OSS バケットから RDS インスタンスにバックアップファイルを移行する |
|
前提条件
1. Python 3 のインストール
Python 公式 Web サイト にアクセスして、お使いのオペレーティングシステムに適したパッケージをダウンロードしてインストールします。バージョン 3.12 以降を選択してください。
Windows: インストール中に、
Add python.exe to PATHチェックボックスを選択すると、環境変数を手動で設定する必要がなくなります。macOS/Linux: 公式インストーラーまたは Homebrew、apt、dnf などのパッケージマネージャーを使用してインストールできます。詳細については、公式 Web サイトをご参照ください。
2. Python のインストールおよびバージョンの確認
実行可能ファイル名は、オペレーティングシステムやインストール方法によって異なる場合があります (例: python、python3、py)。コマンドを順番に試し、出力を確認してインストールされていることを確認してください。
3. SDK の依存関係のインストール
pip install alibabacloud_rds20140815
pip install alibabacloud-oss-v2
pip install alibabacloud_tea_openapi
pip install alibabacloud_tea_util1. セルフマネージド SQL Server データベースのバックアップ
データ整合性を確保するため、完全バックアップの実行中は新しいデータを書き込まないでください。サービスに影響が出ないよう、事前にこの操作をスケジュールしてください。
バックアップスクリプトを使用しない場合、バックアップファイルは
database_name_backup_type_backup_time.bakフォーマット (例:Testdb_FULL_20180518153544.bak) で名前を付ける必要があります。これを満たさない場合、バックアップは失敗します。
バックアップスクリプトをダウンロードします。
バックアップスクリプトをダブルクリックして Microsoft SQL Server Management Studio (SSMS) で開きます。SSMS を使用した接続方法については、公式ドキュメントをご参照ください。
必要に応じて、次のパラメーターを変更します。
パラメーター
説明
@backup_databases_list
バックアップするデータベース。複数のデータベース名を指定する場合は、セミコロン (;) またはカンマ (,) で区切ります。
@backup_type
バックアップタイプ。有効な値:
FULL:完全バックアップ。
DIFF:差分バックアップ。
LOG:ログ バックアップ。
重要この手順では、このパラメーターを FULL に設定する必要があります。
@backup_folder
バックアップファイルを保存するローカル ディレクトリ。このディレクトリが存在しない場合は、自動的に作成されます。
@is_run
バックアップを実行するかどうかを指定します。有効な値:
1:バックアップを実行します。
0:チェックのみ行います。
バックアップスクリプトを実行し、データベースを指定したディレクトリにバックアップします。
バックアップが完了すると、
C:\backupディレクトリにdtstestdata_FULL_20200408154821.bakやtestdb_FULL_20200408154821.bakなどの.bakバックアップファイルが生成され、バックアップスクリプトが正常に実行されたことを示します。
2. OSS へのバックアップファイルのアップロード
バックアップファイルを OSS にアップロードする前に、OSS にバケットを作成する必要があります。
OSS にバケットが既に存在する場合、バケットが次の要件を満たしていることを確認してください:
OSS にバケットが存在しない場合は、まずバケットを作成します。 (OSS が 有効化 されていることを確認してください。)
OSS コンソールにログオンし、バケット をクリックし、次に バケットの作成 をクリックします。
次の主要なパラメーターを設定し、他のパラメーターはデフォルト値のままにします。
重要このバケットはこのデータ移行でのみ使用されため、主要なパラメーターのみを設定する必要があります。 移行完了後、データ漏洩や追加料金を防ぐために、バケットを速やかに削除してください。
バケット作成時に サーバー側の暗号化 を有効にしないでください。
パラメーター
説明
例
[バケット名]
バケットの名前。 名前はグローバルに一意である必要があり、バケット作成後は変更できません。
命名規則:
名前には、小文字、数字、ハイフン (-) のみ使用できます。
名前の先頭と末尾は、小文字または数字である必要があります。
名前の長さは 3~63 文字である必要があります。
migratetest
[リージョン]
バケットが存在するリージョン。 ECS インスタンスから内部ネットワーク経由でバケットにデータをアップロードし、内部ネットワーク経由でデータを ApsaraDB RDS インスタンスに復元する場合、ECS インスタンス、バケット、ApsaraDB RDS インスタンスが同じリージョンに存在することを確認してください。
中国 (杭州)
[ストレージタイプ]
[標準ストレージ] を選択します。 このトピックで説明する移行操作は、他のストレージクラスのバケットをサポートしていません。
スタンダード
バックアップファイルを OSS にアップロードします。
セルフマネージドデータベースのバックアップが完了したら、バックアップファイルを ApsaraDB RDS インスタンスと 同じリージョン にある OSS バケットにアップロードします。 バケットと ApsaraDB RDS インスタンスが同じリージョンにある場合、バケットとインスタンスは内部ネットワーク経由で通信できます。 この場合、インターネットトラフィック料金は発生せず、データはより高速にアップロードされます。 次のいずれかの方法を使用できます:
3. 移行スクリプトの実行
SQL Server 移行スクリプト をダウンロードします。
パッケージを展開した後、次のコマンドを実行して、スクリプトのパラメーターを表示します。
python ~/Downloads/RDSSQLCreateMigrateTasksBatchly.py -hコマンドは次の出力を返します:
RDSSQLCreateMigrateTasksBatchly.py -k <access_key_id> -s <access_key_secret> -i <rds_instance_id> -e <oss_endpoint> -b <oss_bucket> -d <directory>次の表でパラメーターを説明します。
パラメーター
説明
<access_key_id>
お使いの Alibaba Cloud アカウントの AccessKey ID です。
<access_key_secret>
お使いの Alibaba Cloud アカウントの AccessKey Secret です。
<rds_instance_id>
移行先の RDS インスタンスの ID です。
<oss_endpoint>
バケットがある OSS リージョンのエンドポイント です。
<oss_bucket>
バックアップファイルを格納するバケットの名前です。
<directory>
バックアップファイルを格納する OSS バケット内のディレクトリです。ルートディレクトリの場合は、
/と入力します。移行スクリプトを実行して、移行を完了します。
このトピックでは、
testdatabucketという名前の OSS バケットのMigrationdataディレクトリから、指定された条件を満たすすべてのバックアップファイルを、インスタンス ID が rm-2zesz5774ud8s**** の ApsaraDB RDS for SQL Server インスタンスに完全に移行する例を示します。python ~/Downloads/RDSSQLCreateMigrateTasksBatchly.py -k <yourAccessKeyID> -s <yourAccessKeySecret> -i rm-2zesz5774ud8s**** -e oss-cn-beijing.aliyuncs.com -b testdatabucket -d Migrationdata
4. 移行タスクの進捗の確認
ApsaraDB RDS インスタンスの SQL Server バージョンに応じた手順に従ってください。
SQL Server 2012 以降
ApsaraDB RDS インスタンスの左側のナビゲーションペインで、[バックアップと復元] ページに移動します。[バックアップデータのクラウド移行レコード] タブで、タスクステータス、開始時刻、終了時刻などのクラウド移行レコードを表示できます。デフォルトでは、先週のレコードが表示されます。必要に応じて時間範囲を調整してください。
[タスクステータス] が [失敗] の場合、[タスクの説明] を確認するか、対象の移行タスクの横にある [ファイルの詳細を表示] をクリックして、タスクが失敗した理由を特定します。問題を修正した後、移行タスクを再実行します。
SQL Server 2008 R2
ApsaraDB RDS インスタンスの左側のナビゲーションペインで、[クラウドへのデータ移行] ページに移動します。 次に、対象の移行タスクを見つけて、その進捗を確認します。
[タスクステータス] が [失敗] の場合、[タスクの説明] を確認するか、対象の移行タスクの横にある [ファイルの詳細を表示] をクリックして、タスクが失敗した原因を特定します。問題を修正した後、移行タスクを再実行します。
一般的なエラー
エラーメッセージ | 原因 | 解決策 |
| OpenAPI 呼び出しに使用した AccessKey ID が正しくありません。 | 正しい AccessKey ID と AccessKey Secret を指定してください。 |
| OpenAPI 呼び出しに使用した AccessKey Secret が正しくありません。 | |
| この解決策は ApsaraDB RDS for SQL Server のみをサポートしています。他のデータベースエンジンはサポートされていません。 | 移行先として ApsaraDB RDS for SQL Server インスタンスを使用してください。 |
| 指定した RDS インスタンス ID は存在しません。 | 指定した RDS インスタンス ID が正しいことを確認してください。 |
| エンドポイントが正しくないため、接続に失敗しました。 | 指定した エンドポイント が正しいことを確認してください。 |
| 指定した OSS バケットは存在しません。 | 指定した OSS バケット名が正しいことを確認してください。 |
| 指定したフォルダーが OSS バケットに存在しないか、フォルダーに該当するデータベースのバックアップファイルが含まれていません。 | フォルダーが OSS バケットに存在し、該当するデータベースのバックアップファイルが含まれていることを確認してください。 |
| バックアップファイル名が必要な命名規則に従っていません。 | バックアップスクリプトを使用しない場合は、バックアップファイルを |
| RAM ユーザーの権限が不十分です。 | OSS と ApsaraDB RDS にアクセスするための権限を RAM ユーザーに付与する必要があります。これには、[AliyunOSSFullAccess] および [AliyunRDSFullAccess] ポリシーが必要です。 |
| OpenAPI 呼び出しでエラーが返されました。 | 返された エラーコードとエラーメッセージ に基づいて根本原因を分析してください。 |
OpenAPI エラーコード
HTTP ステータスコード | エラー | メッセージ | 説明 |
403 | InvalidDBName | The specified database name is not allowed. | データベース名は無効です。システムデータベース名は使用できません。 |
403 | IncorrectDBInstanceState | The current instance state does not allow this operation. | ApsaraDB RDS インスタンスが無効な状態です。たとえば、インスタンスが [Creating] 状態の場合などです。 |
400 | IncorrectDBInstanceType | The current instance type does not support this operation. | インスタンスのエンジンはサポートされていません。この機能は ApsaraDB RDS for SQL Server でのみ利用できます。 |
400 | IncorrectDBInstanceLockMode | The current instance lock mode does not support this operation. | データベースが無効なロック状態です。 |
400 | InvalidDBName.NotFound | One or more of the specified database names do not exist, or their status does not allow the operation. | データベースが存在しません。
|
400 | IncorrectDBType | The database type does not support this operation. | |
400 | IncorrectDBState | The current database state does not allow this operation. | データベースが無効な状態です。たとえば、作成中または移行が進行中の場合などです。 |
400 | UploadLimitExceeded | The daily migration quota for the database has been exceeded. | 各インスタンスのデータベースごとに 1 日あたり最大 20 回の移行が許可されています。 |
400 | ConcurrentTaskExceeded | The daily migration quota for the instance has been exceeded. | インスタンスは 1 日あたり最大 500 回の移行に制限されています。 |
400 | IncorrectFileExtension | The file extension is not supported. | バックアップファイルの拡張子が無効です。 |
400 | InvalidOssUrl | The specified OSS URL is invalid. | 指定した OSS ダウンロード URL は利用できません。 |
400 | BakFileSizeExceeded | The backup file exceeds the allowed size limit. | バックアップファイルのサイズは 3 TB を超えることはできません。 |
400 | FileSizeExceeded | The file is too large for the destination instance. | バックアップファイルを復元すると、移行先インスタンスのストレージ容量を超えてしまいます。 |
関連する API オペレーション
API | 説明 |
OSS から ApsaraDB RDS for SQL Server インスタンスへバックアップファイルを復元し、データ移行タスクを作成します。 | |
ApsaraDB RDS for SQL Server インスタンスのバックアップデータ移行タスクのデータベースを開きます。 | |
ApsaraDB RDS for SQL Server インスタンスのバックアップデータ移行タスクのリストを照会します。 | |
ApsaraDB RDS for SQL Server インスタンスのバックアップデータ移行タスクのバックアップファイルの詳細を照会します。 |
をクリックし、アップロードするバックアップファイルを選択して、[開く] をクリックします。 ローカルファイルが OSS にアップロードされます。