All Products
Search
Document Center

PolarDB:Ekspor tabel lokal secara serial ke mesin OSS

Last Updated:May 08, 2026

Anda dapat menggunakan fitur OSSOUTFILE yang disediakan oleh PolarDB untuk mengekspor tabel database sebagai file CSV dan menyimpannya di mesin OSS.

Prasyarat

Kluster PolarDB Anda harus memenuhi salah satu kondisi berikut:

  • Versi kernel adalah MySQL 8.0.1, dan versi revisi adalah 8.0.1.1.30 atau lebih baru.

  • Versi kernel adalah MySQL 8.0.2, dan versi patch adalah 8.0.2.2.8 atau lebih baru.

Untuk memeriksa versi kluster Anda, lihat Query version number.

Catatan

  • Mengekspor file data ke mesin OSS melalui DMS yang terhubung ke PolarDB tidak didukung. Pesan kesalahan yang sesuai adalah:

    Can not issue executeUpdate() or executeLargeUpdate() for SELECTs

    Hubungkan ke PolarDB menggunakan Client atau Command Line, lalu lakukan ekspor. Untuk detailnya, lihat Connect to a database cluster.

  • Untuk melakukan backup data secara inkremental ke OSS, buat jadwal backup dan konfigurasikan jadwal backup tersebut agar mengaktifkan backup inkremental ke OSS.

  • Jalankan tugas ekspor pada node read-only. Tambahkan sintaks HINT /*FORCE_SLAVE*/ ke pernyataan SQL Anda atau hubungkan langsung ke node read-only untuk melakukan ekspor.

Deskripsi parameter

Parameter

Deskripsi

loose_oss_outfile_buffer_size

Ukuran memori yang dapat digunakan oleh setiap thread OSSOUTFILE. Nilai yang valid: 102400 hingga 536870912. Nilai default: 134217728. Satuan: Byte. Secara umum, semakin besar memori, semakin cepat kecepatan ekspor.

loose_max_oss_outfile_threads

Jumlah thread OSSOUTFILE yang dapat dijalankan secara bersamaan oleh PolarDB. Nilai yang valid: 1 hingga 100. Nilai default: 1. Satuan: jumlah.

Gunakan perintah SHOW STATUS LIKE "Oss_outfile_threads_running"; untuk melihat jumlah thread OSSOUTFILE yang sedang berjalan di kluster.

Catatan

Parameter ini tidak lagi berlaku untuk kluster yang menjalankan PolarDB MySQL Edition versi 8.0.1.1.38 atau lebih baru.

Catatan

Total memori maksimum yang digunakan oleh kluster selama ekspor file CSV ke mesin OSS menggunakan fitur OSSOUTFILE adalah:

loose_max_oss_outfile_threads * loose_oss_outfile_buffer_size

Hindari penggunaan memori oleh fitur OSSOUTFILE melebihi 5% dari total memori sebuah node. Jika tidak, beban kerja lain di node tersebut mungkin terpengaruh.

Penggunaan

Syntax

SELECT * FROM table_name INTO OSSOUTFILE 'outfile_path' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';
Catatan
  • COLUMNS TERMINATED BY: Menentukan pemisah antar bidang.

  • OPTIONALLY ENCLOSED BY: Menentukan karakter yang membungkus nilai bidang. Dengan kata kunci OPTIONALLY, hanya bidang bertipe string yang dibungkus. Tanpa kata kunci tersebut, semua tipe bidang akan dibungkus.

  • NULL_MARKER BY: Menentukan bagaimana nilai NULL ditampilkan dalam file output. Aturan prioritas penulisan nilai NULL dalam output, dari prioritas tertinggi ke terendah, adalah sebagai berikut:

    • NULL_MARKER: Secara langsung menentukan nilai output NULL. Anda dapat mengatur NULL_MARKER ke nilai apa pun. Ini memiliki prioritas tertinggi.

    • ESCAPED BY: Hanya menerima satu karakter. Output NULL menjadi karakter tersebut diikuti huruf N. Misalnya, jika ESCAPED BY '\', maka NULL akan muncul sebagai \N. Ini memiliki prioritas kedua.

    • NULL (default): Jika tidak ada dari dua opsi di atas yang ditentukan, NULL akan muncul sebagai string “NULL”. Ini memiliki prioritas terendah. String “NULL” tidak dibungkus oleh karakter ENCLOSED.

  • LINES TERMINATED BY: Menentukan pemisah baris.

Untuk detail selengkapnya, lihat dokumentasi resmi MySQL.

Parameter Description

Parameter

Deskripsi

outfile_path

Menentukan lokasi file di OSS dan mencakup bagian-bagian berikut:

  • Informasi Server OSS, yang mengidentifikasi node OSS dan jalur dasar unggah. Untuk detailnya, lihat Access OSS data using an OSS external table.

  • (Opsional) Jalur unik untuk tugas saat ini.

  • Nama file setelah diunggah.

Gabungkan ketiga bagian ini dengan /. Jalur tugas unik dapat mencakup beberapa karakter / untuk merepresentasikan direktori bersarang. Setelah diunggah ke mesin OSS, jalur lengkap file menjadi: jalur Server OSS + jalur tugas unik. outfile_path harus mencakup nama file akhir.

table_name

Nama tabel.

Prosedur

Buat Server 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"}');                 
Catatan

Ekspor ke OSS

Ambil contoh file OSS yang diunggah oss://polardb/B_outfile/tpch/1t/parallel-lineitem.CSV:

  • Nama bucket: polardb.

  • Jalur dan nama file: 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';

Periksa penggunaan memori dan thread

Jika versi Milvus kluster Anda adalah 8.0.1.1.38 atau lebih baru, gunakan perintah berikut untuk melihat total penggunaan memori dan jumlah thread secara real-time untuk tugas ekspor saat ini.

  • Lihat total penggunaan memori real-time dalam byte.

    SHOW STATUS LIKE "%Oss_outfile_memory_used%";
  • Lihat jumlah total thread real-time.

    SHOW STATUS LIKE "%Oss_outfile_threads_running%";
Catatan

Jika Anda menjalankan tugas ekspor menggunakan Cluster Endpoint, Anda harus menjalankan perintah SHOW STATUS dan perintah ekspor pada node yang sama untuk melihat penggunaan sumber daya memori yang akurat untuk node tersebut.

Langkah selanjutnya

FAQ

Saat mengekspor ke OSS, Anda menerima kesalahan ini: ERROR 1086 (HY000): File 'xxxx' already exists

Kesalahan ini berarti file dengan nama yang sama sudah ada di OSS. Gunakan salah satu solusi berikut:

  • Hapus file yang sudah ada di OSS secara manual, lalu jalankan ulang pernyataan SELECT ... INTO OSSOUTFILE ....

  • Gunakan sintaks Hint OSS_REPLACE_EXISTED_FILE() untuk menimpa file yang sudah ada. Formatnya adalah:

    SELECT /*+ OSS_REPLACE_EXISTED_FILE() */ * FROM lineitem INTO OSSOUTFILE 'outserver/tpch/1t/parallel-lineitem.CSV' COLUMNS TERMINATED BY '|@|' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY "" LINES TERMINATED BY '\n';
    Catatan
    • Sintaks Hint ini secara paksa menimpa file yang sudah ada di OSS. Jika versioning OSS tidak diaktifkan, Anda tidak dapat memulihkan file yang telah ditimpa. Pertimbangkan untuk mengaktifkan versioning OSS sebelum melanjutkan.

    • Kluster PolarDB Anda harus menggunakan salah satu versi berikut agar dapat menggunakan sintaks Hint ini:

      • Versi kernel adalah MySQL 8.0.1, dan versi revisi adalah 8.0.1.1.31 atau lebih baru.

      • Versi kernel adalah MySQL 8.0.2, dan versi revisi adalah 8.0.2.2.9 atau lebih baru.

Saat mengekspor ke OSS, Anda menerima kesalahan ini: OSS error: error message : The bucket you access does not belong to you., error code: AccessDenied

Kesalahan ini berarti AccessKey dari RAM user atau Akun Alibaba Cloud Anda tidak memiliki izin untuk bucket OSS tersebut. Periksa izin AccessKey Anda.