ApsaraDB RDS for MySQLのバックアップダウンロード機能を使用して、クラウドディスクをCSVファイルまたはSQLファイルとして使用するApsaraDB RDS for MySQLインスタンスのスナップショットバックアップファイルをエクスポートできます。 次に、CSVファイルまたはSQLファイルを使用して、RDSインスタンスのデータを自己管理型MySQLインスタンスに復元できます。
前提条件
RDSインスタンスは次の要件を満たしています。
RDSインスタンスはMySQL 8.0またはMySQL 5.7を実行します。
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進表現から生のバイナリ文字列に変換する必要があります。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ルート "#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インスタンスのデータを復元する場合にのみ適用されます。 ローカルディスクを使用するRDSインスタンスのデータを復元する方法の詳細については、「ApsaraDB RDS For MySQLインスタンスのデータを物理バックアップファイルから自己管理型MySQLデータベースに復元する」または「ApsaraDB RDS for MySQLインスタンスのデータを論理バックアップファイルから自己管理型MySQLインスタンスに復元する」をご参照ください。
Alibaba Cloudが提供する移行サービスを使用して、RDSインスタンスから自己管理型MySQLインスタンスにデータを移行することもできます。 詳細については、「ApsaraDB RDS For MySQLインスタンスから自己管理型MySQLデータベースへのデータの移行」をご参照ください。
データ復元方法の詳細については、「データ復元方法の概要」をご参照ください。