📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

Dumplingを使用してデータをエクスポートする



このドキュメントでは、データエクスポートツール「 Dumplingについて説明します。Dumplingは、TiDB/MySQLに保存されているデータをSQLまたはCSVデータファイルとしてエクスポートし、論理的なフルバックアップやエクスポートに使用できます。また、 DumplingはAmazon S3へのデータエクスポートもサポートしています。

TiUPを使用してDumplingを取得するには、 tiup install dumplingを実行します。その後、 tiup dumpling ...を使用してDumplingを実行できます。

Dumplingインストール パッケージは、 TiDB Toolkitに含まれています。 TiDB Toolkitをダウンロードするには、 TiDBツールをダウンロード参照してください。

Dumplingの詳しい使用方法については、 --helpオプションを使用するか、 Dumplingのオプション一覧を参照してください。

Dumplingを使用する場合は、実行中のクラスタ上でexportコマンドを実行する必要があります。

TiDBは、必要に応じて選択して使用できるその他のツールも提供しています。

  • SST ファイル (キーと値のペア) のバックアップ、またはレイテンシーに影響されない増分データのバックアップについては、 BRを参照してください。
  • 増分データのリアルタイムバックアップについては、 TiCDCを参照してください。
  • エクスポートされたすべてのデータはTiDB Lightning使用してTiDBにインポートし直すことができます。

注記:

PingCAP は以前、TiDB に固有の機能拡張を備えたmydumperプロジェクトのフォークを保守していました。 v7.5.0 以降、 マイダンパーは非推奨となり、その機能のほとんどがDumplingに置き換えられました。 mydumper の代わりにDumpling を使用することを強くお勧めします。

Dumplingには次のような利点があります。

  • SQLやCSVなど、複数の形式でのデータエクスポートをサポートします。
  • データのフィルタリングを容易にするテーブルフィルター機能をサポートします。
  • Amazon S3クラウドstorageへのデータエクスポートをサポートします。
  • TiDB向けにさらなる最適化が行われました。
    • TiDB SQLステートメントのメモリ制限を設定する機能をサポートします。
    • Dumpling がTiDB クラスタの PD アドレスとINFORMATION_SCHEMA.CLUSTER_INFOテーブルにアクセスできる場合、 Dumpling はTiDB v4.0.0 以降のバージョンでブロック GC を実行するためにGCセーフポイント時間を自動的に調整することをサポートします。
    • TiDBの非表示列_tidb_rowidを使用して、単一テーブルからの同時データエクスポートのパフォーマンスを最適化します。
    • TiDB の場合、 tidb_snapshotの値を設定することで、データバックアップの時点を指定できます。これにより、 FLUSH TABLES WITH READ LOCKを使用して一貫性を確保する代わりに、バックアップの一貫性が確保されます。

注記:

Dumplingは、以下のシナリオではPDに接続できません。

  • TiDBクラスタはKubernetes上で動作します(ただし、 Dumpling自体がKubernetes環境内で動作している場合は除きます)。
  • TiDBクラスターはTiDB Cloud上で稼働しています。

このような場合、エクスポートの失敗を避けるために手動でTiDBのGC時間を調整する必要があります。

TiDBまたはMySQLからデータをエクスポートする

必要な権限

  • プロセス:クラスタ情報を照会してPDアドレスを取得し、PDを介してGCを制御する必要があります。
  • SELECT: テーブルをエクスポートする際に必須です。
  • RELOAD: consistencyのレベルがflushの場合に必要です。アップストリームが RDS データベースまたはマネージド サービスの場合は、この権限を無視できます。
  • テーブルのロック: consistencyのレベルがlockの場合に必要です。この権限は、エクスポートするすべてのデータベースとテーブルに対して付与する必要があります。
  • レプリケーションクライアント:データスナップショットを記録するためにメタデータをエクスポートする場合に必要です。この権限はオプションであり、メタデータをエクスポートする必要がない場合は無視できます。
  • ビューの表示:エクスポート用のビューメタデータを収集するために必要です。

SQLファイルへのエクスポート

このドキュメントは、127.0.0.1:4000 ホスト上に TiDB インスタンスが存在し、その TiDB インスタンスにパスワードのない root ユーザーが存在することを前提としています。

DumplingはデフォルトでデータをSQLファイルにエクスポートします。 --filetype sqlフラグを追加することでも、データをSQLファイルにエクスポートできます。

tiup dumpling -u root -P 4000 -h 127.0.0.1 --filetype sql -t 8 -o /tmp/test -r 200000 -F 256MiB

上記のコマンドでは:

  • -h-P 、および-uオプションは、それぞれアドレス、ポート、およびユーザーを意味します。認証にパスワードが必要な場合は、 -p $YOUR_SECRET_PASSWORDを使用してパスワードをDumplingに渡すことができます。

  • -o (または--output ) オプションは、storageのエクスポート ディレクトリを指定します。これは、絶対ローカル ファイル パスまたは外部storageURIをサポートします。

  • -tオプションは、エクスポートに使用するスレッド数を指定します。スレッド数を増やすと、Dumplingの並列処理能力とエクスポート速度が向上しますが、データベースのメモリ使用量も増加します。そのため、スレッド数をあまり大きく設定することは推奨されません。通常は 64 未満に設定します。

  • -rオプションは、テーブル内同時実行を有効にしてエクスポートを高速化します。デフォルトでは無効になっています (値0 )。 0より大きい値で有効にした場合、動作はソース データベースによって異なります。

    • TiDBの場合、 Dumplingは領域情報を使用して分割を行うため、メモリ使用量も削減されます。指定された-rの値は、分割アルゴリズムには影響しません。
    • MySQLの場合、このオプションは、主キー(または複合主キーの最初の列)がINTまたはSTRING型である場合にサポートされます。
  • -Fオプションは、単一ファイルの最大サイズを指定するために使用されます(単位はMiBです。 5GiB8KBのような入力も許容されます)。このファイルを TiDB インスタンスにロードするためにTiDB Lightning を使用する場合は、その値を 256 MiB 以下に保つことをお勧めします。

注記:

エクスポートされた単一のテーブルのサイズが 10 GB を超える場合は、 -rおよび-Fオプションを使用することを強くお勧めします。

storageサービスのURI形式

このセクションでは、Amazon S3、GCS、Azure Blob StorageなどのstorageサービスのURI形式について説明します。URI形式は以下のとおりです。

[scheme]://[host]/[path]?[parameters]

詳細については、外部ストレージサービスのURI形式を参照してください。

CSVファイルにエクスポート

--filetype csv引数を追加することで、データをCSVファイルにエクスポートできます。

データをCSVファイルにエクスポートする際に、 --sql <SQL>を使用してSQLステートメントでレコードをフィルタリングできます。たとえば、次のコマンドを使用してid < 100内のtest.sbtest1に一致するすべてのレコードをエクスポートできます。

tiup dumpling -u root -P 4000 -h 127.0.0.1 -o /tmp/test --filetype csv --sql 'select * from `test`.`sbtest1` where id < 100' -F 100MiB --output-filename-template 'test.sbtest1.{{.Index}}'

上記のコマンドでは:

  • --sqlオプションは、CSV ファイルへのエクスポートにのみ使用できます。上記のコマンドは、エクスポート対象のすべてのテーブルに対してSELECT * FROM <table-name> WHERE id <100ステートメントを実行します。テーブルに指定されたフィールドがない場合、エクスポートは失敗します。
  • --sqlオプションを使用すると、 Dumpling はエクスポートされたテーブルとスキーマ情報を取得できません。 --output-filename-templateオプションを使用すると、CSV ファイルのファイル名形式を指定できます。これにより、 TiDB Lightningを使用してデータ ファイルをインポートする際に便利です。たとえば、 --output-filename-template='test.sbtest1.{{.Index}}'は、エクスポートされた CSV ファイルの名前がtest.sbtest1.000000000またはtest.sbtest1.000000001となることを指定します。
  • --csv-separator--csv-delimiterなどのオプションを使用して、CSV ファイル形式を構成できます。詳細については、 Dumplingのオプション一覧をご覧ください。

注記:

Dumplingでは文字列キーワードは区別されません。インポートされたデータがブール型の場合、 trueの値は1に変換され、 falseの値は0に変換されます。

エクスポートされたデータファイルを圧縮する

--compress <format>オプションを使用すると、 Dumplingによってエクスポートされた CSV および SQL データとテーブル構造ファイルを圧縮できます。このパラメーターは、 gzipsnappy 、およびzstdアルゴリズムをサポートしています。圧縮はデフォルトでは無効になっています。

  • このオプションは、個々のデータファイルとテーブル構造ファイルのみを圧縮します。フォルダ全体を圧縮して単一の圧縮パッケージを生成することはできません。
  • このオプションはディスク容量を節約できますが、エクスポート速度が低下し、CPU使用率も増加します。エクスポート速度が非常に重要な場面では、このオプションの使用には注意が必要です。
  • TiDB Lightning v6.5.0以降のバージョンでは、 Dumplingによってエクスポートされた圧縮ファイルを、追加の設定なしでデータソースとして使用できます。

注記:

Snappy 圧縮ファイルは公式Snappyフォーマットに存在する必要があります。 Snappy 圧縮の他のバリアントはサポートされていません。

エクスポートされたファイルの形式

  • metadata : エクスポートされたファイルの開始時刻とマスターバイナリログの位置。

    cat metadata
    Started dump at: 2020-11-10 10:40:19 SHOW MASTER STATUS: Log: tidb-binlog Pos: 420747102018863124 Finished dump at: 2020-11-10 10:40:20
  • {schema}-schema-create.sql : スキーマの作成に使用された SQL ファイル

    cat test-schema-create.sql
    CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
  • {schema}.{table}-schema.sql : テーブルを作成するために使用された SQL ファイル

    cat test.t1-schema.sql
    CREATE TABLE `t1` ( `id` int DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  • {schema}.{table}.{0001}.{sql|csv} : 日付ソースファイル

    cat test.t1.0.sql
    /*!40101 SET NAMES binary*/; INSERT INTO `t1` VALUES (1);
  • *-schema-view.sql*-schema-trigger.sql*-schema-post.sql : その他のエクスポートされたファイル

データをAmazon S3クラウドstorageにエクスポートする

バージョン4.0.8以降、 Dumplingはクラウドストレージへのデータエクスポートをサポートしています。Amazon S3にデータをバックアップする必要がある場合は、 -oパラメータでAmazon S3storageパスを指定する必要があります。

指定されたリージョンに Amazon S3 バケットを作成する必要があります ( Amazonドキュメント - S3バケットの作成方法参照)。バケット内にフォルダーを作成する必要がある場合は、 Amazonドキュメント - フォルダの作成参照してください。

Amazon S3バックエンドstorageへのアクセス権限を持つアカウントのSecretKeyAccessKeyを環境変数としてDumplingノードに渡します。

export AWS_ACCESS_KEY_ID=${AccessKey} export AWS_SECRET_ACCESS_KEY=${SecretKey}

Dumpling は、 ~/.aws/credentialsからの認証情報ファイルの読み取りもサポートしています。 URI パラメーターの説明の詳細については、外部ストレージサービスのURI形式を参照してください。

tiup dumpling -u root -P 4000 -h 127.0.0.1 -r 200000 -o "s3://${Bucket}/${Folder}"

エクスポートされたデータをフィルタリングする

--whereオプションを使用してデータをフィルタリングします

デフォルトでは、 Dumpling はシステム データベース ( mysqlsysINFORMATION_SCHEMAPERFORMANCE_SCHEMAMETRICS_SCHEMA 、およびINSPECTION_SCHEMA ) を除くすべてのデータベースをエクスポートします。 --where <SQL where expression>を使用して、エクスポートするレコードを選択できます。

tiup dumpling -u root -P 4000 -h 127.0.0.1 -o /tmp/test --where "id < 100"

上記のコマンドは、各テーブルからid < 100に一致するデータをエクスポートします。 --whereパラメータと--sqlパラメータを同時に使用することはできませんのでご注意ください。

--filterオプションを使用してデータをフィルタリングします。

Dumpling--filterオプションでテーブルフィルタを指定することで、特定のデータベースまたはテーブルをフィルタリングできます。テーブルフィルタの構文は.gitignoreと同様です。詳細は、テーブルフィルター参照してください。

tiup dumpling -u root -P 4000 -h 127.0.0.1 -o /tmp/test -r 200000 --filter "employees.*" --filter "*.WorkOrder"

上記のコマンドはemployeesデータベース内のすべてのテーブルと、すべてのデータベース内のWorkOrderテーブルをエクスポートします。

-Bまたは-Tオプションを使用してデータをフィルタリングします。

Dumpling、 -Bオプションを使用して特定のデータベースをエクスポートしたり、 -Tオプションを使用して特定のテーブルをエクスポートすることもできます。

注記:

  • --filterオプションと-Tオプションは同時に使用できません。
  • -Tオプションはdatabase-name.table-nameのような完全な形式の入力のみを受け付け、テーブル名のみの入力は受け付けられません。例: Dumpling は-T WorkOrderを認識できません。

例:

  • -B employees employeesデータベースをエクスポートします。
  • -T employees.WorkOrder employees.WorkOrderテーブルをエクスポートします。

同時実行による輸出効率の向上

エクスポートされたファイルは、デフォルトでは./export-<current local time>ディレクトリに保存されます。よく使用されるオプションは以下のとおりです。

  • -tオプションは、エクスポートに使用するスレッド数を指定します。スレッド数を増やすと、Dumplingの並列処理能力とエクスポート速度が向上しますが、データベースのメモリ使用量も増加します。そのため、スレッド数をあまり大きく設定することはお勧めしません。
  • -rオプションは、テーブル内同時実行を有効にしてエクスポートを高速化します。デフォルト値は0で、無効を意味します。0 より大きい値は有効を意味し、値はINT型です。ソース データベースが TiDB の場合、0 より大きい-r値は、TiDB リージョン情報が分割に使用され、メモリ使用量が削減されることを示します。特定の-r値は、分割アルゴリズムに影響しません。ソースデータベースがMySQLで、主キーまたは複合主キーの最初の列がINT型の場合、 -rを指定することで、テーブル内同時実行を有効にすることもできます。
  • --compress <format>オプションは、ダンプの圧縮形式を指定します。このオプションは、 gzipsnappy 、およびzstdの圧縮アルゴリズムをサポートしています。storageがボトルネックになっている場合や、storage容量が懸念される場合は、このオプションを使用するとデータのダンプを高速化できます。ただし、CPU 使用率が増加するという欠点があります。各ファイルは個別に圧縮されます。

上記のオプションを指定することで、 Dumplingはより高速なデータエクスポートを実現できます。

Dumplingのデータ整合性オプションを調整する

注記:

データ整合性オプションのデフォルト値はautoです。ほとんどの場合、 Dumplingのデフォルトのデータ整合性オプションを調整する必要はありません。

Dumpling は--consistency <consistency level>オプションを使用して、「一貫性の保証」のためにデータをエクスポートする方法を制御します。スナップショットを使用して一貫性を確保する場合、 --snapshotオプションを使用してバックアップするタイムスタンプを指定できます。また、次のレベルの一貫性も使用できます。

  • flush : FLUSH TABLES WITH READ LOCKを使用すると、レプリカ データベースの DML および DDL 操作を一時的に中断し、バックアップ 接続のグローバルな一貫性を確保し、binlog位置 (POS) 情報を記録できます。ロックは、すべてのバックアップ 接続がトランザクションを開始すると解放されます。フル バックアップは、ピーク時以外の時間帯、または MySQL レプリカ データベースで実行することをお勧めします。TiDB はこの値をサポートしていないことに注意してください。
  • snapshot : 指定されたタイムスタンプの一貫性のあるスナップショットを取得し、エクスポートします。
  • lock : エクスポートするすべてのテーブルに読み取りロックを追加します。
  • none : 一貫性は保証されません。
  • auto : MySQL にはflushを、TiDB にはsnapshotを使用してください。

すべて完了したら、 /tmp/testにエクスポートされたファイルが表示されます。

ls -lh /tmp/test | awk '{print $5 "\t" $9}'
140B metadata 66B test-schema-create.sql 300B test.sbtest1-schema.sql 190K test.sbtest1.0.sql 300B test.sbtest2-schema.sql 190K test.sbtest2.0.sql 300B test.sbtest3-schema.sql 190K test.sbtest3.0.sql

TiDBの履歴データスナップショットをエクスポート

Dumpling は--snapshotオプションを指定して、特定のtidb_snapshotのデータをエクスポートできます。

--snapshotオプションは、TSO ( Positionコマンドによって出力されるSHOW MASTER STATUSフィールド) またはdatetimeデータ タイプの有効時間 ( YYYY-MM-DD hh:mm:ssの形式) に設定できます。例:

tiup dumpling --snapshot 417773951312461825 tiup dumpling --snapshot "2020-07-02 17:12:45"

TSOが417773951312461825で時刻が2020-07-02 17:12:45のときのTiDB履歴データスナップショットがエクスポートされます。

大規模テーブルのエクスポート時のメモリ使用量を制御する

DumplingがTiDBから大きな単一テーブルをエクスポートする際、エクスポートされるデータサイズが大きすぎるためにメモリ不足(OOM)が発生し、接続が中断されてエクスポートが失敗する場合があります。TiDBのメモリ使用量を削減するには、以下のパラメータを使用してください。

  • -rを設定すると、エクスポートするデータがチャンクに分割されます。これにより、TiDB のデータ スキャンのメモリオーバーヘッドが削減され、同時テーブル データ ダンプが可能になり、エクスポート効率が向上します。アップストリーム データベースが TiDB v3.0 以降のバージョンの場合、 -rの値が 0 より大きい場合は、TiDB リージョン情報が分割に使用され、特定の-rの値は分割アルゴリズムに影響しません。
  • --tidb-mem-quota-queryの値を8589934592 (8 GB) 以下まで減らしてください。 --tidb-mem-quota-query TiDB の単一クエリ ステートメントのメモリ使用量を制御します。
  • --params "tidb_distsql_scan_concurrency=5"パラメータを調整します。tidb_distsql_scan_concurrency tidb_distsql_scan_concurrency 、TiDB でのスキャン操作の同時実行性を制御するセッション変数です。

TiDBのGC時間を手動で設定する

TiDBからデータをエクスポートする場合(1TB未満)、TiDBのバージョンがv4.0.0以降で、 DumplingがTiDBクラスタのPDアドレスとINFORMATION_SCHEMA.CLUSTER_INFOテーブルにアクセスできる場合、 DumplingはGCセーフポイントを自動的に調整し、元のクラスタに影響を与えることなくGCをブロックします。

ただし、以下のいずれかのシナリオでは、 DumplingはGC時間を自動的に調整できません。

  • データサイズが非常に大きい(1TB以上)。
  • TiDBクラスタがTiDB Cloud上、またはDumplingとは別のKubernetes上にある場合、 DumplingはPDに直接接続できません。

このような場合、エクスポート処理中にガベージコレクション(GC)が原因でエクスポートが失敗しないように、事前にGC時間を手動で延長する必要があります。

GC時間を手動で調整するには、次のSQL文を使用します。

SET GLOBAL tidb_gc_life_time = '720h';

Dumpling が終了した後、エクスポートが成功したかどうかに関わらず、GC 時間を元の値に戻す必要があります (デフォルト値は10mです)。

SET GLOBAL tidb_gc_life_time = '10m';

Dumplingのオプション一覧

オプション使用法デフォルト値
-Vまたは--versionDumplingバージョンを出力して直接終了します。
-Bまたは--database指定したデータベースをエクスポートする
-Tまたは--tables-list指定したテーブルをエクスポートします
-fまたは--filterフィルター パターンに一致するテーブルをエクスポートします。フィルターの構文については、テーブルフィルターを参照してください。[\*.\*,!/^(mysql&#124;sys&#124;INFORMATION_SCHEMA&#124;PERFORMANCE_SCHEMA&#124;METRICS_SCHEMA&#124;INSPECTION_SCHEMA)$/.\*] (システムスキーマを除くすべてのデータベースまたはテーブルをエクスポート)
--case-sensitiveテーブルフィルターが大文字と小文字を区別するかどうか偽(大文字小文字を区別しない)
-hまたは--host接続されたデータベースホストのIPアドレス「127.0.0.1」
-tまたは--threads同時バックアップスレッド数4
-rまたは--rowsテーブル内同時実行を有効にすると、エクスポートが高速化されます。デフォルト値は0で、無効を意味します。0 より大きい値は有効を意味し、値はINT型です。ソース データベースが TiDB の場合、0 より大きい-r値は、TiDB リージョン情報が分割に使用され、メモリ使用量が削減されることを示します。特定の-r値は、分割アルゴリズムに影響しません。ソース データベースが MySQL で、主キーまたは複合主キーの最初の列がINT型の場合、 -rを指定することで、テーブル内同時実行を有効にすることもできます。
-Lまたは--logfileログ出力アドレス。空欄の場合は、ログはコンソールに出力されます。「」
--loglevelログレベル {debug,info,warn,error,dpanic, panic,fatal}"情報"
--logfmtログ出力形式:{text,json}"文章"
-dまたは--no-dataデータのエクスポートを行わない(スキーマのみをエクスポートする場合に適しています)
--no-headerヘッダーを生成せずにテーブルのCSVファイルをエクスポートする
-Wまたは--no-viewsビューをエクスポートしないでください真実
-mまたは--no-schemasデータのみをエクスポートしてスキーマをエクスポートしないでください。
-sまたは--statement-sizeINSERTステートメントのサイズを制御します。単位はバイトです。
-Fまたは--filesize分割されたテーブルのファイルサイズ。単位は128B64KiB32MiB1.5GiBのように指定する必要があります。
--filetypeエクスポートされたファイル形式(csv/sql)「sql」
-oまたは--outputデータのエクスポートに使用する絶対ローカルファイルパス、または外部storageURIを指定してください。"./export-${time}"
-Sまたは--sql指定されたSQL文に従ってデータをエクスポートします。このコマンドは同時エクスポートをサポートしていません。
--consistencyフラッシュ: ダンプの前にFTWRLを使用してください
スナップショット: TSO の特定のスナップショットの TiDB データをダンプします
ロック: ダンプ対象のすべてのテーブルに対してlock tables readを実行します
none: ロックを追加せずにダンプします。これは一貫性を保証できません。
auto: MySQL の場合は --consistency flush を使用し、TiDB の場合は --consistency snapshot を使用します。
「自動」
--snapshotスナップショットTSO。 consistency=snapshotの場合のみ有効。
--wherewhere条件を使用して、テーブルバックアップの範囲を指定します。
-pまたは--password接続先のデータベースホストのパスワード
-Pまたは--port接続されたデータベースホストのポート4000
-uまたは--user接続されたデータベースホストのユーザー名""
--dump-empty-database空のデータベースのCREATE DATABASEステートメントをエクスポートします。真実
--caTLS接続用の認証局ファイルのアドレス
--certTLS接続用のクライアント証明書ファイルのアドレス
--keyTLS接続用のクライアント秘密鍵ファイルのアドレス
--csv-delimiterCSVファイル内の文字型変数の区切り文字'"'
--csv-separatorCSV ファイル内の各値の区切り文字。データにカンマが含まれている場合は、区切り文字として特殊な文字の組み合わせを使用することをお勧めします。非表示の文字もサポートされています。例: --csv-separator $'\001'','
--csv-null-valueCSVファイルにおけるnull値の表現"\N"
--csv-line-terminatorCSV ファイルの行末の終端文字。データを CSV ファイルにエクスポートする際に、このオプションを使用して目的の終端文字を指定できます。このオプションは "\r\n""\n" をサポートしています。デフォルト値は "\r\n" で、以前のバージョンと互換性があります。bash の引用符はエスケープ規則が異なるため、LF (改行) を終端文字として指定する場合は、 --csv-line-terminator $'\n'に似た構文を使用できます。"\r\n"
--csv-output-dialectソースデータをデータベースで指定された形式の CSV ファイルにエクスポートできることを示します。オプションの値は"""snowflake""redshift""bigquery"のいずれかです。デフォルト値は""で、ソースデータを UTF-8 でエンコードしてエクスポートすることを意味します。オプションを"snowflake"または"redshift"に設定すると、ソースデータのバイナリデータ型は 16 進数に変換されますが、 0xの接頭辞は削除されます。例えば、 0x61 61と表示されます。オプションを"bigquery"に設定すると、バイナリデータ型は base64 を使用してエンコードされます。場合によっては、バイナリ文字列に文字化けが発生する可能性があります。""
--escape-backslashエクスポートファイル内の特殊文字をエスケープするには、バックスラッシュ( \ )を使用します。真実
--output-filename-templateGo言語テンプレートの形式で表されるファイル名テンプレート
{{.DB}}{{.Table}} 、および{{.Index}}引数をサポートします。
3つの引数は、データベース名、テーブル名、およびデータファイルのチャンクIDを表します。
{{.DB}}.{{.Table}}.{{.Index}}
--status-addrDumplingのサービスアドレス(Prometheusがメトリクスを取得するアドレスとpprofデバッグ用アドレスを含む)":8281"
--tidb-mem-quota-queryDumplingコマンドの1行でエクスポートするSQLステートメントのメモリ制限値で、単位はバイトです。v4.0.10以降のバージョンでは、このパラメータを設定しない場合、TiDBはデフォルトでmem-quota-query構成項目の値をメモリ制限値として使用します。v4.0.10より前のバージョンでは、パラメータ値のデフォルト値は32GBです。34359738368
--paramsエクスポートするデータベースへの接続に使用するセッション変数を指定します。必須の形式は"character_set_client=latin1,character_set_connection=latin1"です。
-cまたは--compressDumplingによってエクスポートされた CSV および SQL データとテーブル構造ファイルを圧縮します。次の圧縮アルゴリズムをサポートしています: gzipsnappy 、およびzstd「」

出力ファイル名テンプレート

--output-filename-template引数は、ファイル拡張子を除いた出力ファイルの命名規則を定義します。GoGo text/template構文内の文字列を受け入れます。 。

テンプレートには以下のフィールドが利用可能です。

  • .DB : データベース名
  • .Table : テーブル名またはオブジェクト名
  • .Index : テーブルが複数のファイルに分割されている場合の、ファイルの0から始まるシーケンス番号。どの部分がダンプされるかを示します。たとえば、 {{printf "%09d" .Index}}は、 .Index先頭にゼロが付いた9桁の数値としてフォーマットすることを意味します。

データベース名やテーブル名には、ファイルシステムでは使用できない特殊文字(例: / )が含まれている場合があります。この問題を解決するために、 Dumpling はこれらの特殊文字をパーセントエンコードするfn関数を提供しています。

  • U+0000~U+001F(制御文字)
  • /\<>:"*? (無効な Windows パス文字)
  • . (データベース名またはテーブル名の区切り文字)
  • --schemaの一部として使用される場合

例えば、 --output-filename-template '{{fn .Table}}.{{printf "%09d" .Index}}'を使用すると、 Dumplingはテーブルdb.tbl:normaltbl%3Anormal.000000000.sqltbl%3Anormal.000000001.sqlなどという名前のファイルに書き込みます。

出力データファイルに加えて、 --output-filename-templateを定義することで、スキーマファイルのファイル名を置き換えることができます。以下の表に、デフォルトの設定を示します。

名前コンテンツ
データ{{fn .DB}}.{{fn .Table}}.{{.Index}}
スキーマ{{fn .DB}}-schema-create
テーブル{{fn .DB}}.{{fn .Table}}-schema
イベント{{fn .DB}}.{{fn .Table}}-schema-post
関数{{fn .DB}}.{{fn .Table}}-schema-post
手順{{fn .DB}}.{{fn .Table}}-schema-post
順序{{fn .DB}}.{{fn .Table}}-schema-sequence
トリガー{{fn .DB}}.{{fn .Table}}-schema-triggers
ビュー{{fn .DB}}.{{fn .Table}}-schema-view

例えば、 --output-filename-template '{{define "table"}}{{fn .Table}}.$schema{{end}}{{define "data"}}{{fn .Table}}.{{printf "%09d" .Index}}{{end}}'を使用すると、 Dumpling はテーブルdb.tbl:normalのスキーマをtbl%3Anormal.$schema.sqlという名前のファイルに書き込み、データをtbl%3Anormal.000000000.sqltbl%3Anormal.000000001.sqlなどのファイルに書き込みます。

このページは役に立ちましたか?