すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ワンクリックでデータを冷蔵にダンプ

最終更新日:Jan 23, 2025

このトピックでは、クリックでデータをコールドストレージにダンプする方法を説明します。

背景情報

ALTER TABLE tblname SET TABLESPACE ossステートメントを使用すると、1つのオブジェクトをダンプできます。 ただし、テーブルとその複数のインデックス、またはパーティションテーブルとその多数のサブパーティションテーブルをダンプするには、ALTERステートメントを複数回実行する必要があります。 このプロセスは面倒であるだけでなく、エラーを見逃しがちです。 この問題を解決するために、 PolarDB for PostgreSQL (Compatible with Oracle) には、データをコールドストレージにダンプするための一連の補助関数が用意されています。

polar_osfs_toolkit拡張機能の作成

CREATE EXTENSION IF NOT EXISTS polar_osfs_toolkit;

関数

polar_alter_relation_to_oss

この関数は、非パーティションテーブル、サブパーティションテーブル、インデックスなどのオブジェクトをOSSストレージにダンプします。

構文

void polar_alter_relation_to_oss (text relname);

Parameters

パラメーター

説明

relname

オブジェクト (テーブルとインデックス) の名前。

説明
  • 非パーティションテーブルまたはサブパーティションテーブルの場合、関数は、インデックスの元の格納場所を維持しながら、テーブルデータをOSSにダンプします。

  • パーティションテーブルの場合は、polar_alter_partitioned_to_ossを使用します。

  • インデックスの場合、関数はインデックス内のデータをOSSにダンプします。

polar_alter_relation_to_oss_with_インデックス

この関数は、オブジェクト (非パーティションテーブルとサブパーティションテーブル) とそのインデックスデータをOSSにダンプします。

構文

void polar_alter_relation_to_oss_with_indexes (text relname);

Parameters

パラメーター

説明

relname

テーブル名またはインデックス名。

説明
  • 非パーティションテーブルまたはサブパーティションテーブルの場合、関数はテーブルとそのすべてのインデックスをOSSにダンプします。

  • パーティションテーブルの場合は、polar_alter_partitioned_to_ossを使用します。

  • インデックスの場合、関数はインデックス内のデータのみをOSSにダンプします。これはpolar_alter_relation_to_ossに似ています。

polar_alter_relation_to_oss_カスケード

この関数は、すべてのオブジェクト (テーブルとインデックス) とその下位オブジェクトをOSSにダンプします。

構文

void polar_alter_relation_to_oss_cascade (text relname);

Parameters

パラメーター

説明

relname

テーブル名またはインデックス名。

説明
  • 非パーティションテーブルまたはサブパーティションテーブルの場合、関数はテーブルとそのすべてのインデックスをOSSにダンプします。

  • パーティションテーブルの場合、関数はテーブル、そのグローバルインデックス、およびサブパーティションテーブルとそのインデックスをOSSにダンプします。

  • インデックスの場合、関数はインデックス内のデータをOSSにダンプします。これはpolar_alter_relation_to_ossに似ています。

polar_alter_partitioned_to_oss

この関数は、パーティションテーブルをOSSにダンプします。

構文

void polar_alter_partitioned_to_oss (text relname);

Parameters

パラメーター

説明

relname

パーティションテーブル (親テーブル) の名前。

説明

この関数はパーティションテーブルにのみ適用され、サブパーティションテーブルとそのインデックスを変更せずに、パーティションテーブルのみをOSSにダンプします。 パーティションテーブルのデータは各サブパーティションテーブルに格納されるため、この関数はデータの格納場所を変更せず、パーティションテーブルのデフォルトの格納場所をOSSに設定するだけです。

polar_alter_subpartition_to_oss

この関数は、パーティションテーブルの部分サブパーティションテーブルをOSSにダンプし、格納場所が変更されないサブパーティションテーブルの数を指定します。

構文

void polar_alter_subpartition_to_oss (text relname, int reserved_subparts_cnt);

Parameters

パラメーター

説明

relname

パーティションテーブル (親テーブル) の名前。

reserved_subparts_cnt

格納場所が変更されていないサブパーティションテーブルの数。

説明
  • この関数は、パーティションテーブル、およびパーティションテーブルとそのサブパーティションテーブルをOSSにダンプする場合にのみ適用されます。 サブパーティションテーブルのインデックスデータの格納場所は変更されません。

  • reserved_subparts_cntの値が0の場合、関数はすべてのサブパーティションテーブルをOSSにダンプします。

  • reserved_subparts_cntの値が0より大きい場合、関数は保持時間に基づいてサブパーティションテーブルをソートします。 reserved_subparts_cntサブパーティションテーブルの保存場所は、保持時間の昇順に変更されず、他のサブパーティションテーブルはOSSにダンプされます。

polar_alter_subpartition_to_oss_with_インデックス

この関数は、パーティションテーブルの部分サブパーティションテーブルをOSSにダンプし、格納場所が変更されないサブパーティションテーブルの数を設定します。

構文

void polar_alter_subpartition_to_oss_with_indexes (text relname、int reserved_subparts_cnt);

Parameters

パラメーター

説明

relname

パーティションテーブル (親テーブル) の名前。

reserved_subparts_cnt

格納場所が変更されていないサブパーティションテーブルの数。

説明
  • この関数はパーティションテーブルにのみ適用され、サブパーティションテーブルとインデックスをOSSにダンプします。

  • reserved_subparts_cntの値が0の場合、関数はすべてのサブパーティションテーブルとそのインデックスをOSSにダンプします。

  • reserved_subparts_cntの値が0より大きい場合、関数は保持時間に基づいてサブパーティションテーブルをソートします。 reserved_subparts_cntサブパーティションテーブルの保存場所は、保持時間の昇順に変更されず、他のサブパーティションテーブルはOSSにダンプされます。

polar_alter_subpartition_to_oss_interval

この関数は、パーティションテーブルの過去のサブパーティションテーブルをOSSにダンプします。

構文

void polar_alter_subpartition_to_oss_interval (text relname, interval tm_inter_value, boolean by_db_time default false);

Parameters

パラメーター

説明

relname

パーティションテーブル (親テーブル) の名前。

tm_inter_value

過去のサブパーティションテーブルを決定するために使用される時間間隔。 例: 1日、1月、および5時間。 詳細については、「間隔入力」をご参照ください。

by_db_time

このパラメーターは、tm_inter_valueパラメーターとともに使用して、現在の時刻を過去のサブパーティションテーブルの開始時刻として使用できるかどうかを判断します。 tm_inter_value値より長いサブパーティションテーブルは履歴です。 有効な値:

  • true: データベースの現在時刻を過去のサブパーティションテーブルの開始時刻として使用します。

  • false (デフォルト): 最新のサブパーティションテーブルの時刻を、過去のサブパーティションテーブルの開始時刻として使用します。

説明
  • この関数は、時間ベースのパーティションテーブルにのみ適用され、履歴サブパーティションテーブルとそのインデックスをOSSにダンプします。

  • pg_cron拡張機能を一緒に使用して、パーティション分割テーブルデータのコールドストレージへのアーカイブをスケジュールできます。 詳細については、「」をご参照ください。「パーティション分割テーブルデータのコールドストレージへのアーカイブのスケジュール」をご参照ください。

  • データベースでは、月は30日、年は365.25日です。 したがって、31日の月とうるう年に対処するには、より大きな時間間隔の値を指定する必要があります。

-- Create tables that are partitioned by day.
CREATE TABLE partition_day (
    city_id         int not null,
    logdate         date not null,
    peaktemp        int,
    unitsales       int
) PARTITION BY RANGE (logdate);
CREATE TABLE partition_day_y2024m06d01 PARTITION OF partition_day
    FOR VALUES FROM ('2024-06-01') TO ('2024-06-02');
CREATE TABLE partition_day_y2024m06d02 PARTITION OF partition_day
    FOR VALUES FROM ('2024-06-02') TO ('2024-06-03');
CREATE TABLE partition_day_y2024m06d03 PARTITION OF partition_day
    FOR VALUES FROM ('2024-06-03') TO ('2024-06-04');

-- Set the time interval to 1 day.
select polar_alter_subpartition_to_oss_interval('partition_day', '1 day'::interval);

-- The partition_day_y2024m06d01 and partition_day_y2024m06d02 subpartitioned tables and their indexes are all dumped to OSS

.