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.getresourcemanager.projects.listcloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.databases.getcloudsql.databases.deletecloudsql.operations.getcompute.machineTypes.listcompute.machineTypes.getcompute.projects.getstorage.buckets.createstorage.buckets.liststorage.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 バケットにバックアップ ファイルを保存するをご覧ください。 . - [保存して次へ] をクリックします。
- プルダウン メニューを使用して、移行元接続プロファイルを選択します。
- On the [移行先を定義] ページで、プルダウン
メニューを使用して移行先接続プロファイルを選択します。
移行先接続プロファイルがまだない場合は、 プルダウン メニューで [接続プロファイルの作成] を直接クリックできます。接続プロファイルの作成の詳細については、 移行先接続プロファイルを作成するをご覧ください。
- [保存して次へ] をクリックします。
- [移行データベースを構成] ページで、次の操作を行います。
- [移行するデータベースを選択] セクションで、チェックボックスを使用して、この移行ジョブに含めるデータベースを選択します。このリストは、バックアップ ファイルの Cloud Storage バケットに作成したフォルダに基づいて入力されます。
移行ジョブへのデータベースの追加と削除は後で行うことができます。 移行ジョブからデータベースを追加または削除するをご覧ください。
- (省略可)暗号化されたバックアップを使用する場合は、バックアップの暗号鍵
を指定します。暗号化されたバックアップの使用の詳細については、
暗号化されたバックアップを使用するをご覧ください。
次の操作を行います。
- 移行用に選択したデータベースの横にある [**詳細を編集**] をクリックします。
[暗号化] サイドパネルが開きます。
- [**暗号鍵**] プルダウン メニューを使用して鍵を選択します。
- [パスワード] 欄に暗号鍵のパスワードを入力します。
- [保存して終了] をクリックします。
- 移行用に選択したデータベースの横にある [**詳細を編集**] をクリックします。
- [移行するデータベースを選択] セクションで、チェックボックスを使用して、この移行ジョブに含めるデータベースを選択します。このリストは、バックアップ ファイルの 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 : 移行ジョブを保存するリージョンの識別子。
- MIGRATION_JOB_NAME 移行ジョブの人間が読める 名前。この値は、 コンソールの Google Cloud Database Migration Service に表示されます。
- SOURCE_CONNECTION_PROFILE_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フォルダを無視します。サポートされているバックアップ ファイルの詳細については、 サポートされているバックアップ ファイル形式をご覧ください。
- (省略可)MAPPING_FILE_FOR_PATHS_TO_ENCRYPTION_KEYS
Cloud Storage 内のパスを、関連するデータベース識別子を持つ暗号鍵にマッピングする構成ファイルのローカル ディスクパス。
このマッピング
ファイルの作成方法の詳細については、
暗号化されたバックアップを使用するをご覧ください。
例:
--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 が必要な移行元と移行先のエンティティに到達できるかどうかを確認します。
- 移行ジョブを開始して、データの移行先インスタンスへの移動を開始します。