ApsaraDB RDS for MySQL のバックアップダウンロード機能を使用して、クラウドディスクを使用する ApsaraDB RDS for MySQL インスタンスのスナップショットバックアップファイルを CSV ファイルまたは SQL ファイルとしてエクスポートできます。その後、CSV ファイルまたは SQL ファイルを使用して、RDS インスタンスのデータを自己管理 MySQL インスタンスに復元できます。
前提条件
ApsaraDB RDS for MySQL インスタンスは、次の要件を満たしています。
データベースバージョン: 8.0 または 5.7 (サーバーレスインスタンスがサポートされています)
ストレージタイプ: ESSD または高性能ディスク
ステータス: 実行中
説明この情報は、インスタンスの [基本情報] ページで表示できます。
高性能ディスクを使用し、データアーカイブ機能が有効になっているインスタンスでは、高度なダウンロード機能はサポートされていません。これらのインスタンスのダウンロードタスクは失敗します。
RDS インスタンスでは TDE (透過的データ暗号化) が無効になっています。インスタンス内のテーブルが TDE を使用して暗号化されている場合、復元中にエラーが発生します。この場合、復元前に暗号化されたテーブルを復号化する必要があります。詳細については、「TDE (透過的データ暗号化) を有効にする」をご参照ください。
自己管理 MySQL インスタンスでは、
local_infileパラメーターが ON に設定されています。説明local_infile パラメーターが ON に設定されているかどうかを確認するには、次の文を実行してその値を表示します:
SHOW GLOBAL VARIABLES LIKE 'local_infile';次の文を実行して
local_infileを設定できます:SET GLOBAL local_infile=1;
制限事項
ダウンロードした CSV ファイルまたは SQL ファイルを使用して自己管理 MySQL インスタンスにデータを復元する場合、次の制限事項に注意してください。
次のデータの型のフィールドはサポートされていません: BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、および LONGBLOB。
説明ダウンロードした CSV ファイルまたは SQL ファイルに前述のデータの型のフィールドが含まれている場合、フィールドは 16 進数表現で格納されます。CSV ファイルまたは SQL ファイルを自己管理 MySQL インスタンスにインポートすると、バイナリフィールドは文字列として処理されます。この場合、
LOAD DATA LOCAL INFILEコマンドで UNHEX 関数を呼び出して、フィールドを 16 進数表現から生のバイナリ文字列に変換する必要があります。mysqldumpを使用して BLOB 型のデータをバックアップし、自己管理 MySQL データベースにデータを復元できます。データのバックアップに使用するコマンド:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <Name of the self-managed database> --skip-triggers --skip-lock-tables > /tmp/<Name of the self-managed database>.sqlデータの復元に使用するコマンド:
mysql -h 127.0.0.1 -u Username -p Database name < Backup file name.sql
次の空間データの型のフィールドはサポートされていません: GEOMETRY、POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、および GEOMETRYCOLLECTION。
使用上の注意
スクリプト: この Topic で使用される
restore_from_downloads.pyスクリプトは参照用です。このスクリプトを使用する前に、互換性検証を実行してください。データベースエンジンバージョンの一貫性: RDS インスタンスと自己管理 MySQL インスタンスには、同じデータベースエンジンバージョンを使用することを推奨します。データベースエンジンのバージョンが異なると、互換性の問題が発生し、復元が失敗する可能性があります。
データベースまたはテーブル名の重複排除: 復元コマンドを実行する前に、自己管理 MySQL インスタンス内のデータベースまたはテーブルの名前が、RDS インスタンス内のデータベースまたはテーブルの名前と異なることを確認してください。そうしないと、復元は失敗します。
タスクの中断: 復元タスクを中断すると、完全なデータが復元されないか、復元タスクが失敗する可能性があります。注意して進めてください。
特殊文字: この Topic で提供されるコマンドのファイルパス、データベースアカウント、またはパスワードに、アンパサンド (&)、番号記号 (#)、またはスペースなどの特殊文字が含まれている場合は、二重引用符 ("") で囲んでください。例:
# ファイルパスにアンパサンド (&) が含まれている場合は、二重引用符 ("") で囲みます。 python ./restore_from_downloads.py "/path/to/data&test" 127.0.0.1 3306 root zhtpasswordtest # パスワードに番号記号とアットマーク (@) が含まれている場合は、二重引用符 ("") で囲みます。 python ./restore_from_downloads.py /data 127.0.0.1 3306 root "#Test@20250821"
手順
このセクションでは、SQL ファイルを使用して、クラウドディスクを使用する RDS インスタンスのデータを、64 ビット Alibaba Cloud Linux 3.2104 LTS を実行している Elastic Compute Service (ECS) インスタンス上の自己管理 MySQL インスタンスに復元する方法について説明します。他のオペレーティングシステムを使用する場合は、対応するコマンドを使用する必要があります。
バックアップファイルのダウンロードと解凍
ApsaraDB RDS コンソールにログインし、クラウドディスクを使用する RDS インスタンスのバックアップファイルを CSV ファイルまたは SQL ファイルに変換し、バックアップダウンロード機能を使用して、ファイルをコンピューターまたは ECS インスタンスにダウンロードします。
ダウンロードしたファイルを解凍します:
ダウンロードしたファイルが
.tar.gzフォーマットの場合、次のコマンドを実行します:tar -izxvf <Downloaded file name>.tar.gz -C <Directory that you want to decompress the file> # 次のサンプルコマンドは、backup.tar.gz ファイルを次のパスに解凍します: /home/mysql/data。ファイル名とディレクトリを実際の値に置き換えてください。 tar -izxvf backup.tar.gz -C /home/mysql/dataダウンロードしたファイルが
.tar.zstフォーマットの場合、次のコマンドを実行します:zstd -d -c <Downloaded file name>.tar.zst | tar -xvf - -C <Directory that you want to decompress the file> # 次のサンプルコマンドは、backup.zst ファイルを次のパスに解凍します: /home/mysql/data。ファイル名とディレクトリを実際の値に置き換えてください。 zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
任意。バックアップファイルが /home/mysql/data ディレクトリに解凍されているかどうかを確認します。
ls -al /home/mysql/data
復元スクリプトの準備
MySQL Python スクリプトをコンピューターまたは ECS インスタンスにダウンロードします。
重要このスクリプトは参照用です。要件に基づいてスクリプトを修正してください。
次のコマンドを実行して、
restore_from_downloads.pyファイルに必要な権限を付与します:chmod +x ./<Script name>.py # サンプルコマンド chmod +x ./restore_from_downloads.py
RDS インスタンスのデータを自己管理 MySQL インスタンスに復元する
python ./<Script name>.py <Path of the CSV or SQL file> <Database host> <Database port> <Username of the account> <Password of the account> # サンプルコマンド python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"出力:
重要Command 'python' not foundエラーメッセージが表示された場合、Python がインストールされていないか、Python スクリプトを実行するために使用されるコマンドが検索パスにありません。この場合、システムにインストールされている Python のバージョンと、Python スクリプトを実行するために使用されるコマンドを確認する必要があります。たとえば、Python 3 がインストールされている場合は、python3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx"コマンドを実行できます。
関連ドキュメント
このデータ復旧方法は、スナップショットバックアップファイルを使用してクラウドディスクを使用する RDS インスタンスのデータを復元する場合にのみ適用されます。プレミアムローカル SSD を使用する RDS インスタンスのデータを復元する方法の詳細については、「物理バックアップファイルから ApsaraDB RDS for MySQL インスタンスのデータを自己管理 MySQL データベースに復元する」または「論理バックアップファイルから ApsaraDB RDS for MySQL インスタンスのデータを自己管理 MySQL インスタンスに復元する」をご参照ください。
Alibaba Cloud が提供する移行サービスを使用して、RDS インスタンスから自己管理 MySQL インスタンスにデータを移行することもできます。詳細については、「ApsaraDB RDS for MySQL インスタンスから自己管理 MySQL データベースにデータを移行する」をご参照ください。
データ復旧方法の詳細については、「データ復旧方法の概要」をご参照ください。