バージョンが異なる DB間のマイグレーション

Prev Next

VPC環境で利用できます。

Database Migration Serviceの利用中に次のような問題が発生することがあります。問題ごとの原因と解決方法を確認し、適切に対処してください。

互換性問題

MySQL / MariaDBの下位バージョンから上位バージョンへのマイグレーション時に互換性に関するエラーが発生します。

原因

同じ Majorバージョン間のマイグレーションを推奨していますが、Source DBと Target DBのバージョンが異なっていても Database Migration Serviceを利用できます。例えば、MySQL 5.7バージョンから MySQL 8.0バージョンにマイグレーションできます。ただし、EOLした MySQL / MariaDBバージョンではマイグレーションの過程で互換性に関するエラーメッセージが発生することがあります。

解決方法

マイグレーションしようとする Source DB MySQL / MariaDBのバージョンのサポートが終了していないかご確認ください。サポートが終了した MySQL / MariaDBバージョンではマイグレーションの過程で互換性に関するエラーメッセージが発生することがあります。

Source DB MySQL 5.7バージョンおよび MariaDB 10.1以降のバージョンから Target DB MySQL 8.0バージョンへのマイグレーション時のエラー

Source DB MySQL 5.7バージョンおよび MariaDB 10.1以降のバージョンから Target DB MySQL 8.0バージョンへのマイグレーション時にエラーが発生します。

原因

MySQL 5.7バージョンと MariaDB 10.1.7以降のバージョンで Default値でサポートする sql_mode='NO_AUTO_CREATE_USER' 設定は MySQL 8.0バージョンからはサポートしません。

解決方法

  • Source DBに sql_mode='NO_AUTO_CREATE_USER' 設定が適用されている場合は、削除後にマイグレーションを行ってください。Import進行中にこのエラーを確認した場合は、マイグレーションを削除した後に再試行してください。
  • バックアップ方式: mydumperを選択すると、sql_mode関連エラーは発生しません。
  • 既存のアプリケーションと MySQL 8.0間の互換性問題の有無については、サービス移行前に点検を完了してください。

MySQL 5.7.40バージョンで発生するレプリケーション整合性問題

MySQL 5.7.40バージョンでレプリケーション整合性の問題が発生します。

原因

MySQL 5.7.40バージョンの場合、独自の MySQL仕様上 mysqldumpのバグが存在し、レプリケーション整合性の問題が発生することがあります。

解決方法

mydumperバックアップ方式を選択するか、Target DBのバージョンを MySQL 5.7.40以外のバージョンに設定することをお勧めします。

注意
  • MySQL 5.7バージョン、MariaDB 10.xバージョンでは Procedure、Trigger、Functionが作成された時点に対する sql-modeを記憶して mysqldump実行時に記入します。したがって、sql_mode='NO_AUTO_CREATE_USER' 設定解除後にもこのエラーによるマイグレーション停止が再現される場合は、Target DB MySQL 5.7バージョンにマイグレーションを行ってください。
  • Source DB 5.7から Target DB 8.0バージョンへのマイグレーションを希望する場合は、mydumper方式を選択するか、事前準備をご参照ください。

「Target DBではサポートしていない Collationが含まれています。」エラーメッセージ

「Target DBではサポートしていない Collationが含まれています。」というエラーメッセージが表示されます。

原因

Source DBの MySQLバージョンが8.0で、Target DBが5.7以下バージョンの場合に発生するエラーメッセージです。MySQL 8.0バージョンでサポートする Default Collationである「utf8mb4_0900_ai_ci」は、5.7バージョンではサポートしません。

解決方法

Source DBの Database、Table、View、Procedure、Functionなどの Collationオプションを変更した後にマイグレーションを行ってください。

参考

本ガイドで必要な情報が見つからない場合やさらに必要な情報がある場合は、いつでも以下のフィードバックアイコンをクリックして、ご意見をお寄せください。いただいたご意見を参照して、より有益な情報を提供できるよう努力してまいります。

Primary Keyのないテーブルのマイグレーションエラー

Primary Keyのないテーブルが含まれている場合、Target DB MySQL 8.4以降のバージョンへのマイグレーション時、Importing段階でエラーが発生します。

原因

Cloud DB for MySQL 8.4バージョンから sql_require_primary_key 設定のデフォルト値が ONに変更されたため、Primary Keyのないテーブルは Target DBに作成できません。

解決方法

  • 以下のクエリを実行し、Source DBに Primary Keyのないテーブルがあるかご確認ください。
    SELECT t.TABLE_SCHEMA, t.TABLE_NAME
    FROM information_schema.TABLES t
    LEFT JOIN information_schema.TABLE_CONSTRAINTS c
      ON c.TABLE_SCHEMA = t.TABLE_SCHEMA
     AND c.TABLE_NAME = t.TABLE_NAME
     AND c.CONSTRAINT_TYPE = 'PRIMARY KEY'
    WHERE t.TABLE_TYPE = 'BASE TABLE'
      AND t.TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
      AND c.CONSTRAINT_TYPE IS NULL;
    
  • 照会結果がある場合は、マイグレーションを開始する前に Target DBの DB Configで sql_require_primary_key 値を OFFに変更してください。
  • Importing段階でこのエラーが既に発生している場合は、マイグレーションを削除してから設定を変更し、再度実行してください。
  • Primary Keyのないテーブルは、行ベースのレプリケーションのパフォーマンス低下の原因となる可能性があるため、マイグレーション完了後に Primary Keyを追加することをお勧めします。