すべてのプロダクト
Search
ドキュメントセンター

PolarDB:mysqldumpを使用したデータのインポートとエクスポート

最終更新日:May 29, 2024

mysqldumpは、データのエクスポートに使用される公式のMySQLユーティリティで、PolarDB-X 1.0でサポートされています。 このトピックでは、mysqldumpを使用してPolarDB-X 1.0にデータをインポートおよびエクスポートする方法について説明します。

使用上の注意

シナリオ1: MySQLデータベースからテキストファイルへのデータのエクスポート

  1. 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. オプション
    オプション説明必須
    ipMySQLデータベースのIPアドレス。 ✔️
    portMySQLデータベースのポート。
    userMySQLデータベースへの接続に使用されるアカウントのユーザー名。 ✔️
    passwordMySQLデータベースへの接続に使用されるアカウントのパスワード。 指定されたパスワードは-pの後になければならず、-pと指定されたパスワードの間にスペースは許可されません。 ✔️
    char-set文字セット。 ✔️
    -- hex-blobバイナリ文字列フィールドを16進形式でエクスポートします。 バイナリ文字列フィールドをエクスポートする場合は、このオプションを使用する必要があります。 バイナリ文字列フィールドには、binary、VARBINARY、またはBLOBデータ型を指定できます。
    -- データなしデータをエクスポートしません。
    tableエクスポートするテーブルを指定します。 1つ以上のテーブルを指定できます。 このオプションを使用しない場合、コマンドは指定されたデータベースからすべてのテーブルをエクスポートします。
  2. 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」をご参照ください。

  3. テキストファイルを使用して、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データベースにインポートするとします。 次の手順を実行します。

  1. ソースPolarDB-X 1.0データベースからテキストファイルにデータをエクスポートします。
  2. テキストファイルからPolarDB-X 1.0データベースにデータをインポートします。 シナリオ1のステップ3を参照してください。
  3. シーケンスオブジェクトを作成します。
    mysqldumpは、PolarDB-X 1.0データベースのシーケンスオブジェクトをエクスポートしません。 ソースPolarDB-X 1.0データベースでシーケンスオブジェクトを使用し、ターゲットPolarDB-X 1.0データベースで同じシーケンスオブジェクトを使用する場合は、ターゲットPolarDB-X 1.0データベースでシーケンスオブジェクトを作成する必要があります。 ターゲットデータベースのシーケンスオブジェクトは、ソースデータベースのシーケンスオブジェクトと同じ名前にする必要があります。 以下の手順を実行します。
    1. ソースPolarDB-X 1.0データベースでSHOW SEQUENCESステートメントを実行して、ソースPolarDB-X 1.0データベースのシーケンスオブジェクトを一覧表示します。
    2. CREATE SEQUENCEステートメントを実行して、ターゲットPolarDB-X 1.0データベースにシーケンスオブジェクトを作成します。

シナリオ3: PolarDB-X 1.0データベースからMySQLデータベースにデータをエクスポートする

PolarDB-X 1.0データベースからMySQLデータベースにデータをエクスポートする手順は、PolarDB-X 1.0データベース間でデータを移行する手順と同様です。 PolarDB-XデータベースからMySQLデータベースにデータをエクスポートするには、次の手順を実行します。

  1. 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データベースのオプションを指定し、上記のコマンドを実行します。
  2. パーティションテーブルのデータ定義言語 (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);
                        
  3. 変更したテキストファイルをインポートします。 シナリオ1のステップ3を参照してください。