ApsaraDB RDS for MySQL のバックアップダウンロード機能を使用して、クラウドディスクを使用する ApsaraDB RDS for MySQL インスタンスのスナップショットバックアップファイルを CSV ファイルまたは SQL ファイルとしてエクスポートできます。その後、CSV ファイルまたは SQL ファイルを使用して、RDS インスタンスのデータを自己管理 MySQL インスタンスに復元できます。
前提条件
RDS インスタンスは次の要件を満たしています。
RDS インスタンスは MySQL 8.0 または MySQL 5.7 を実行しています。サーバーレス RDS インスタンスがサポートされています。
RDS インスタンスは ESSD または Premium ESSD を使用しています。
説明RDS インスタンスの [基本情報] ページに移動して、上記の情報を取得できます。
Premium ESSD を使用する RDS インスタンスに対して データアーカイブ機能 を有効にしている場合、RDS インスタンスでは高度なダウンロード機能はサポートされていません。インスタンスからバックアップファイルをダウンロードすると、ダウンロードタスクは失敗します。
RDS インスタンスでは透過的データ暗号化 (TDE) が無効になっています。テーブルが TDE を使用して暗号化されている場合、復旧中にエラーが発生します。RDS インスタンスのデータを復元する前に、暗号化されたテーブルを復号化する必要があります。詳細については、「TDE を構成する」をご参照ください。
自己管理 MySQL インスタンスでは
local_infile
パラメーターが有効になっています。説明local_infile パラメーターが有効になっているかどうかを確認するには、
SHOW GLOBAL VARIABLES LIKE 'local_infile';
ステートメントを実行します。戻り値が ON の場合、パラメーターは有効になっています。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 <自己管理データベースの名前> --skip-triggers --skip-lock-tables > /tmp/<自己管理データベースの名前>.sql
データの復元に使用されるコマンド:
mysql -h 127.0.0.1 -u ユーザー名 -p データベース名 <バックアップファイル名.sql
次の空間データ型のフィールドはサポートされていません: GEOMETRY、POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION。
使用上の注意
データベースエンジンバージョンの整合性: RDS インスタンスと自己管理 MySQL インスタンスで同じデータベースエンジンバージョンを使用することをお勧めします。データベースエンジンバージョンが異なると、互換性の問題が発生し、復元に失敗する可能性があります。
データベースまたはテーブル名の重複排除: 復元コマンドを実行する前に、自己管理 MySQL インスタンス内のデータベースまたはテーブルの名前が RDS インスタンス内のデータベースまたはテーブルの名前と異なることを確認してください。これにより、データの競合やデータの損失を防ぎます。データの競合を引き起こす可能性のある重複したデータベースとテーブルを確認して削除することをお勧めします。
タスクの中断: 復元タスクを中断すると、完全なデータが復元されないか、復元タスクが失敗する可能性があります。注意して進めてください。
手順
このセクションでは、SQL ファイルを使用して、クラウドディスクを使用する RDS インスタンスのデータを、64 ビット CentOS 7.8 を実行している Elastic Compute Service (ECS) インスタンス上の自己管理 MySQL インスタンスに復元する方法について説明します。他のオペレーティングシステムを使用する場合は、対応するコマンドを使用する必要があります。
ApsaraDB RDS コンソールにログインし、クラウドディスクを使用する RDS インスタンスのバックアップファイルを CSV ファイルまたは SQL ファイルに変換し、ファイルをコンピューターまたは ECS インスタンスにダウンロードします。詳細については、「バックアップファイルをダウンロードする」をご参照ください。
次のコマンドを実行して、ダウンロードしたパッケージを解凍します。
tar -izxvf <パッケージ名>.tar.gz -C <パッケージから取得したファイルを格納するディレクトリ>
この例では、
backup.tar.gz
という名前のパッケージが/home/mysql/data
ディレクトリに解凍されます。パッケージ名とディレクトリ名は実際の名前に置き換えることができます。tar -izxvf backup.tar.gz -C /home/mysql/data
オプション。バックアップファイルが /home/mysql/data ディレクトリに解凍されているかどうかを確認します。
ls -al /home/mysql/data
MySQL Python スクリプト をコンピューターまたは ECS インスタンスにダウンロードします。
次のコマンドを実行して、
restore_from_downloads.py
ファイルに必要な権限を付与します。chmod +x ./restore_from_downloads.py
次のコマンドを実行して、CSV ファイルまたは SQL ファイルを使用して RDS インスタンスのデータを自己管理 MySQL インスタンスに復元します。
python ./restore_from_downloads.py <CSV ファイルまたは SQL ファイルのディレクトリ> <データベースホスト> <データベースポート> <アカウントのユーザー名> <アカウントのパスワード>
例:
python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"
コマンド出力:
重要自己管理 MySQL インスタンスに、インポートするデータベースと同じ名前のデータベースが含まれている場合、インポートは失敗します。
使用するアカウントのユーザー名またはパスワードに、シャープ記号 (#) やスペースなどの特殊文字が含まれている場合は、ユーザー名またはパスワードを二重引用符 ("") で囲む必要があります。たとえば、パスワードが
#1234
の場合は、上記のコマンドで"#1234"
と入力する必要があります。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 インスタンスのデータを復元する場合にのみ適用されます。Premium ローカル SSD を使用する RDS インスタンスのデータを復元する方法の詳細については、「物理バックアップファイルから ApsaraDB RDS for MySQL インスタンスのデータを自己管理 MySQL データベースに復元する」または「論理バックアップファイルから ApsaraDB RDS for MySQL インスタンスのデータを自己管理 MySQL インスタンスに復元する」をご参照ください。
Alibaba Cloud が提供する移行サービスを使用して、RDS インスタンスから自己管理 MySQL インスタンスにデータを移行することもできます。詳細については、「ApsaraDB RDS for MySQL インスタンスから自己管理 MySQL データベースにデータを移行する」をご参照ください。
データ復旧方法の詳細については、「データ復旧方法の概要」をご参照ください。