Смена внешнего порта GreenPlum

This commit is contained in:
2025-12-09 09:57:52 +03:00
parent 2bdeb17cee
commit 4515577b4a
4 changed files with 55 additions and 6 deletions
+51 -1
View File
@@ -199,7 +199,7 @@ docker compose -f docker-compose.yml exec bookings-db bash -lc 'PGPASSWORD="$POS
- `GP_USER` — пользователь (по умолчанию: gpadmin)
- `GP_PASSWORD` — пароль (по умолчанию: gpadmin)
- `GP_DB` — база данных (по умолчанию: gpadmin)
- `GP_PORT` — порт (по умолчанию: 5432)
- `GP_PORT` — порт Greenplum внутри Docker-сети (по умолчанию: 5432, менять обычно не нужно; внешний порт на хосте для подключения клиентов — 5435).
### Демо-БД bookings (Postgres)
- `BOOKINGS_DB_USER` — пользователь Postgres для демобазы (по умолчанию: bookings)
@@ -247,6 +247,56 @@ docker compose -f docker-compose.yml exec bookings-db bash -lc 'PGPASSWORD="$POS
---
## 🧩 Подключение к базам через DBeaver
Ниже — краткая инструкция, как подключиться к Greenplum и демо-БД bookings из DBeaver. Перед этим убедитесь, что стенд запущен:
- `cp .env.example .env` (если ещё не делали)
- `make up`
- `make bookings-init`
- `make ddl-gp`
### Greenplum (аналитическая БД)
1. Откройте DBeaver → **New Database Connection**.
2. Выберите драйвер **PostgreSQL** (или **Greenplum**, если он есть в вашей версии DBeaver).
3. На вкладке **Main** заполните поля (по умолчанию):
- `Host`: `localhost`
- `Port`: `5435` (внешний порт Greenplum на хосте)
- `Database`: значение `GP_DB` (по умолчанию `gpadmin`)
- `Username`: значение `GP_USER` (по умолчанию `gpadmin`)
- `Password`: значение `GP_PASSWORD` (по умолчанию `gpadmin`)
4. Нажмите **Test Connection****OK**, затем **Finish**.
После подключения:
- Основные таблицы лаба — в схеме `public` базы `gpadmin` (например, `public.orders`).
- После настройки PXF и выполнения `make ddl-gp` станет доступна внешняя таблица `public.ext_bookings_bookings` — чтение из демо-БД bookings через PXF.
### bookings-db (демо-БД источника)
Для работы с исходными данными (демо-БД `demo`) достаточно стандартного PostgreSQL-подключения.
1. Откройте DBeaver → **New Database Connection** → драйвер **PostgreSQL**.
2. На вкладке **Main** укажите (значения по умолчанию из `.env.example`):
- `Host`: `localhost`
- `Port`: значение `BOOKINGS_DB_PORT` из `.env` (по умолчанию `5434`)
- `Database`: `demo`
- `Username`: `BOOKINGS_DB_USER` (по умолчанию `bookings`)
- `Password`: `BOOKINGS_DB_PASSWORD` (по умолчанию `bookings`)
3. Нажмите **Test Connection****OK**, затем **Finish**.
После подключения:
- Основные таблицы находятся в схеме `bookings` базы `demo` (например, `bookings.bookings`, `bookings.tickets`, `bookings.flights` и т.д.).
- Можно сравнивать данные:
- между `bookings.bookings` в Postgres и `public.ext_bookings_bookings` в Greenplum;
- между временем (`book_date`) в UTC в `demo` и локальным временем в Greenplum (учитывая `TZ=Europe/Moscow`).
> Если вы меняли порты или креды в `.env`, не забудьте подставить те же значения в настройках соединений в DBeaver.
---
## 🆘 Типичные проблемы и решения
| Проблема | Решение |
+1 -1
View File
@@ -18,7 +18,7 @@
## 3. Подготовка Docker-стенда
- `cp .env.example .env` (если файла ещё нет) и проверьте переменные:
- `GP_PORT` не конфликтует с локальным PostgreSQL.
- `GP_PORT` — внутренний порт Greenplum в Docker-сети (по умолчанию 5432, менять не нужно); внешний порт для подключения с хоста фиксирован на `5435`, поэтому локальный PostgreSQL на 5432 не помешает.
- `GP_USE_AIRFLOW_CONN=true` при желании использовать Airflow Connection; `false` — fallback на ENV.
- `make up` — поднимаем все сервисы. Важно дождаться статуса `healthy` у `pgmeta` и `greenplum` (`docker compose ps`).
- `make airflow-init` — миграции мета-БД и создание пользователя Airflow; занимает ~1–2 минуты.
+2 -3
View File
@@ -50,10 +50,9 @@ services:
GREENPLUM_PASSWORD: ${GP_PASSWORD:-gpadmin}
GREENPLUM_DATABASE_NAME: ${GP_DB:-gpadmin}
GREENPLUM_PXF_ENABLE: "true"
# GP_PORT: ${GP_PORT:-5432}
# Порты: внешний 5432
# Порты: внешний 5435 (на хосте)
ports:
- "${GP_PORT}:5432"
- "5435:5432"
volumes:
- ./sql:/sql:ro
- ./pxf/postgresql-42.7.3.jar:/pxf-local/postgresql-42.7.3.jar:ro
+1 -1
View File
@@ -15,7 +15,7 @@ _Этот файл внутренний, удалить перед итогов
- Greenplum в режиме singlenode;
- установленный PXF (`/usr/local/pxf`, `pxf version release-6.10.1`);
- стартовый скрипт `/start_gpdb.sh`, который умеет включать PXF по флагу `GREENPLUM_PXF_ENABLE=true`.
- Внешний мир (IDE/pytest) подключается к Greenplum по порту `${GP_PORT}` с хоста, а к `bookings-db` — по порту `${BOOKINGS_DB_PORT}` (см. `.env`).
- Внешний мир (IDE/pytest) подключается к Greenplum по порту `5435` на хосте (см. `docker-compose.yml`), а к `bookings-db` — по порту `${BOOKINGS_DB_PORT}` (см. `.env`).
## 3. Включение PXF в нашем стенде (дизайн)