エラーのトラブルシューティング
移行ジョブのプロセスで、ランタイム中にエラーが発生することがあります。
- 一部のエラーについては、Database Migration Service が自動的に失敗したオペレーションを再試行して、移行プロセスを続行し、中断を回避します。 移行ジョブのステータスが [エラーありで実行中] に変わります。このステータス は、Database Migration Service がエラーの影響を受けずにデータの移行を続行していることを示します 。
- 一部のエラーは回復できません。Database Migration Service で回復不能な エラーが発生すると、移行ジョブのステータスが [**失敗**] に変わります。 このような場合は、問題を修正した後に移行ジョブを再起動する必要があります。
エラーをトラブルシューティングするには、影響を受ける移行ジョブに移動してエラーを表示し、エラー メッセージに記載されている手順に沿って操作します。Cloud SQL の移行先インスタンスの Cloud Monitoring ログを表示して、詳細を確認することもできます。移行ジョブの詳細ページの Cloud Monitoring リンクを使用します。
次の表に、問題の例と解決方法を示します。
| この問題については... | 次のような問題が考えられます... | 次のことを試します... |
|---|---|---|
エラー メッセージ: The BAK file's database major version number
{backup_version_num} must not be higher than the current database
major version number {your Cloud SQL for SQL Server version number} |
Cloud SQL for SQL Server の移行先インスタンスで使用しているバージョンよりも新しい SQL Server
バージョンからバックアップ ファイルをインポートしようとしています。
Database Migration Service は、バージョン間の互換性ガイドラインを満たしている場合にのみ、古いバージョンから 新しいバージョンへのクロスバージョン移行をサポートします。 サポートされているソースと宛先のデータベースをご覧ください。 |
新しい SQL Server バージョンを使用するように Cloud SQL for SQL Server の移行先インスタンスを再作成し、新しいインスタンスで移行プロセスを再試行します。 |
エラー メッセージ:
The following database already exists in destination: {database_name}.
|
Cloud SQL の移行先インスタンスに、移行ジョブに含まれるデータベースのいずれかと同じ名前のデータベースがすでに存在します。 | 名前の競合を解消します。 エラー: 移行先にデータベースがすでに存在しますをご覧ください。 |
エラー メッセージ:
Permission denied for {cloudsql.databases.get} on the Database Migration Service service account. |
Database Migration Service サービス アカウントに権限がありません。 | Database Migration Service サービス アカウントに不足している権限を追加します。 IAM によるアクセス制御をご覧ください。 |
エラー メッセージ:
Missing WAL file at Log Sequence Number (LSN) {log_number_here} |
トランザクション ログファイルで使用されているエポック タイムスタンプが、含まれている更新の順序に関して正しくない可能性があります。 Database Migration Service は、ログ シーケンス番号とエポック タイムスタンプを使用して、トランザクション ログファイルが Cloud SQL の移行先インスタンスにレプリケートされる順序を制御します。 | 最新の トランザクション ログファイルのファイル名で使用されているエポック タイムスタンプを確認して調整します。 誤ったトランザクション ログ名を調整するをご覧ください。 |
| 選択したデータベースを移行し、移行ジョブが 1 つ以上のデータベースにデータをレプリケートできない場合、データベースのリストに [失敗] ステータスが表示されます。 | 移行ジョブのエラー。 | [エラー] 列で [エラーを表示] をクリックして、エラーを修正します。エラーを修正したら、[再起動] をクリックします。 |
エラー: 移行先にデータベースがすでに存在します
The following database already exists in destination: {database_name} というエラー メッセージが表示されます。
次のような問題が考えられます
Cloud SQL の移行先インスタンスに、移行ジョブに含まれるデータベースのいずれかと同じ名前のデータベースがすでに存在します。
次の方法をお試しください
移行シナリオに応じて、重複するデータベースの問題を解決する方法は異なります。次のいずれかの操作を行います。
移行元 Cloud Storage バケットの名前を変更して、別の名前でデータベースを移行します 。
Database Migration Service が移行先の Cloud SQL インスタンスに作成するデータベースの名前は、バックアップ ファイルを保存する Cloud Storage のフォルダ名から派生します。名前が同じで、Cloud SQL の移行先に両方必要なデータベースが 2 つある場合は、フォルダの名前を変更して移行ジョブを再作成することで、名前の競合を回避できます。
次の手順を行います。
- 名前の競合の影響を受けるソース データベースの新しいフォルダを作成します。 Cloud Storage バケットにバックアップ ファイルを保存する をご覧ください。
- 移行ジョブを再作成します。
移行ジョブを作成するをご覧ください。
既存の移行ジョブに新しいデータベースを追加することはできますが、移行ジョブからデータベースを削除することはできません。そのため、移行ジョブ全体を再作成する必要があります。
Cloud SQL for SQL Server インスタンスから重複するデータベースを削除します。
Cloud SQL の移行先インスタンスのデータベースが重複している場合は、 インスタンスから削除して移行ジョブを続行できます。 Cloud SQL for SQL Server のドキュメントの データベースを削除するをご覧ください。
順序が異なる WAL ファイルのトランザクション ログファイル名を調整する
次のような問題が考えられます
トランザクション ログファイルで使用されているエポック タイムスタンプが、含まれている更新の順序に関して正しくない可能性があります。 Database Migration Service は、ログ シーケンス番号とエポック タイムスタンプを使用して、トランザクション ログファイルが Cloud SQL の移行先インスタンスにレプリケートされる順序を制御します。
次の方法をお試しください
ファイルのアップロードが遅延したり、順序が異なったりする可能性があります。問題が解決するまで数分待つか、Cloud Storage バケットにファイルが不足していないか確認してください。
問題が解決しない場合は、トランザクション ログファイルのファイル名のエポック タイムスタンプを確認して調整します。
次の手順を行います。
- 移行先の Cloud SQL for SQL Server インスタンスで、トランザクション ログのインポート オペレーションのリストを確認します。コンソールで、 Google Cloud [Cloud SQL のインスタンス] ページに移動します。
- [すべてのオペレーションを表示]> [SQL Server のエラーログを表示] をクリックします。
- トランザクション ログファイルのすべてのインポート オペレーションを表示し、ファイル名に正しいエポック タイムスタンプが含まれていることを確認します 。
- 最近のトランザクション ログファイルで、順序が異なる エポック タイムスタンプの名前が使用されている場合は、Cloud Storage バケットに移動してファイルの名前を変更します。 Database Migration Service は変更を自動的に検出し、関連するトランザクション ログファイルのインポートを試みます 。
- Amazon RDS のみ: S3 へのエクスポート プロセスで、一部のトランザクション ログファイル が欠落している可能性があります。欠落している WAL ファイルの周辺期間で、トランザクション ログのエクスポート機能を再実行してみてください。