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 SELECTsHubungkan 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 Catatan
Parameter ini tidak lagi berlaku untuk kluster yang menjalankan PolarDB MySQL Edition versi 8.0.1.1.38 atau lebih baru. |
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';
-
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_MARKERke 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:
Gabungkan ketiga bagian ini dengan |
|
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"}');
-
Contoh ini menggunakan pernyataan pembuatan Server OSS untuk versi yang lebih baru. Sesuaikan pernyataan tersebut berdasarkan versi Milvus kluster Anda.
-
oss_endpointharus berupa alamat jaringan internal dalam formatoss-{xxx}-internal.aliyuncs.com.
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%";
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.