PolarDB が提供する OSSOUTFILE 機能を使用して、データベーステーブルを CSV ファイルとしてエクスポートし、OSS エンジンに保存できます。
前提条件
ご利用の PolarDB クラスターは、次のいずれかの条件を満たしている必要があります。
-
カーネルバージョンが MySQL 8.0.1 で、リビジョンバージョンが 8.0.1.1.30 以降であること。
-
カーネルバージョンが MySQL 8.0.2 で、パッチバージョンが 8.0.2.2.8 以降であること。
クラスターバージョンを確認するには、「バージョン番号の照会」をご参照ください。
注意事項
-
PolarDB に接続した DMS を通じてデータファイルを OSS エンジンにエクスポートすることはサポートされていません。この場合、次のエラーメッセージが表示されます。
Can not issue executeUpdate() or executeLargeUpdate() for SELECTsClientまたはコマンドラインを使用して PolarDB に接続し、その後エクスポートを実行してください。詳細については、「データベースクラスターへの接続」をご参照ください。
-
OSS への増分バックアップを行うには、バックアップスケジュールを作成し、バックアップスケジュールを設定して、OSS への増分バックアップを有効にしてください。
-
読み取り専用ノードでエクスポートタスクを実行してください。SQL ステートメントに HINT 構文
/*FORCE_SLAVE*/を追加するか、読み取り専用ノードに直接接続してエクスポートを実行します。
パラメーターの説明
|
パラメーター |
説明 |
|
loose_oss_outfile_buffer_size |
OSSOUTFILE スレッドが使用できるメモリサイズです。有効値:102400 ~ 536870912。デフォルト値:134217728。単位:Byte。一般的に、メモリ量が多いほどエクスポート速度が速くなります。 |
|
loose_max_oss_outfile_threads |
PolarDB が同時に起動できる OSSOUTFILE スレッド数です。有効値:1 ~ 100。デフォルト値:1。単位:個。 クラスター内で現在実行中の OSSOUTFILE スレッド数を確認するには、コマンド 説明
このパラメーターは、PolarDB MySQL エディション バージョン 8.0.1.1.38 以降を実行しているクラスターでは無効になります。 |
OSSOUTFILE 機能を使用して CSV ファイルを OSS エンジンにエクスポート中にクラスターが使用する最大メモリ総量は、次の式で表されます。
loose_max_oss_outfile_threads * loose_oss_outfile_buffer_size
OSSOUTFILE 機能がノードの合計メモリの 5 % を超えて使用しないようにしてください。そうしないと、そのノード上の他のワークロードに影響を与える可能性があります。
使用方法
構文
SELECT * FROM table_name INTO OSSOUTFILE 'outfile_path' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';
-
COLUMNS TERMINATED BY:フィールド間の区切り文字を指定します。 -
OPTIONALLY ENCLOSED BY:フィールド値を囲む文字を指定します。OPTIONALLY を指定すると、文字列型のフィールドのみが囲まれます。指定しない場合は、すべてのフィールドタイプが囲まれます。 -
NULL_MARKER BY:出力ファイルにおける NULL 値の表示方法を指定します。NULL 出力値は、以下の優先度順(高 → 低)に従って決定されます。-
NULL_MARKER:NULL 出力値を直接定義します。
NULL_MARKERは任意の値に設定できます。これが最も高い優先度を持ちます。 -
ESCAPED BY:単一文字のみを受け付けます。NULL 出力値は、その文字の後に N を続けたものになります。例として、
ESCAPED BY '\'の場合、NULL は \N として表示されます。これが 2 番目の優先度を持ちます。 -
NULL(デフォルト):上記のいずれも指定されていない場合、NULL は文字列 “NULL” として表示されます。これが最も低い優先度を持ちます。“NULL” 文字列は
ENCLOSED文字で囲まれません。
-
-
LINES TERMINATED BY:行区切りを指定します。
詳細については、MySQL 公式ドキュメントをご参照ください。
Parameter Description
|
パラメーター |
説明 |
|
outfile_path |
OSS 内のファイルの場所を指定し、以下の要素で構成されます。
これらの 3 つの要素を |
|
table_name |
テーブル名。 |
操作手順
OSS サーバーの作成
CREATE SERVER outserver FOREIGN DATA WRAPPER oss OPTIONS ( EXTRA_SERVER_INFO '{"oss_endpoint": "oss-cn-zhangjiakou-internal.aliyuncs.com", "oss_bucket": "polardb", "oss_access_key_id": "*******", "oss_access_key_secret": "********", "oss_prefix":"B_outfile"}');
-
この例では、新バージョン向けの OSS サーバー作成ステートメントを使用しています。ご利用のクラスターの Milvus バージョンに応じてステートメントを調整してください。
-
oss_endpointは、形式がoss-{xxx}-internal.aliyuncs.comの内部ネットワークアドレスである必要があります。
OSS へのエクスポート
アップロードされる OSS ファイル oss://polardb/B_outfile/tpch/1t/parallel-lineitem.CSV を例に挙げます。
-
バケット名:polardb。
-
パスおよびファイル名:
B_outfile/tpch/1t/parallel-lineitem.CSV。
SELECT * FROM lineitem INTO OSSOUTFILE 'outserver/tpch/1t/parallel-lineitem.CSV' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';
メモリおよびスレッド使用量の確認
ご利用のクラスターの Milvus バージョンが 8.0.1.1.38 以降の場合、現在のエクスポートタスクのリアルタイムでのメモリ総使用量およびスレッド総使用量を確認するには、次のコマンドを使用します。
-
リアルタイムでのメモリ総使用量(Byte 単位)を確認します。
SHOW STATUS LIKE "%Oss_outfile_memory_used%"; -
リアルタイムでのスレッド総数を確認します。
SHOW STATUS LIKE "%Oss_outfile_threads_running%";
クラスターのエンドポイントを使用してエクスポートタスクを実行する場合、正確なノードのメモリリソース使用量を確認するには、SHOW STATUS コマンドとエクスポートコマンドの両方を同じノード上で実行する必要があります。