All Products
Search
Document Center

PolarDB:Arsipkan data dalam format CSV atau ORC

Last Updated:Jun 13, 2026

Topik ini menjelaskan cara mengarsipkan data dingin dalam format CSV atau ORC serta memulihkan data dari tabel OSS ke PolarStore.

Berlaku untuk

Anda harus terlebih dahulu mengaktifkan arsip data dingin. Fitur ini memerlukan salah satu revisi kluster berikut:

  • Mengarsipkan ke format CSV

    • Untuk kluster Edisi Kluster:

      • Arsipkan tabel standar:

        • MySQL 8.0.1, revisi 8.0.1.1.47 atau lebih baru.

        • MySQL 8.0.2, revisi 8.0.2.2.10 atau lebih baru.

      • Arsipkan tabel partisi:

        • MySQL 8.0.2, revisi 8.0.2.2.34.1 atau lebih baru.

    • Untuk kluster Kluster Multi-master (Limitless) Edisi:

      • MySQL 8.0.1, revisi 8.0.1.0.13 atau lebih baru.

  • Mengarsipkan ke format ORC

    • Untuk kluster Edisi Kluster:

      • Arsipkan tabel standar: MySQL 8.0.2, revisi 8.0.2.2.30 atau lebih baru.

      • Arsipkan tabel partisi: MySQL 8.0.2, revisi 8.0.2.2.34.1 atau lebih baru.

    • Untuk kluster Kluster Multi-master (Limitless) Edisi: MySQL 8.0.2, revisi 8.0.2.2.30 atau lebih baru.

Catatan

Saat Anda mengarsipkan data dingin secara manual pada kluster dengan salah satu versi berikut, operasi tersebut tidak dicatat dalam log biner.

  • PolarDB for MySQL 8.0.1 dengan revisi 8.0.1.1.33 atau lebih baru.

  • PolarDB for MySQL 8.0.2 dengan revisi 8.0.2.2.11.1 atau lebih baru.

Prosedur

Arsipkan tabel standar

Arsip data dingin merupakan operasi tingkat tabel. Setelah diarsipkan, tabel tersebut menjadi tabel arsip read-only. Engine tabel yang diarsipkan adalah engine OSS, dan file datanya disimpan di Object Storage Service (OSS). Setelah arsip selesai, PolarDB melepaskan ruang yang sebelumnya ditempati oleh tabel asli di PolarStore.

Syntax

Format CSV

  • Format 1:

    ALTER TABLE table_name ENGINE = CSV CONNECTION = 'default_oss_server';
  • Format 2: Kluster Anda harus memenuhi salah satu persyaratan revisi berikut.

    • Edisi Kluster:

      • MySQL 8.0.1 dengan revisi 8.0.1.1.33 atau lebih baru.

      • MySQL 8.0.2 dengan revisi 8.0.2.2.13 atau lebih baru.

    • Kluster Multi-master (Limitless) Edisi: Revisi harus 8.0.1.1.15 atau lebih baru.

    ALTER TABLE table_name ENGINE = CSV STORAGE OSS;

Format ORC

ALTER TABLE table_name ENGINE = ORC STORAGE OSS;
Catatan
  • Jika file data dengan nama yang sama dengan file arsip target sudah ada di OSS, operasi akan gagal dengan pesan error. Contohnya: Target file for archived table exists on oss.

  • Opsi FORCE STORAGE OSS didukung untuk menghapus paksa file OSS ketika versi kluster Anda adalah MySQL 8.0.2 dan revisinya 8.0.2.2.29 atau lebih baru. Anda dapat menambahkan opsi FORCE STORAGE OSS ke sintaks di atas untuk menghapus struktur tabel dan file OSS yang sesuai. Contohnya:

    DROP TABLE table_name FORCE STORAGE OSS;

Parameter

Parameter

Deskripsi

table_name

Nama tabel yang akan diarsipkan ke OSS.

Pertimbangan

  • Anda dapat menggunakan fitur arsip data dingin untuk tabel yang menggunakan engine InnoDB atau engine X-Engine.

  • Anda tidak dapat menggunakan pernyataan DDL atau DML untuk memodifikasi tabel selama proses arsip.

  • Anda tidak dapat mengarsipkan data ke server OSS yang dibuat pengguna.

  • Tabel InnoDB harus memiliki primary key agar dapat diarsipkan.

  • Setelah diarsipkan, tabel di OSS menjadi read-only dan mungkin menunjukkan kinerja kueri yang lebih lambat. Anda harus menguji kinerjanya untuk memastikan memenuhi kebutuhan Anda.

  • Tabel yang memiliki In-Memory Column Index (IMCI) tidak dapat diarsipkan dalam format CSV; tabel tersebut harus diarsipkan dalam format ORC.

Contoh

Arsipkan data di tabel t ke OSS dalam format CSV atau ORC.

  1. Buat tabel InnoDB bernama t di database oss_test.

    CREATE TABLE t(a int, b int, c int, primary key(a)) ENGINE = INNODB;
  2. Masukkan data ke tabel t.

    INSERT INTO t VALUES (1,2,3);
  3. Arsipkan tabel menggunakan perintah ALTER TABLE.

    • Arsipkan dalam format CSV:

      ALTER TABLE t ENGINE = CSV CONNECTION = 'default_oss_server';
    • Arsipkan dalam format ORC:

      ALTER TABLE t ENGINE = ORC STORAGE OSS;
  4. Setelah arsip selesai, Anda dapat melihat informasi tabel yang diarsipkan di PolarDB console atau langsung melakukan kueri data menggunakan SQL:

    • Untuk melihat informasi database dan tabel yang diarsipkan di OSS: Login ke Konsol PolarDB. Di panel navigasi sisi kiri kluster target, pilih Settings and Management > Data Lifecycle > Data Archive (Cold Data) untuk melihat informasinya.

    • Lakukan kueri data di tabel yang diarsipkan seperti pada tabel standar. Contohnya:

      SELECT * FROM t;

Arsipkan partisi ke tabel eksternal OSS

Catatan
  • Bagian ini hanya berlaku untuk PolarDB for MySQL 8.0.2.

  • Jika versi minor kernel lebih awal dari 8.0.2.2.33, konfigurasikan parameter berikut:

    • Di Konsol PolarDB, atur parameter kluster partition_level_mdl_enabled ke ON untuk mengaktifkan fitur metadata lock (MDL) tingkat partisi.

    • Di Konsol PolarDB, atur parameter kluster loose_use_oss_meta ke ON untuk mengaktifkan fitur use_oss_meta.

Sintaks

CALL dbms_dlm.archive_partition2table('source_db', 'source_tb', 'source_part', 'archive_db', 'archive_table', ' oss_file_filter');

Parameter

Parameter

Deskripsi

source_db

Nama database tabel sumber.

source_tb

Nama tabel sumber.

source_part

Nama partisi tabel sumber yang akan diarsipkan. Untuk menentukan beberapa partisi, pisahkan nama-namanya dengan koma.

archive_db

Nama database tabel tujuan.

archive_table

Nama tabel tujuan.

oss_file_filter

Daftar kolom yang dipisahkan koma untuk dimasukkan ke dalam oss_file_filter untuk tabel tujuan. Untuk informasi lebih lanjut, lihat Percepatan kueri OSS_FILE_FILTER.

Pertimbangan

  • Jika tabel OSS tujuan belum ada, tabel tersebut akan dibuat secara otomatis. Untuk mempercepat kueri, oss_file_filter juga dibuat secara otomatis pada kolom yang ditentukan oleh parameter oss_file_filter. Primary key dan partition key juga ditambahkan secara otomatis ke oss_file_filter.

  • Jika tabel OSS tujuan sudah ada, Anda harus membandingkan nama kolom atau definisi tipe kolom kedua tabel tersebut. Data hanya dapat diarsipkan jika definisinya konsisten. Jika tidak, akan muncul error. Anda dapat menggunakan pernyataan DDL untuk menyamakan definisi kedua tabel. Untuk informasi lebih lanjut, lihat DDL Data Dingin. Selain itu, jika oss_file_filter telah didefinisikan pada tabel tujuan dan definisinya tidak konsisten dengan yang ada di perintah call dbms_dlm.archive_partition2table, maka definisi oss_file_filter pada tabel tujuan yang akan digunakan.

  • Jika tabel OSS tujuan belum ada tetapi file dengan nama yang sama sudah ada di OSS, pesan error akan muncul saat Anda melakukan operasi arsip. Pesan error tersebut sebagai berikut:

    mysql> CALL dbms_dlm.archive_partition2table('test', 'sales', 'p0', 'test', 'sales_history', 'id');
    ERROR 8181 (HY000): [Data Lifecycle Management] errmsg: Target file for archived table exists on oss, please remove it first, or use flag 'FORCE' to overwrite on existing files.

    Jika Anda memastikan bahwa file sisa di OSS tidak diperlukan, Anda dapat menggunakan prosedur tersimpan untuk menghapus data di OSS lalu melakukan operasi arsip.

    -- Hapus data OSS.
    mysql> CALL dbms_oss.delete_table_file('test', 'sales_history');
    
    Query OK, 0 rows affected (0.76 sec)
    
    -- Lakukan operasi arsip.
    mysql> CALL dbms_dlm.archive_partition2table('test', 'sales', 'p0', 'test', 'sales_history', 'id');
    
    Query OK, 0 rows affected (4.24 sec)
  • Tabel OSS tujuan hanya mendukung data dingin dalam format CSV.

  • Setelah partisi diarsipkan, tabel harus tetap berisi setidaknya satu partisi InnoDB.

  • Data yang diarsipkan kehilangan informasi partisinya dan tidak dapat langsung dipulihkan ke partisi. Namun, Anda dapat memulihkan data tersebut ke dalam tabel menggunakan pernyataan INSERT ... SELECT.

  • Anda tidak dapat mengarsipkan partisi tingkat kedua secara individual. Anda hanya dapat mengarsipkan seluruh partisi tingkat pertama, termasuk semua partisi tingkat keduanya.

  • Tabel berikut mencantumkan jenis partisi yang didukung oleh fungsi partisi PolarDB for MySQL.

    Partisi tingkat pertama

    Partisi tingkat kedua

    Dukungan arsip OSS

    HASH

    Segala jenis

    Mengarsipkan partisi tingkat pertama HASH ke tabel eksternal OSS tidak didukung.

    LIST

    Segala jenis

    Didukung.

    RANGE

    Segala jenis

    Didukung.

    KEY

    Segala jenis

    Didukung.

    LIST DEFAULT

    Segala jenis

    Mengarsipkan partisi DEFAULT tidak didukung.

Contoh

  1. Buat tabel partisi InnoDB dan masukkan data.

    DROP TABLE IF EXISTS `sales`;
    -- Buat tabel partisi.
    CREATE TABLE `sales` (
      `id` int DEFAULT NULL,
      `name` varchar(20) DEFAULT NULL,
      `order_time` datetime NOT NULL,
      primary key (order_time)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    PARTITION BY RANGE  COLUMNS(order_time) INTERVAL(month, 1)
    (PARTITION p0 VALUES LESS THAN ('2022-01-01') ENGINE = InnoDB,
     PARTITION p1 VALUES LESS THAN ('2023-01-01 00:00:00') ENGINE = InnoDB,
     PARTITION p2 VALUES LESS THAN ('2024-01-01 00:00:00') ENGINE = InnoDB);
    
    DROP PROCEDURE IF EXISTS proc_batch_insert;
    delimiter $$
    CREATE PROCEDURE proc_batch_insert(IN begin INT, IN end INT, IN name VARCHAR(20))
      BEGIN
      SET @insert_stmt = concat('INSERT INTO ', name, ' VALUES(? , ?, ?);');
      PREPARE stmt from @insert_stmt;
      WHILE begin <= end DO
        SET @ID1 = begin;
        SET @NAME = CONCAT(begin+begin*281313, '@stiven');
        SET @TIME = from_days(begin + 738368);
        EXECUTE stmt using @ID1, @NAME, @TIME;
        SET begin = begin + 1;
        END WHILE;
      END;
    $$
    delimiter ;
    
    CALL proc_batch_insert(1, 1000, 'sales');
  2. Arsipkan partisi p0 dari tabel partisi ke tabel OSS baru.

    1. Jalankan perintah berikut untuk melihat skema tabel sales.

      -- Lihat status tabel InnoDB saat ini.
      mysql> SHOW CREATE TABLE sales;

      Hasil berikut dikembalikan:

      *************************** 1. row ***************************
             Table: sales
      Create Table: CREATE TABLE `sales` (
        `id` int(11) DEFAULT NULL,
        `name` varchar(20) DEFAULT NULL,
        `order_time` datetime NOT NULL,
        PRIMARY KEY (`order_time`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
      /*!50500 PARTITION BY RANGE  COLUMNS(order_time) */ /*!99990 800020200 INTERVAL(MONTH, 1) */
      /*!50500 (PARTITION p0 VALUES LESS THAN ('2022-01-01') ENGINE = InnoDB,
       PARTITION p1 VALUES LESS THAN ('2023-01-01 00:00:00') ENGINE = InnoDB,
       PARTITION p2 VALUES LESS THAN ('2024-01-01 00:00:00') ENGINE = InnoDB,
       PARTITION _p20240201000000 VALUES LESS THAN ('2024-02-01 00:00:00') ENGINE = InnoDB,
       PARTITION _p20240301000000 VALUES LESS THAN ('2024-03-01 00:00:00') ENGINE = InnoDB,
       PARTITION _p20240401000000 VALUES LESS THAN ('2024-04-01 00:00:00') ENGINE = InnoDB,
       PARTITION _p20240501000000 VALUES LESS THAN ('2024-05-01 00:00:00') ENGINE = InnoDB) */
      1 row in set (0.03 sec)
    2. Jalankan perintah berikut untuk mengarsipkan partisi p0 ke tabel OSS sales_history.

      -- Arsipkan partisi p0 ke tabel OSS sales_history dan buat OSS_FILE_FILTER pada kolom id.
      mysql> CALL dbms_dlm.archive_partition2table('test', 'sales', 'p0', 'test', 'sales_history', 'id');
      Query OK, 0 rows affected (1.86 sec)
    3. Jalankan perintah berikut untuk melihat skema tabel sales_history.

      SHOW CREATE TABLE sales_history;

      Hasil berikut dikembalikan:

      *************************** 1. row ***************************;
             Table: sales_history
      Create Table: CREATE TABLE `sales_history` (
        `id` int(11) DEFAULT NULL,
        `name` varchar(20) DEFAULT NULL,
       `order_time` datetime DEFAULT NULL,
        PRIMARY KEY (`order_time`)
      ) /*!99990 800020213 STORAGE OSS */ ENGINE=CSV DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci /*!99990 800020204 NULL_MARKER='NULL' */ /*!99990 800020223 OSS META=1 */ /*!99990 800020224 OSS_FILE_FILTER='id,order_time' */
      1 row in set (0.00 sec)
  3. Lakukan kueri pada tabel OSS baru.

    Catatan

    Anda dapat mengaktifkan fitur percepatan kueri OSS_FILE_FILTER untuk mempercepat kueri.

    mysql> explain SELECT * FROM sales_history WHERE id = 100;
    +----+-------------+---------------+------------+------+---------------+------+---------+------+------+----------+-------------------------------------------------------------------------------+
    | id | select_type | table         | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra                                                                         |
    +----+-------------+---------------+------------+------+---------------+------+---------+------+------+----------+-------------------------------------------------------------------------------+
    |  1 | SIMPLE      | sales_history | NULL       | ALL  | NULL          | NULL | NULL    | NULL |  152 |    10.00 | Using where; With pushed engine condition (`test`.`sales_history`.`id` = 100) |
    +----+-------------+---------------+------------+------+---------------+------+---------+------+------+----------+-------------------------------------------------------------------------------+
    1 row in set, 1 warning (0.00 sec)
    
    mysql> SELECT * FROM sales_history WHERE id = 100;
    +------+-----------------+---------------------+
    | id   | name            | order_time          |
    +------+-----------------+---------------------+
    |  100 | 28131400@stiven | 2021-11-09 00:00:00 |
    +------+-----------------+---------------------+
    1 row in set (0.24 sec)

Arsipkan tabel partisi

Catatan
  • Anda hanya dapat mengarsipkan tabel partisi jika kluster PolarDB for MySQL Anda adalah versi 8.0.2 dan versi minor kernel-nya 8.0.2.2.34.1 atau lebih baru.

  • Jika versi minor kernel Anda lebih awal dari 8.0.2.2.33, buka Pusat Kuota. Temukan kuota berdasarkan ID Kuota polardb_mysql_hybrid_partition, lalu klik Request di kolom Tindakan untuk mengaktifkan fitur tersebut.

Saat Anda mengarsipkan tabel partisi, Anda mengarsipkan partisi-partisinya. Tabel tersebut menjadi tabel partisi hibrida, dan file data partisi yang diarsipkan disimpan di OSS. Setelah operasi arsip selesai, PolarDB secara otomatis melepaskan ruang yang sebelumnya ditempati oleh partisi di PolarStore.

Sintaks

  • Arsipkan sebagai file dalam format CSV:

    ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = CSV;
  • Arsipkan sebagai file dalam format ORC:

    ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = ORC;
Catatan
  • Jika file data dengan nama yang sama dengan file data yang diarsipkan sudah ada di OSS, sistem akan melaporkan error bahwa file tersebut sudah ada. Contohnya: Target file for archived table exists on oss.

  • Ketika versi kluster Anda adalah MySQL 8.0.2 dan revisinya 8.0.2.2.29 atau lebih baru, Anda dapat menggunakan opsi FORCE STORAGE OSS untuk menghapus paksa file OSS. Anda dapat menambahkan opsi FORCE STORAGE OSS ke tiga sintaks yang disebutkan di atas untuk menghapus struktur tabel dan file OSS yang sesuai. Sebagai contoh, untuk mengarsipkan tabel partisi dalam format CSV, sintaks penambahan opsi FORCE STORAGE OSS adalah sebagai berikut:

    ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = CSV FORCE STORAGE OSS;

Parameter

Parameter

Deskripsi

table_name

Nama tabel yang akan diarsipkan ke OSS.

part_name

Nama partisi yang akan diarsipkan ke OSS.

Pertimbangan

  • Anda hanya dapat menggunakan fitur arsip data dingin untuk tabel partisi InnoDB.

  • Tabel menjadi tabel partisi hibrida setelah diarsipkan. Tabel partisi hibrida dapat berisi partisi ORC atau CSV. Anda tidak dapat melakukan operasi DDL Online pada tabel partisi hibrida, kecuali untuk menambah atau menghapus kolom dan indeks. Untuk pertimbangan penggunaan, lihat Buat partisi hibrida.

  • Anda tidak dapat memodifikasi data partisi yang diarsipkan.

  • Anda tidak dapat menggunakan arsip data dingin untuk partisi tingkat kedua dalam tabel partisi.

  • Anda tidak dapat menggunakan arsip data dingin untuk partisi DEFAULT dari tabel partisi LIST DEFAULT HASH.

  • Anda tidak dapat menggunakan arsip data dingin untuk tabel partisi HASH atau KEY.

  • Anda tidak dapat mengarsipkan seluruh tabel partisi secara manual.

  • Saat Anda mengarsipkan data dalam partisi, jika file dengan nama yang sama sudah ada di OSS, operasi akan gagal dan pesan error berikut akan dilaporkan:

    Target file for archived table exists on oss.

    Anda harus menjalankan perintah berikut untuk menimpa file yang sudah ada di OSS. Ganti table_name dan part_name dengan nilai aktual Anda.

    ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = CSV/ORC FORCE STORAGE OSS;

Contoh

Arsipkan data di partisi p1 dan p2 dari tabel t ke OSS dalam format CSV.

  1. Buat tabel InnoDB bernama t di database.

    CREATE TABLE t(a int, b int, c int, primary key(a))
    PARTITION BY RANGE(a)
    (PARTITION p1 values less than(100),
     PARTITION p2 values less than(200),
     PARTITION p3 values less than MAXVALUE
    );
  2. Masukkan data ke tabel t.

    INSERT INTO t VALUES(1,1,1);
    INSERT INTO t VALUES(10,10,10);
    INSERT INTO t VALUES(100,100,100);
    INSERT INTO t VALUES(150,150,150);
    INSERT INTO t VALUES(200,200,200);
    INSERT INTO t VALUES(1000,1000,1000);
  3. Jalankan perintah berikut untuk mengarsipkan data di partisi p1 dan p2 ke engine OSS.

    • Arsipkan dalam format CSV:

      ALTER TABLE t CHANGE PARTITION p1 ENGINE = csv;
      ALTER TABLE t CHANGE PARTITION p2 ENGINE = csv;
    • Arsipkan dalam format ORC:

      ALTER TABLE t CHANGE PARTITION p1 ENGINE = ORC;
      ALTER TABLE t CHANGE PARTITION p2 ENGINE = ORC;
  4. Setelah arsip selesai, Anda dapat login ke PolarDB console untuk melihat informasi database dan tabel yang diarsipkan di OSS, atau gunakan pernyataan SQL untuk melakukan kueri data di tabel partisi hibrida:

    • Untuk melihat informasi database dan tabel yang diarsipkan di OSS: Login ke Konsol PolarDB. Di panel navigasi sisi kiri kluster target, pilih Settings and Management > Data Lifecycle > Data Archive (Cold Data) untuk melihat informasinya.

    • Untuk melakukan kueri data di tabel partisi hibrida, lihat Melakukan kueri partisi hibrida.

Enkripsi TDE untuk data yang diarsipkan

Catatan
  • Hanya arsip manual dalam format CSV atau ORC yang didukung.

  • Hanya kluster PolarDB for MySQL dengan versi berikut yang mendukung enkripsi file data di OSS selama arsip:

    • 8.0.1 dengan versi minor 8.0.1.1.47 atau lebih baru.

    • 8.0.2 dengan versi minor 8.0.2.2.27 atau lebih baru.

  • Jika versi minor kluster Anda tidak memenuhi persyaratan, kami menyarankan Anda meningkatkan versi minor tersebut. Untuk informasi lebih lanjut, lihat manajemen versi minor.

Untuk memenuhi kebutuhan keamanan data Anda, Anda dapat mengaktifkan Enkripsi Data Transparan (TDE) untuk file data dingin yang diarsipkan ke OSS. Prinsip dasarnya adalah Anda memilih file yang ingin dienkripsi selama operasi arsip, dan server OSS melakukan enkripsi tersebut. Untuk informasi lebih lanjut, lihat Enkripsi Data. Setelah data dienkripsi, Anda dapat menggunakan pernyataan SQL di PolarDB for MySQL untuk melakukan kueri data yang diarsipkan. Seluruh proses enkripsi dan dekripsi dilakukan di latar belakang dan transparan bagi Anda, sehingga tidak memerlukan operasi tambahan.

Sintaks

Selama operasi arsip manual, Anda dapat menambahkan sintaks ENCRYPTION="Y" untuk mengaktifkan TDE.

ALTER TABLE t1 engine = CSV ENCRYPTION="Y" STORAGE OSS;

Pulihkan data dari OSS ke PolarStore

Pulihkan tabel arsip standar

Untuk memodifikasi data dingin yang diarsipkan di OSS, gunakan sintaks ALTER ENGINE untuk memulihkan data ke PolarStore. Memulihkan data ke PolarStore juga menghapus data yang sesuai dari OSS. Setelah Anda memodifikasi data, Anda dapat mengarsipkan kembali tabel yang telah dimodifikasi ke OSS.

Sintaks
ALTER TABLE table_name ENGINE[=]engine_name;
Parameter

Parameter

Deskripsi

table_name

Nama tabel OSS yang akan dipulihkan.

engine_name

Jenis engine setelah pemulihan.

Pertimbangan

Tabel OSS yang diarsipkan bersifat read-only dan tidak mengizinkan operasi INSERT, UPDATE, atau DELETE. Untuk memodifikasi data, Anda harus terlebih dahulu memulihkan tabel ke engine read-write, seperti InnoDB. Mencoba memodifikasi tabel OSS read-only akan menghasilkan error berikut:

1036 - Table 't1' is read only
Contoh

Pulihkan tabel OSS t ke PolarStore di database oss_test.

ALTER TABLE `oss_test`.`t` ENGINE = InnoDB;

Modifikasi data di tabel InnoDB t. Setelah Anda memodifikasi data, Anda dapat mengarsipkan kembali tabel t dari engine InnoDB ke OSS. Contohnya:

ALTER TABLE t ENGINE = CSV CONNECTION = 'default_oss_server';

atau

ALTER TABLE t ENGINE = CSV STORAGE OSS;

Pulihkan partisi yang diarsipkan

Jika Anda perlu memulihkan data dari tabel partisi yang diarsipkan ke PolarStore, Anda dapat menggunakan pernyataan ALTER untuk memulihkan data dari OSS ke PolarStore. Setelah data dipulihkan, data dingin di OSS juga dihapus.

Catatan

Kluster Anda harus merupakan PolarDB for MySQL 8.0.2 dengan revisi kernel 8.0.2.2.34.1 atau lebih baru.

Sintaks
ALTER TABLE table_name REORGANIZE PARTITION part_name INTO (partition_definition);
Parameter

Parameter

Deskripsi

table_name

Nama tabel OSS yang akan dipulihkan.

part_name

Nama partisi yang akan dipulihkan.

partition_definition

Harus sama dengan partition_definition dari partisi yang ingin Anda pulihkan.

Contoh

Pulihkan data dari partisi p1 dari tabel partisi yang diarsipkan t dari OSS ke PolarStore.

ALTER TABLE t REORGANIZE PARTITION p1 INTO(PARTITION p1 values less than(100));

Hapus file yang sesuai di OSS

Catatan
  • Fitur ini hanya didukung pada kluster PolarDB for MySQL yang menjalankan versi berikut:

    • Versi 8.0.1, dan versi minor harus 8.0.1.1.42 atau lebih baru.

    • Versi 8.0.2, dan versi minor harus 8.0.2.2.23 atau lebih baru.

  • Jika versi minor kluster Anda tidak memenuhi persyaratan di atas, Anda tidak dapat menghapus file yang sesuai di OSS. Tingkatkan versi minor kluster Anda. Untuk informasi lebih lanjut, lihat manajemen versi minor.

Saat Anda menghapus tabel di OSS atau mengimpornya kembali ke PolarStore, file di OSS tidak dihapus secara otomatis. Setelah Anda memastikan bahwa data tersebut tidak lagi diperlukan, gunakan sintaks berikut untuk menghapus file yang sesuai di OSS:

CALL dbms_oss.delete_table_file('database_name', 'table_name');

Operasi penghapusan file di OSS bersifat asinkron. File tersebut benar-benar dihapus hanya setelah semua node di kluster tidak lagi bergantung padanya. Trafik tinggi dapat menyebabkan penundaan. Jika perintah gagal dan mengembalikan error OSS files are still in use, tunggu beberapa saat lalu jalankan kembali perintah tersebut.