エラーのトラブルシューティング
移行ジョブ プロセスでは、ランタイム中にエラーが発生することがあります。
- 一部のエラーについては、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 は、バージョン間の互換性ガイドラインを満たしている場合にのみ、下位バージョンから上位バージョンへのクロス バージョン移行をサポートします。 サポートされている移行元および移行先のデータベースをご覧ください。 |
移行先の Cloud SQL for SQL Server インスタンスを再作成して、新しい 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 つ以上のデータベースにデータを複製できない場合、データベースのリストに [失敗] ステータスが表示されます。 | さまざまな移行ジョブのエラー。 | [エラー] 列で、[エラーを表示] をクリックしてエラーを修正します。エラーを修正したら、[Restart] をクリックします。 |
エラー: 宛先にデータベースがすでに存在します
次のエラー メッセージが表示されます。
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 ファイルの期間のトランザクション ログ エクスポート関数を再実行してみてください。