エラーのトラブルシューティング
移行ジョブ プロセスで、ランタイム中にエラーが発生することがあります。
- エラーによっては、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 の移行先インスタンスに、移行ジョブに含まれるデータベースと同じ名前のデータベースがすでに含まれている。 | 名前の競合を解消します。 Error: database already exists in destination をご覧ください。 |
エラー メッセージ:
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 の移行先インスタンスに複製される順序を制御します。 | 最新のトランザクション ログファイルのファイル名で使用されているエポック タイムスタンプを確認して調整します。 欠陥のあるトランザクション ログ名を調整するをご覧ください。 |
エラー: 宛先にデータベースがすでに存在します
次のエラー メッセージが表示される。
The following database already exists in destination: {database_name}
次のような問題が考えられます
Cloud SQL の移行先インスタンスに、移行ジョブに含まれるデータベースと同じ名前のデータベースがすでに含まれている。
次の方法をお試しください
データベースの重複の問題を解決する方法は、移行シナリオによって異なります。次のいずれかの方法をお試しください。
ソースの Cloud Storage バケットの名前を変更して、別の名前でデータベースを移行します。
Database Migration Service が移行先の Cloud SQL インスタンスに作成するデータベースの名前は、バックアップ ファイルを保存する Cloud Storage のフォルダ名から派生します。名前を共有する 2 つの異なるデータベースがあり、両方を Cloud SQL の移行先に必要とする場合は、フォルダの名前を変更して移行ジョブを再作成し、名前の競合を回避できます。
次の手順を行います。
- 名前の競合の影響を受けるソース データベースの新しいフォルダを作成します。バックアップ ファイルを 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 ファイルがない期間のトランザクション ログ エクスポート関数を再実行してみてください。