Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

Частичное резервное копирование

Павел Семёнов

Этот раздел описывает, как выполнять частичное резервное копирование и восстановление в Greengage DB путем выбора отдельных схем и таблиц для включения в бэкап.

ПРИМЕЧАНИЕ

Все команды gpbackup и gprestore необходимо выполнять на мастер-хосте от имени пользователя gpadmin.

По умолчанию gpbackup и gprestore работают с целой базой данных: все схемы, таблицы и другие объекты, принадлежащие указанной базе данных, сохраняются и восстанавливаются целиком.

Вы можете выбрать отдельные объекты базы данных для включения или исключения при выполнении резервного копирования и восстановления. Такая фильтрация позволяет уменьшить размер и время создания резервной копии, если требуется сохранить только отдельные схемы или таблицы, например, при миграции части базы данных или архивировании подмножества данных.

Фильтрация на уровне схем

Чтобы ограничить охват бэкапа на уровне схем, используйте следующие опции gpbackup:

  • --exclude-schema — создает резервную копию всех схем базы данных, кроме указанной.

  • --include-schema — создает резервную копию только указанной схемы.

Примеры:

$ gpbackup --dbname marketplace --exclude-schema sales
$ gpbackup --dbname marketplace --include-schema sales

Фильтрация на уровне таблиц

Для более детального контроля можно использовать опции для отдельных таблиц:

  • --exclude-table — создает резервную копию всех таблиц базы данных, кроме указанной.

  • --include-table — создает резервную копию только указанной таблицы.

Имена таблиц должны указываться вместе со схемой, например:

$ gpbackup --dbname marketplace --exclude-table sales.orders
$ gpbackup --dbname marketplace --include-table sales.orders

Эти опции также применимы к последовательностям, представлениям и материализованным представлениям.

ПРИМЕЧАНИЕ

Имена объектов, содержащие заглавные буквы или специальные символы, нужно указывать в двойных кавычках так, как они определены в базе данных. Например:

$ gpbackup --include-table '"SalesData"."Quarterly Totals"'

Каждую из четырех опций можно указать несколько раз:

$ gpbackup --dbname marketplace --exclude-table sales.customers --exclude-table sales.orders
ПРИМЕЧАНИЕ

--include-schema и --exclude-table можно использовать совместно, чтобы включить все объекты схемы, кроме отдельных таблиц. Например, следующая команда создает резервную копию только схемы sales, исключая из нее одну таблицу:

$ gpbackup --dbname marketplace --include-schema sales --exclude-table sales.audit_log

Другие комбинации этих опций запрещены.

Включение зависимых объектов

При использовании фильтров включения необходимо явно указать все зависимые объекты, которые требуется восстановить. Например, если включить только представление, но не таблицы, на которых оно основано, восстановление завершится с ошибкой из-за отсутствующих зависимостей.

Указание объектов в файлах

В больших базах данных перечисление всех имен объектов в командной строке может быть неудобным. Для таких случаев есть опции --exclude-schema-file, --include-schema-file, --exclude-table-file и --include-table-file.

Эти опции позволяют перечислять имена объектов в текстовых файлах. Файлы должны содержать по одному имени на строку и не иметь пустых строк в конце, например:

  • Схемы:

    sales
    util
    customers
    "SalesData"
  • Таблицы:

    sales.orders
    public.test
    "SalesData"."Quarterly Totals"

Пример:

$ gpbackup --dbname marketplace --exclude-schema-file internal-schemas.txt

Фильтрация при восстановлении

Те же параметры фильтрации доступны и для gprestore:

  • --exclude-schema

  • --include-schema

  • --exclude-table

  • --include-table

  • Их аналоги для файлов *-file.

Примеры:

$ gprestore --timestamp 20251010043530 --exclude-schema sales
$ gprestore --timestamp 20251010043530 --include-schema sales --exclude-table sales.orders
$ gprestore --timestamp 20251010043530 --include-table-file restore_tables.txt

Партиционированные таблицы

По умолчанию gpbackup сохраняет все партиции партиционированной таблицы в одном файле данных на сегмент. Чтобы управлять партициями по отдельности, используйте параметр --leaf-partition-data. При его использовании создаются отдельные файлы для каждой конечной партиции, что позволяет выполнять выборочное резервное копирование и восстановление на уровне партиций.

Например, чтобы исключить определенные партиции из резервной копии, используйте --exclude-table вместе с --leaf-partition-data. В этом случае имена конечных партиций можно передать в качестве значения параметра --exclude-table:

$ gpbackup --dbname marketplace --leaf-partition-data --exclude-table public.sales_1_prt_2

Аналогично можно включить только выбранные партиции, используя --include-table:

$ gpbackup --dbname marketplace --leaf-partition-data --include-table public.sales_1_prt_2
ПРИМЕЧАНИЕ

В параметрах --exclude-table и --include-table можно указывать только имена родительских таблиц и конечных партиций. Промежуточные партиции в многоуровневой иерархии указать нельзя.

Метаданные родительской таблицы всегда включаются в резервную копию, если включается хотя бы одна из ее партиций.

При восстановлении подмножества партиций gprestore воссоздает родительскую таблицу и восстанавливает только выбранные партиции. Эта возможность также работает при восстановлении отдельных партиций из полной резервной копии таблицы:

$ gprestore --timestamp 20251010043530 --include-table public.sales_1_prt_2
$ gprestore --timestamp 20251010043530 --exclude-table public.sales_1_prt_2

Если некоторые партиции таблицы хранятся в других схемах, их включение зависит от использования --leaf-partition-data:

  • При использовании --leaf-partition-data в резервную копию включаются все партиции, даже из исключенных схем.

  • Без --leaf-partition-data партиции из исключенных схем не включаются.