PolarDBのバックアップダウンロード機能を使用して、クラウドディスクを使用するPolarDBクラスターのスナップショットバックアップファイルをCSVファイルまたはSQLファイルとしてエクスポートできます。 次に、CSVファイルまたはSQLファイルを使用して、PolarDBクラスターのデータを自己管理型MySQLデータベースに復元できます。
前提条件
PolarDB for MySQLクラスター要件
バージョン要件:
クラスターはPolarDB for MySQL Enterprise Editionクラスターです。
クラスターはPolarDB for MySQLを5.6、5.7、8.0.1、または8.0.2実行します。
リージョン要件:
中国 (成都) 、中国 (広州) 、中国 (青島) 、中国 (北京) 、中国 (上海) 、中国 (張家口) 、中国 (杭州) 、中国 (深セン) 、中国 (香港) 、マレーシア (クアラルンプール) 、インドネシア (ジャカルタ) 、日本 (東京) 、シンガポール、米国 (シリコンバレー) 、米国 (バージニア) 。
説明この機能は、まもなく他のリージョンで利用できるようになります。
PolarDBクラスターのディスク暗号化機能は無効になっています。 ディスク暗号化機能が有効になっているPolarDBクラスターでは、バックアップダウンロード機能はサポートされていません。
自己管理型MySQLデータベースの要件
local_infileパラメーターは、自己管理MySQLデータベースに対して有効になっています。
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のフィールドはサポートされていません。
使用上の注意
PolarDB for MySQLクラスターと自己管理型MySQLデータベースに同じデータベースエンジンバージョンを使用することを推奨します。 データベースエンジンのバージョンが異なると、非互換性の問題が発生し、復元が失敗する場合があります。
復元コマンドを実行する前に、自己管理型MySQLインスタンスのデータベースまたはテーブルの名前がRDSインスタンスのデータベースまたはテーブルの名前と異なることを確認してください。 これにより、データの競合やデータの損失が防止されます。 データ競合を引き起こす可能性のある重複するデータベースとテーブルをチェックして削除することを推奨します。
復元タスクを中断すると、完全なデータが復元されないか、復元タスクが失敗する可能性があります。 作業は慎重に行ってください。
手順
このセクションでは、SQLファイルを使用して、クラウドディスクを使用するPolarDB for MySQLクラスターのデータを、64ビットCentOS 7.8を実行するElastic Compute Service (ECS) インスタンス上の自己管理型MySQLデータベースに復元する方法について説明します。 他のオペレーティングシステムを使用する場合は、対応するコマンドを使用する必要があります。
PolarDBコンソールにログインし、クラウドディスクを使用するPolarDBクラスターのバックアップファイルを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
restore_from_downloads.pyをコンピューターまたは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"
コマンドを実行します。