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 は、移行元接続プロファイルの機械可読 ID に置き換えます。
- DESTINATION_CONNECTION_PROFILE_ID は、移行先接続プロファイルの機械可読形式の識別子に置き換えます。
- COMMA_SEPARATED_DATABASE_ID_LIST: バックアップ ファイルから移行する SQL Server のデータベース識別子のカンマ区切りリスト。これらの識別子は、
Cloud Storage のデータベース フォルダ名と同じである必要があります。
例:
--sqlserver-databases=my-business-database,my-other-database
- 差分バックアップ構成: 移行に差分バックアップ ファイルを使用する場合は、コマンドに
--sqlserver-diff-backup
フラグを追加します。デフォルトでは、移行ジョブは差分バックアップ ファイルを使用せず、Cloud Storage バケット内のdiff
フォルダを無視します。サポートされているバックアップ ファイルの詳細については、 サポートされているバックアップ ファイル形式をご覧ください。
- (省略可)Cloud Storage の暗号鍵へのパスと関連するデータベース ID をマッピングする構成ファイルへのローカル ディスクパスを含む MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS。このマッピング ファイルの作成方法について詳しくは、暗号化されたバックアップを使用するをご覧ください。
例:
--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 が必要な移行元エンティティと移行先エンティティにすべて到達できるかどうかを確認します。
- 移行ジョブを開始して、移行先インスタンスへのデータの移動を開始します。