Установка 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 для резервного копирования и восстановления:
-
Убедитесь, что вы вошли в систему как
gpadminи находитесь в домашнем каталоге. -
Клонируйте репозиторий GreengageDB/gpbackup:
$ git clone https://github.com/GreengageDB/gpbackup.git -
Перейдите в каталог gpbackup:
$ cd gpbackup -
(Опционально) Переключитесь на тег для сборки и установки конкретной версии:
$ git checkout <tag_name>где
<tag_name>совпадает с номером версии. -
Установите зависимости для сборки:
$ make depend -
Соберите утилиты:
$ make build -
Установите бинарные файлы:
$ 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 и восстановить данные из нее:
-
Подключитесь к базе данных, выбранной для тестирования, через
psql:$ psql marketplace -
Выберите таблицу для проверки работы утилит. Выведите информацию о ней: количество строк, распределение по сегментам и несколько выборочных строк:
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)
-
Выйдите из
psql:\q -
Создайте бэкап базы данных с помощью
gpbackup:$ gpbackup --dbname marketplaceПосле успешного выполнения в выводе будет строка:
[INFO]:-Backup completed successfully
Также будет показана временная метка бэкапа:
[INFO]:-Backup Timestamp = 20250908074826
Файлы бэкапа создаются в подкаталогах backups/YYYYDDMM/<timestamp> каталогов данных каждого сегмента. Каждый сегмент хранит бэкап своего фрагмента данных кластера.
-
Удалите выбранную таблицу и убедитесь, что она больше не существует:
$ psql marketplace -c 'DROP TABLE products;' $ psql marketplace -c 'SELECT * FROM products;'Вторая команда выдаст ошибку:
ERROR: relation "products" does not exist
-
Восстановите базу данных, используя временную метку как идентификатор бэкапа:
$ gprestore --timestamp 20250908074826После успешного выполнения в выводе будет строка:
[INFO]:-Restore completed successfully
-
Проверьте содержимое таблицы и распределение, повторив шаги 1 и 2. Вывод показывает те же данные, что и перед созданием бэкапа, что подтверждает успешное восстановление.
Чтобы узнать больше об использовании gpbackup и gprestore, используйте опцию --help:
$ gpbackup --help
$ gprestore --help