Выгрузка данных Greenplum® в холодное хранилище Yandex Object Storage
Важно
Часть ресурсов, необходимых для прохождения практического руководства, доступны только в регионе Россия.
В кластере Greenplum® можно включить гибридное хранилище для таблиц типа AO и AOCO (append-optimized storage). Тогда с помощью расширения Yezzey данные этих таблиц можно перенести из хранилища кластера в холодное хранилище.
Холодное хранилище удобно, если данные нужно хранить долго, а работать с ними планируется редко. Так хранение будет дешевле.
Примечание
Функциональность находится на стадии Preview и не тарифицируется.
Чтобы перенести данные из хранилища кластера в холодное хранилище:
Также есть возможность перенести данные обратно в хранилище кластера.
Если созданные ресурсы вам больше не нужны, удалите их.
Необходимые платные ресурсы
В стоимость поддержки описываемого решения входят:
- Плата за кластер Greenplum®: использование вычислительных ресурсов, выделенных хостам, и дискового пространства (см. тарифы Greenplum®).
- Плата за использование публичных IP-адресов, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
Перед началом работы
-
Создайте кластер Greenplum®. При создании убедитесь, что включена опция Гибридное хранилище.
Примечание
Эту опцию нельзя отключить после сохранения настроек кластера.
-
Получите SSL-сертификат для подключения к базе данных Greenplum®:
Linux (Bash)/macOS (Zsh)Windows (PowerShell)mkdir -p ~/.postgresql && \ wget "https://storage.yandexcloud.kz/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.kz/cloud-certs/CA.pemСертификат будет сохранен в файле
$HOME\.postgresql\root.crt.Корпоративные политики и антивирус могут блокировать скачивание сертификата. Подробнее см. в разделе Вопросы и ответы.
Для использования графических IDE сохраните сертификат
в локальную папку и укажите путь к нему в настройках подключения.
Выгрузите таблицу Greenplum® в холодное хранилище
-
Подключитесь к кластеру:
psql "host=c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz \ 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® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.