mysqldumpは、データのエクスポートに使用される公式のMySQLユーティリティで、PolarDB-X 1.0でサポートされています。 このトピックでは、mysqldumpを使用してPolarDB-X 1.0にデータをインポートおよびエクスポートする方法について説明します。
使用上の注意
- mysqldumpコマンドの詳細については、MySQLの公式ドキュメントをご参照ください。
- mysqldumpは、少量のデータがオフラインでインポートまたはエクスポートされるシナリオに適しています。 少量のデータは、1000万行未満のデータです。 大量のデータを移行またはリアルタイムでデータを移行する方法の詳細については、「自己管理型MySQLデータベースからPolarDB-Xインスタンスへのデータの移行」をご参照ください。
シナリオ1: MySQLデータベースからテキストファイルへのデータのエクスポート
- MySQLデータベースからテキストファイルにデータをエクスポートします。 次のコマンドを実行して、MySQLデータベースからテーブルスキーマとデータをエクスポートします。 この例では、エクスポートされるファイルはdump.sqlです。
mysqldump -h ip -P port -u user -p password-default-character-set=char-set-net_buffer_length=10240-no-create-db-skip-add-locks-skip-lock-tables-skip-tz-utc-set-charset [-- hex-blob] [-- no-data] データベース [table1 table2 table3 ..] > dump.表1. オプション オプション 説明 必須 ip MySQLデータベースのIPアドレス。 ✔️ port MySQLデータベースのポート。 ❌ user MySQLデータベースへの接続に使用されるアカウントのユーザー名。 ✔️ password MySQLデータベースへの接続に使用されるアカウントのパスワード。 指定されたパスワードは-pの後になければならず、-pと指定されたパスワードの間にスペースは許可されません。 ✔️ char-set 文字セット。 ✔️ -- hex-blob バイナリ文字列フィールドを16進形式でエクスポートします。 バイナリ文字列フィールドをエクスポートする場合は、このオプションを使用する必要があります。 バイナリ文字列フィールドには、binary、VARBINARY、またはBLOBデータ型を指定できます。 ❌ -- データなし データをエクスポートしません。 ❌ table エクスポートするテーブルを指定します。 1つ以上のテーブルを指定できます。 このオプションを使用しない場合、コマンドは指定されたデータベースからすべてのテーブルをエクスポートします。 ❌ - CREATE TABLEステートメントを変更します。
MySQLデータベースからエクスポートされたテキストファイルには、各テーブルのCREATE TABLEステートメントが含まれています。 これらのCREATE TABLEステートメントをPolarDB-X 1.0で実行すると、パーティション分割されていないテーブルがPolarDB-X 1.0に作成されます。 シャーディングを実装する場合は、CREATE TABLEステートメントを手動で変更する必要があります。 PolarDB-X 1.0のCREATE TABLEステートメントの構文の詳細については、「CREATE TABLE」をご参照ください。
- テキストファイルを使用して、PolarDB-X 1.0データベースにデータをインポートします。 次のいずれかの方法を使用して、ファイルからPolarDB-X 1.0データベースにデータをインポートできます。
mysql -h ip -P port -u user -- default-character-set=char-setコマンドを実行し、PolarDB-X 1.0データベースにログインします。 次に、source /yourpath/dump.sqlコマンドを実行して、ファイルからPolarDB-X 1.0データベースにデータをインポートします。説明 最初の方法を使用すると、ファイルからデータをインポートする手順が画面に返されます。 この方法では時間がかかりますが、手順を監視できます。mysql -h ip -P port -u user -- default-character-set=char-set< /yourpath/dump.sqlコマンドを実行して、ファイルからPolarDB-X 1.0データベースにデータをインポートします。
説明- 上記のコマンドでは、
default-character-setを使用する文字セットに設定する必要があります。 Microsoft Windowsで上記のコマンドのいずれかを実行する場合は、ファイルパスの区切り文字をエスケープする必要があります。 - ファイルがインポートされると、PolarDB-X 1.0とMySQLの実装に違いがあるため、エラーメッセージが返される場合があります。 エラーメッセージは、
error 1231 (HY000): [a29ef6461c00000][10.117.207.130:3306][****]Variable @ saved_cs_clientを @ @ character_set_clientの値に設定できません。 このタイプのエラーメッセージが返されても、インポートされたデータの正確さは影響を受けません。
シナリオ2: あるPolarDB-X 1.0データベースから別のPolarDB-X 1.0データベースにデータをインポートする
たとえば、テスト環境にPolarDB-X 1.0データベースがあり、データベースのテーブルスキーマとデータを本番環境のPolarDB-X 1.0データベースにインポートするとします。 次の手順を実行します。
- ソースPolarDB-X 1.0データベースからテキストファイルにデータをエクスポートします。
- テキストファイルからPolarDB-X 1.0データベースにデータをインポートします。 シナリオ1のステップ3を参照してください。
- シーケンスオブジェクトを作成します。 mysqldumpは、PolarDB-X 1.0データベースのシーケンスオブジェクトをエクスポートしません。 ソースPolarDB-X 1.0データベースでシーケンスオブジェクトを使用し、ターゲットPolarDB-X 1.0データベースで同じシーケンスオブジェクトを使用する場合は、ターゲットPolarDB-X 1.0データベースでシーケンスオブジェクトを作成する必要があります。 ターゲットデータベースのシーケンスオブジェクトは、ソースデータベースのシーケンスオブジェクトと同じ名前にする必要があります。 以下の手順を実行します。
- ソースPolarDB-X 1.0データベースで
SHOW SEQUENCESステートメントを実行して、ソースPolarDB-X 1.0データベースのシーケンスオブジェクトを一覧表示します。 CREATE SEQUENCEステートメントを実行して、ターゲットPolarDB-X 1.0データベースにシーケンスオブジェクトを作成します。
- ソースPolarDB-X 1.0データベースで
シナリオ3: PolarDB-X 1.0データベースからMySQLデータベースにデータをエクスポートする
PolarDB-X 1.0データベースからMySQLデータベースにデータをエクスポートする手順は、PolarDB-X 1.0データベース間でデータを移行する手順と同様です。 PolarDB-XデータベースからMySQLデータベースにデータをエクスポートするには、次の手順を実行します。
- PolarDB-X 1.0データベースからテーブルスキーマとデータをエクスポートします。
mysqldump -h ip -P port -u user -p password-default-character-set=char-set-net_buffer_length=10240-no-create-db-skip-add-locks-skip-lock-tables-skip-tz-utc-set-charset [-- hex-blob] [-- no-data] データベース [table1 table2 table3 ..] > dump.説明 PolarDB-X 1.0データベースのオプションを指定し、上記のコマンドを実行します。 - パーティションテーブルのデータ定義言語 (DDL) ステートメントを変更します。 PolarDB-X 1.0のパーティションテーブルのCREATE TABLEステートメントは、MySQLと互換性がありません。 MySQLデータベースにデータをインポートするには、エクスポートされたSQLファイルを変更し、次のキーワードを削除する必要があります。
- DBPARTITION BYハッシュ (partition_key):
- ハッシュによるTBPARTITION (partition_key):
- TBPARTITIONS N
- 放送
次のコードは、パーティションテーブルのエクスポートされたCREATE TABLEステートメントです。CREATE table multi_db_single_tbl (id int, 名前varchar(30) 、主キー (id) dbpartition by hash(id);コードを次のステートメントに変更します。CREATE TABLE multi_db_single_tbl (id int, 名前varchar(30) 、主キー (id); - 変更したテキストファイルをインポートします。 シナリオ1のステップ3を参照してください。