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

Установка gpbackup и gprestore

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

Этот раздел описывает установку утилит Greengage DB для резервного копирования и восстановления из бэкапов gpbackup и gprestore в поддерживаемых системах семейства Linux.

Чтобы начать использовать эти утилиты, их нужно собрать из исходного кода и установить на мастер-хост кластера. Исходный код доступен в репозитории GreengageDB/gpbackup.

Предварительные требования

Утилиты для резервного копирования и восстановления написаны на языке Go. Для их сборки на мастер-хосте должен быть установлен Go версии 1.20 или выше, а также определена переменная окружения GOPATH.

Чтобы проверить эти условия, выполните команды от имени пользователя gpadmin:

$ go version
$ echo $GOPATH

Вывод может выглядеть так:

go version go1.25.1 linux/amd64
/home/gpadmin/go

Инструкции по установке Go доступны на официальном сайте Go.

Сборка из исходного кода

Чтобы собрать утилиты Greengage DB для резервного копирования и восстановления:

  1. Убедитесь, что вы вошли в систему как gpadmin и находитесь в домашнем каталоге.

  2. Клонируйте репозиторий GreengageDB/gpbackup:

    $ git clone https://github.com/GreengageDB/gpbackup.git
  3. Перейдите в каталог gpbackup:

    $ cd gpbackup
  4. (Опционально) Переключитесь на тег для сборки и установки конкретной версии:

    $ git checkout <tag_name>

    где <tag_name> совпадает с номером версии.

  5. Установите зависимости для сборки:

    $ make depend
  6. Соберите утилиты:

    $ make build
  7. Установите бинарные файлы:

    $ make install

    Для выполнения этой команды требуется работающий кластер Greengage DB. Она копирует gpbackup и gprestore в $GPHOME/bin на мастер-хосте. В случае успеха вывод включает строку следующего вида:

    cp /home/gpadmin/goproject/bin/gpbackup /home/gpadmin/goproject/bin/gprestore /usr/local/gpdb/bin

В результате gpbackup и gprestore становятся доступны на мастер-хосте:

$ gpbackup --version
$ gprestore --version

Пример вывода:

gpbackup version 1.30.6+dev.1.g108659cb
gprestore version 1.30.6+dev.1.g108659cb

Проверка установки

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

Чтобы создать резервную копию базы данных Greengage DB и восстановить данные из нее:

  1. Подключитесь к базе данных, выбранной для тестирования, через psql:

    $ psql marketplace
  2. Выберите таблицу для проверки работы утилит. Выведите информацию о ней: количество строк, распределение по сегментам и несколько выборочных строк:

    SELECT COUNT(*) FROM products;
    SELECT gp_segment_id, COUNT(*)
    FROM products
    GROUP BY gp_segment_id;
    SELECT * FROM products ORDER BY id LIMIT 5;

    Вывод может выглядеть так:

     count
    -------
     50000
    (1 row)
     gp_segment_id | count
    ---------------+-------
                 2 | 12421
                 3 | 12493
                 0 | 12605
                 1 | 12481
    (4 rows)
     id |   name    |           description            |        created_at         | price
    ----+-----------+----------------------------------+---------------------------+--------
      1 | Product 1 | 0fd39bdb8dcc6c9558ba9be459ea54bd | 2025-09-08 07:46:58.20256 | 842.05
      2 | Product 2 | a04e2d69b6b391793ef2541f19e77757 | 2025-09-08 07:46:58.20256 | 545.25
      3 | Product 3 | 066dfe5e4e697bf9b85091169330f21a | 2025-09-08 07:46:58.20256 |  37.86
      4 | Product 4 | 0b176f490b912adb2da893f8606fa0b9 | 2025-09-08 07:46:58.20256 | 956.44
      5 | Product 5 | cf03c00cfb6f9ce4557da232a27e85b4 | 2025-09-08 07:46:58.20256 | 354.37
    (5 rows)
  3. Выйдите из psql:

    \q
  4. Создайте бэкап базы данных с помощью gpbackup:

    $ gpbackup --dbname marketplace

    После успешного выполнения в выводе будет строка:

    [INFO]:-Backup completed successfully

    Также будет показана временная метка бэкапа:

    [INFO]:-Backup Timestamp = 20250908074826

    Файлы бэкапа создаются в подкаталогах backups/YYYYDDMM/<timestamp> каталогов данных каждого сегмента. Каждый сегмент хранит бэкап своего фрагмента данных кластера.

  5. Удалите выбранную таблицу и убедитесь, что она больше не существует:

    $ psql marketplace -c 'DROP TABLE products;'
    $ psql marketplace -c 'SELECT * FROM products;'

    Вторая команда выдаст ошибку:

    ERROR:  relation "products" does not exist
  6. Восстановите базу данных, используя временную метку как идентификатор бэкапа:

    $ gprestore --timestamp 20250908074826

    После успешного выполнения в выводе будет строка:

    [INFO]:-Restore completed successfully
  7. Проверьте содержимое таблицы и распределение, повторив шаги 1 и 2. Вывод показывает те же данные, что и перед созданием бэкапа, что подтверждает успешное восстановление.

Чтобы узнать больше об использовании gpbackup и gprestore, используйте опцию --help:

$ gpbackup --help
$ gprestore --help