Database Migration Service は、移行ジョブを使用して、移行元データベースから Cloud SQL 移行先インスタンスにデータを移行します。移行ジョブを使用すると、移行元と移行先の接続プロファイルを整理し、移行プロセスに固有の設定を定義し、進行状況をモニタリングして、オペレーション全体を安全に完了できます。
移行ジョブの作成には、次のタスクの実行が含まれます。
移行元と移行先の接続プロファイルの選択。
移行するソース インスタンスで検出されたデータベースを選択します。
移行ジョブテストを実行して、Database Migration Service がデータソースと移行先に接続できることを確認します。
移行ジョブの開始と進行状況のモニタリング。
アプリケーションを新しいインスタンスに切り替えるときに移行ジョブを昇格させる。
始める前に
- 次の要件を満たしていることを確認してください。
- SQL Server バックアップ ファイル用の Cloud Storage バケットがある。
- フル バックアップ ファイルとトランザクション ログ ファイルが Cloud Storage バケットにアップロードされます。
- Cloud Storage バケットのソース接続プロファイルがある。
- 移行先の Cloud SQL for SQL Server インスタンスを作成して構成し、インスタンスの移行先接続プロファイルがあります。
- Google Cloud コンソールのプロジェクト セレクタ ページで、 Google Cloud プロジェクトを選択するか、 作成します。
- Database Migration Service、Compute Engine、Cloud Storage、Cloud SQL Admin API を有効にします。
必要なロール
Database Migration Service で移行ジョブを作成するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
データベース移行管理者(
roles/datamigration.admin
) -
ストレージ管理者(
roles/storage.admin
) -
Cloud SQL 編集者(
roles/cloudsql.editor
)
ロールの付与の詳細については、 アクセスの管理をご覧ください。
これらの事前定義ロールには、Database Migration Service を使用して同種の SQL Server 移行を実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
Database Migration Service で同種の SQL Server 移行を実行するには、次の権限が必要です。
datamigration.*
resourcemanager.projects.get
resourcemanager.projects.list
cloudsql.instances.create
cloudsql.instances.get
cloudsql.instances.list
cloudsql.databases.get
cloudsql.databases.delete
cloudsql.operations.get
compute.machineTypes.list
compute.machineTypes.get
compute.projects.get
storage.buckets.create
storage.buckets.list
storage.objects.list
カスタムロールや他の 事前定義ロールを使用して、これらの権限を取得することもできます。
設定を定義して移行ジョブを作成する
移行ジョブを作成するには、次の操作を行います。
コンソール
- Google Cloud コンソールで、[移行ジョブ] ページに移動します。
- [移行ジョブを作成] をクリックします。
移行ジョブ構成ウィザードのページが開きます。このウィザードには、各構成ステップを案内する複数のパネルがあります。
[保存して終了] をクリックすると、移行ジョブの作成を一時停止できます。その時点で入力したデータはすべて、下書きの移行ジョブに保存されます。下書きの移行ジョブは後で完了できます。 ドラフト移行ジョブを更新するをご覧ください。
- [開始] ページで、次の情報を入力します。
- 移行ジョブ名
これは、移行ジョブのわかりやすい名前です。この値は、 Google Cloud コンソールに表示されます。
- 移行ジョブ ID
これは、移行ジョブの機械読み取り可能な識別子です。この値は、Database Migration Service の Google Cloud CLI コマンドまたは API を使用して移行ジョブを操作する場合に使用します。
- [移行元データベース エンジン] リストから [SQL Server] または [Amazon RDS for SQL Server] を選択します。
[移行先のデータベース エンジン] フィールドと [移行ジョブの種類] フィールドは自動的に入力され、変更できません。
- 移行ジョブ名
- [保存して次へ] をクリックします。
- [ソースを定義する] ページで、次の操作を行います。
- プルダウン メニューを使用して、移行元の接続プロファイルを選択します。
ソース接続プロファイルをまだ作成していない場合は、プルダウン メニューで [接続プロファイルを作成] をクリックします。接続プロファイルの作成の詳細については、 ソース接続プロファイルを作成するをご覧ください。
- 移行で差分バックアップ ファイルを使用する場合は、[ソース構成をカスタマイズ] セクションで [差分バックアップを使用する] チェックボックスをオンにします。
差分バックアップは、フル バックアップ以降にデータベースに追加された大量のデータを複製する必要がある場合に役立ちます。また、複数のトランザクション ログ ファイルをアップロードするのではなく、一括で処理する場合にも便利です。サポートされているバックアップ タイプの詳細については、 サポートされているバックアップ ファイルの種類をご覧ください。
差分バックアップを使用する場合は、Cloud Storage バケットに
diff
フォルダを作成してください。 バックアップ ファイルを Cloud Storage バケットに保存するをご覧ください。 - [保存して次へ] をクリックします。
- プルダウン メニューを使用して、移行元の接続プロファイルを選択します。
- [宛先の定義] ページで、プルダウン メニューを使用して宛先接続プロファイルを選択します。
宛先接続プロファイルをまだ作成していない場合は、プルダウン メニューで直接 [接続プロファイルを作成] をクリックします。接続プロファイルの作成の詳細については、 宛先接続プロファイルを作成するをご覧ください。
- [保存して次へ] をクリックします。
- [移行データベースの構成] ページで、次の操作を行います。
- [移行するデータベースを選択する] セクションで、チェックボックスを使用して、この移行ジョブに含めるデータベースを選択します。このリストは、バックアップ ファイル用に Cloud Storage バケットに作成したフォルダに基づいて入力されます。
データベースは後で移行ジョブに追加または削除できます。 移行ジョブにデータベースを追加または削除するをご覧ください。
- (省略可)暗号化されたバックアップを使用する場合は、バックアップの暗号鍵を指定します。暗号化されたバックアップの使用の詳細については、
暗号化されたバックアップを使用するをご覧ください。
次の操作を行ってください:
- 移行に選択したデータベースの横にある [詳細を編集] をクリックします。
[暗号化] サイドパネルが開きます。
- [暗号鍵] プルダウン メニューを使用して鍵を選択します。
- [Password] フィールドに暗号鍵のパスワードを入力します。
- [Save and exit] をクリックします。
- 移行に選択したデータベースの横にある [詳細を編集] をクリックします。
- [移行するデータベースを選択する] セクションで、チェックボックスを使用して、この移行ジョブに含めるデータベースを選択します。このリストは、バックアップ ファイル用に Cloud Storage バケットに作成したフォルダに基づいて入力されます。
- [保存して次へ] をクリックします。
- [移行ジョブのテストと作成] で、次の操作を行います。
- (省略可)[ジョブをテスト] をクリックして、Database Migration Service がすべてのバックアップ ファイルを正常に識別し、必要なネットワーク接続を確立できるかどうかを確認します。
テストに失敗した場合は、エラー メッセージを参照して問題に対処し、テストを再度実行できます。発生する可能性のあるエラーの詳細については、 問題の診断をご覧ください。
- [ジョブを作成して開始] をクリックして移行を開始します。
移行ジョブを別の時間に実行する場合は、[保存] をクリックして後で戻り、ジョブを実行します。 移行ジョブを開始するをご覧ください。
- (省略可)[ジョブをテスト] をクリックして、Database Migration Service がすべてのバックアップ ファイルを正常に識別し、必要なネットワーク接続を確立できるかどうかを確認します。
gcloud
このサンプルでは、オプションの --no-async
フラグを使用して、すべてのオペレーションが同期的に実行されます。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-async
フラグをスキップして、コマンドを非同期で実行できます。その場合は、
gcloud database-migration operations describe
コマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。
後述のコマンドデータを使用する前に、次のように置き換えます。
- MIGRATION_JOB_ID は、移行ジョブの機械読み取り可能な識別子に置き換えます。この値は、Database Migration Service の Google Cloud CLI コマンドまたは API を使用して移行ジョブを操作する場合に使用します。
- REGION は、移行ジョブを保存するリージョン ID に置き換えます。
- MIGRATION_JOB_NAME は、移行ジョブのわかりやすい名前に置き換えます。この値は、 Google Cloud コンソールの Database Migration Service に表示されます。
- SOURCE_CONNECTION_PROFILE_ID は、ソース接続プロファイルの機械読み取り可能な識別子に置き換えます。
- DESTINATION_CONNECTION_PROFILE_ID は、移行先接続プロファイルの機械読み取り可能な ID に置き換えます。
- COMMA_SEPARATED_DATABASE_ID_LIST は、バックアップ ファイルから移行する SQL Server のデータベース識別子のカンマ区切りリストに置き換えます。これらの ID は、
Cloud Storage のデータベース フォルダ名と同じにする必要があります。
例:
--sqlserver-databases=my-business-database,my-other-database
- 差分バックアップ構成: 差分バックアップ ファイルを使用して移行する場合は、コマンドに
--sqlserver-diff-backup
フラグを追加します。デフォルトでは、移行ジョブは差分バックアップ ファイルを使用しず、Cloud Storage バケット内のdiff
フォルダを無視します。サポートされているバックアップ ファイルの詳細については、 サポートされているバックアップ ファイルの種類をご覧ください。
- (省略可)MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS は、Cloud Storage 内の暗号鍵へのパスと関連するデータベース ID をマッピングする構成ファイルへのローカル ディスクパスに置き換えます。このマッピング ファイルの作成方法については、暗号化されたバックアップを使用するをご覧ください。
例:
--sqlserver-encrypted-databases=~/encryption-keys-mapping-file.json
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud database-migration migration-jobs \ create MIGRATION_JOB_ID \ --no-async \ --region=REGION \ --display-name=MIGRATION_JOB_NAME \ --source=SOURCE_CONNECTION_PROFILE_ID \ --destination=DESTINATION_CONNECTION_PROFILE_ID \ --sqlserver-databases=COMMA_SEPARATED_DATABASE_ID_LIST \ --sqlserver-encrypted-databases=MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS \ --type=CONTINUOUS
Windows(PowerShell)
gcloud database-migration migration-jobs ` create MIGRATION_JOB_ID ` --no-async ` --region=REGION ` --display-name=MIGRATION_JOB_NAME ` --source=SOURCE_CONNECTION_PROFILE_ID ` --destination=DESTINATION_CONNECTION_PROFILE_ID ` --sqlserver-databases=COMMA_SEPARATED_DATABASE_ID_LIST ` --sqlserver-encrypted-databases=MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS ` --type=CONTINUOUS
Windows(cmd.exe)
gcloud database-migration migration-jobs ^ create MIGRATION_JOB_ID ^ --no-async ^ --region=REGION ^ --display-name=MIGRATION_JOB_NAME ^ --source=SOURCE_CONNECTION_PROFILE_ID ^ --destination=DESTINATION_CONNECTION_PROFILE_ID ^ --sqlserver-databases=COMMA_SEPARATED_DATABASE_ID_LIST ^ --sqlserver-encrypted-databases=MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS ^ --type=CONTINUOUS
次のようなレスポンスが返されます。
Waiting for migration job [MIGRATION_JOB_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created migration job MIGRATION_JOB_ID [OPERATION_ID]
これで移行ジョブが作成されました。移行プロセスに進みます。
- (省略可) 移行ジョブテストを実行して、Database Migration Service が必要なすべての移行元エンティティと移行先エンティティに到達できるかどうかを確認します。
- 移行ジョブを開始して、移行先インスタンスへのデータの移動を開始します。