Выгрузка данных Greenplum® в холодное хранилище Yandex Object Storage
В кластере Yandex Managed Service for Greenplum® можно включить гибридное хранилище для таблиц типа AO и AOCO (append-optimized storage). Тогда с помощью расширения Yezzey данные этих таблиц можно перенести из хранилища кластера в холодное хранилище.
Холодное хранилище удобно, если данные нужно хранить долго, а работать с ними планируется редко. Так хранение будет дешевле.
Примечание
Функциональность находится на стадии Preview и не тарифицируется.
Чтобы перенести данные из хранилища кластера в холодное хранилище:
Также есть возможность перенести данные обратно в хранилище кластера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
-
Создайте кластер Managed Service for Greenplum®. При создании убедитесь, что включена опция Гибридное хранилище.
Примечание
Эту опцию нельзя отключить после сохранения настроек кластера.
-
Получите SSL-сертификат для подключения к базе данных Greenplum®:
Linux (Bash)/macOS (Zsh)Windows (PowerShell)mkdir -p ~/.postgresql && \ wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \ --output-document ~/.postgresql/root.crt && \ chmod 0655 ~/.postgresql/root.crt
Сертификат будет сохранен в файле
~/.postgresql/root.crt
.mkdir $HOME\.postgresql; curl.exe -o $HOME\.postgresql\root.crt https://storage.yandexcloud.net/cloud-certs/CA.pem
Сертификат будет сохранен в файле
$HOME\.postgresql\root.crt
.Корпоративные политики и антивирус могут блокировать скачивание сертификата. Подробнее см. в разделе Вопросы и ответы.
Для использования графических IDE сохраните сертификат
в локальную папку и укажите путь к нему в настройках подключения.
Выгрузите таблицу Greenplum® в холодное хранилище
-
Подключитесь к кластеру:
psql "host=c-<идентификатор_кластера>.rw.mdb.yandexcloud.net \ port=6432 \ sslmode=verify-full \ dbname=postgres \ user=<имя_пользователя> \ target_session_attrs=read-write"
-
Создайте БД
db_with_yezzey
:CREATE DATABASE db_with_yezzey;
Для новой БД будут предоставлены права доступа на установку расширений. Такие права не выдаются для БД, установленной по умолчанию.
-
Подключитесь к новой БД:
\connect db_with_yezzey
-
Создайте расширение Yezzey:
CREATE EXTENSION yezzey;
-
Создайте AO-таблицу
ao_table
:CREATE TABLE ao_table (a int) WITH (appendoptimized=true) DISTRIBUTED BY (a);
-
Заполните таблицу рядом целых чисел от 1 до 10 000:
INSERT INTO ao_table SELECT * FROM GENERATE_SERIES(1, 10000);
-
Перенесите данные таблицы
ao_table
в холодное хранилище:SELECT yezzey_define_offload_policy('ao_table');
Проверьте результат
-
Проверьте, сколько места в локальном кеше кластера и в холодном хранилище занимают:
-
таблица
ao_table
:SELECT * FROM yezzey_offload_relation_status('ao_table');
-
каждый сегментный файл таблицы
ao_table
:SELECT * FROM yezzey_offload_relation_status_per_filesegment('ao_table');
Если столбец
external_bytes
в выводе команд содержит ненулевые значения, значит, таблица перенесена в холодное хранилище. -
-
Посмотрите, какие сегментные файлы таблицы перенесены в холодное хранилище:
SELECT * FROM yezzey_relation_describe_external_storage_structure('ao_table');
-
Убедитесь, что доступно чтение данных из перенесенной таблицы:
SELECT AVG(a) FROM ao_table;
Результат:
avg ----------------------- 5000.5000000000000000 (1 row)
-
Убедитесь, что доступна запись в перенесенную таблицу:
-
Добавьте в таблицу
ao_table
ряд целых чисел от 1 до 10 000:INSERT INTO ao_table SELECT * FROM GENERATE_SERIES(1, 10000);
-
Проверьте, что количество строк увеличилось вдвое:
SELECT COUNT(1) FROM ao_table;
Результат:
count ------- 20000 (1 row)
-
Перенесите таблицу из холодного хранилища в хранилище кластера
Если нужно перенести таблицу ao_table
из холодного хранилища обратно в хранилище кластера, выполните команду:
SELECT yezzey_load_relation('ao_table');
Удалите созданные ресурсы
Если созданный кластер вам больше не нужен, удалите его.
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками VMware, Inc в США и/или других странах.