すべてのプロダクト
Search
ドキュメントセンター

PolarDB:セルフマネージド MySQL データベースへの復元

最終更新日:Jun 24, 2026

PolarDB for MySQL では、クラウドディスクベースクラスターからスナップショットバックアップを CSV ファイルまたは SQL ファイルとしてエクスポートできます。このファイルを使用して、セルフマネージド MySQL データベースにデータを復元できます。

重要

Python 復元スクリプトは現在メンテナンスされていません。使用する前にスクリプトを評価してください。

前提条件

PolarDB for MySQL クラスター要件

重要

復元を成功させるには、セルフマネージドデータベースのバージョンがソース PolarDB for MySQL クラスターのバージョンと一致している必要があります。

クラスターは以下の要件を満たす必要があります。

  • クラスター: この機能は、エンタープライズ版クラスターの Cluster Edition でのみ利用可能です。

  • リージョン:中国 (成都) 、中国 (広州) 、中国 (青島) 、中国 (北京) 、中国 (上海) 、中国 (張家口) 、中国 (杭州) 、中国 (深セン) 、香港 (中国) 、マレーシア (クアラルンプール) 、インドネシア (ジャカルタ) 、日本 (東京) 、シンガポール、米国 (シリコンバレー) 、米国 (バージニア) 、ドイツ (フランクフルト) 。

    説明

    この機能は近日中に他のリージョンでも利用可能になります。

  • その他

    • RAM ユーザーはバックアップファイルをダウンロードする権限を持っている必要があります。RAM ユーザーに権限を付与するには、RAM ユーザー権限をご参照ください。

    • バックアップデータは暗号化されていません。暗号化された PolarDB クラスターからバックアップファイルをダウンロードすることはできません。

    • クラスターまたはインスタンスごとに、一度に 1 つのダウンロードタスク (実行中または失敗したもの) のみが許可されます。

セルフマネージド MySQL データベース要件

セルフマネージド MySQL データベースで local_infile パラメータが有効になっていることを確認してください。

説明
  • local_infile パラメーターのステータスを確認します。値が ON であれば、パラメーターが有効であることを示します: SHOW GLOBAL VARIABLES LIKE 'local_infile';

  • local_infile パラメーターを有効にします: SET GLOBAL local_infile=1;

制限事項

ダウンロードしたバックアップからセルフマネージド MySQL データベースにデータを復元する場合、以下の制限事項が適用されます。

  • 以下のバイナリフィールドタイプはサポートされていません: BITBINARYVARBINARYTINYBLOBBLOBMEDIUMBLOBLONGBLOB

    説明

    バックアップセットにこれらのフィールドタイプが含まれている場合、そのフィールドは 16進数形式で保存されます。そのため、load data local infile コマンド内で UNHEX 関数を手動で使用し、16進数値を元のバイナリ形式に戻す必要があります。

  • 以下の空間フィールドタイプはサポートされていません: GEOMETRYPOINTLINESTRINGPOLYGONMULTIPOINTMULTILINESTRINGMULTIPOLYGONGEOMETRYCOLLECTION

使用上の注意

  • PolarDB for MySQL クラスターとセルフマネージド MySQL データベースには、同じデータベースバージョンを使用してください。異なるバージョン間の非互換性により、復元操作が失敗する可能性があります。

  • 復元コマンドを実行する前に、ターゲットデータベースにバックアップデータと同じ名前のデータベースまたはテーブルが含まれていないことを確認してください。これにより、データの競合や潜在的なデータ損失を防ぎます。競合するデータベースまたはテーブルは事前に削除してください。

  • 復元タスクを中断すると、データが不完全になったり、タスクが失敗したりする可能性があります。

手順

この例では、PolarDB for MySQL クラスターの SQL バックアップファイルから、ECS インスタンス (CentOS 7.8 64 ビット) 上のセルフマネージド MySQL データベースへデータを復元する方法を示します。お使いの環境に合わせてコマンドを調整してください。

  1. PolarDB コンソールで、バックアップファイルのダウンロード機能を使用して、クラスターのバックアップファイルを CSV 形式または SQL 形式に変換します。次に、ファイルをローカルマシンまたは ECS インスタンスにダウンロードします。

    • バックアップファイルが .tar.gz 形式の場合は、次のコマンドを実行します:

      tar -izxvf <compressed_file_name>.tar.gz -C <destination_directory>
      # 例: backup.tar.gz ファイルを /home/mysql/data ディレクトリに解凍します。コマンド内のファイル名とディレクトリは参考用です。
      tar -izxvf backup.tar.gz -C /home/mysql/data
    • バックアップファイルが .tar.zst 形式の場合は、次のコマンドを実行します:

      zstd -d -c <compressed_file_name>.tar.zst | tar -xvf - -C <destination_directory>
      # 例: backup.zst ファイルを /home/mysql/data ディレクトリに解凍します。コマンド内のファイル名とディレクトリは参考用です。
      zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
  2. (任意) バックアップファイルが指定されたディレクトリ (/home/mysql/data) に解凍されていることを確認します。

    ls -al /home/mysql/data
  3. Python スクリプトをローカルマシンまたは ECS インスタンスにダウンロードします。

    重要

    このスクリプトは参考用であり、お使いの環境に合わせて変更が必要な場合があります。慎重に使用してください。

  4. 次のコマンドを実行して、restore_from_downloads.py スクリプトを実行可能にします:

    chmod +x ./restore_from_downloads.py
  5. CSV ファイルまたは SQL ファイルからセルフマネージドデータベースにデータを復元します。

    python ./restore_from_downloads.py <path_to_csv_or_sql_directory> <database_endpoint> <database_port> <database_username> <database_password>

    python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"
    説明

    ターミナルウィンドウを閉じると、スクリプトの実行が停止します。スクリプトをバックグラウンドで実行するには、以下のコマンドを使用してください。

     nohup python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********" > app.log 2>&1 &

    出力

    [root@ixxx ~]# python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"
    [INFO]: restore data from /home/mysql/data to 127.0.0.1:3306
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore structure database: zhxxx ends
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore structure table: zhxxx ends
    [INFO]: trying to exec: mysql -h127.0.0.1 -P3306 -uroot -p#Tes******** </home/mysql/data/zxxx
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore data [1/1] of table zhxxx.zhxxx
    重要
    • セルフマネージドデータベースに、バックアップ内のデータベースと同じ名前のデータベースが含まれていないことを確認してください。含まれていると、復元操作は失敗します。

    • データベースのユーザー名またはパスワードに、番号記号 (#) やスペースなどの特殊文字が含まれている場合、その値をコマンドラインパラメーターとして渡す際は、二重引用符 ("") で囲む必要があります。 たとえば、データベースのパスワードが #1234 の場合、コマンドラインで "#1234" を渡す必要があります。

    • Command 'python' not found のようなエラーが表示された場合、Python がインストールされていないか、システムの PATH に含まれていないことを意味します。 Python のインストール状況と、実行に使用するコマンドを確認してください。 たとえば、Python 3 がインストールされている場合は、python3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx" を使用できます。

    • Python スクリプトの実行時に警告メッセージ [Warning] Using a password on the command line interface can be insecure が表示されるのは、スクリプトで mysql -h<database endpoint> -P<database port> -u<database username> -p<database password> -e<SQL> コマンドが使用されているためです。この方法は、システムの他のユーザーが ps などのコマンドを実行してパスワードを表示できるため、安全ではありません。この警告は、リカバリ操作には影響しません。リカバリが完了したら、自己管理型 MySQL データベースにログインして、アカウントのパスワードを変更できます。

    • Access denied for user 'xxx'@'xxx' (using password: YES) のようなエラーは、データベースのユーザー名またはパスワードが正しくないことを示します。認証情報が正しく入力されていることを確認してください。