Миграция на Managed Postgres с помощью ClickHouse Cloud
В ClickHouse Cloud есть встроенный мастер импорта, который переносит вашу внешнюю базу данных PostgreSQL в сервис Managed Postgres. Мастер в рамках пяти пошаговых этапов выполняет подключение к источнику, экспорт и импорт схема, настройку репликации и выбор таблиц.
Предварительные требования
- Доступ к исходной базе данных PostgreSQL под пользователем, у которого есть права на репликацию.
- Сервис ClickHouse Managed Postgres в качестве целевой среды для миграции. Если у вас его ещё нет, см. краткое руководство.
pg_dumpиpsql, установленные на локальной машине. Оба входят в стандартный набор клиентских инструментов PostgreSQL.
Что нужно учесть перед миграцией
- Распространение DDL: непрерывная репликация (CDC) фиксирует операции DML и
ADD COLUMN. Другие изменения DDL, такие какDROP COLUMNиALTER COLUMN, не распространяются и должны применяться вручную на целевой стороне. - Ограничения внешних ключей: чтобы проверки внешних ключей не блокировали ингестию, вы временно установите
session_replication_role = replicaдля целевой роли. Это рассматривается ниже, в шаге 3.
Шаг 1: Подключитесь к исходной базе данных
Откройте консоль ClickHouse Cloud и выберите свой сервис Managed Postgres.

На левой боковой панели нажмите Data sources.

Нажмите Start import.

Заполните данные для подключения к исходной базе данных PostgreSQL: хост, порт, имя пользователя, пароль и имя базы данных. Включите TLS, если это требуется для вашего источника.
Если вам требуется частное подключение к исходной базе данных, вы можете использовать SSH tunneling и указать необходимые SSH-параметры. Это позволит миграции безопасно подключаться к базам данных, недоступным из публичной сети.
Выберите метод ингестии:
- Initial load + CDC — копирует существующие данные, а затем поддерживает синхронизацию целевой системы с последующими изменениями.
- Initial load only — однократное копирование без дальнейшей репликации.
- CDC only — пропускает начальное копирование и реплицирует только новые изменения, начиная с этого момента.

Нажмите Next.
Шаг 2: Экспортируйте схема базы данных
Мастер показывает команду pg_dump, уже заполненную данными подключения к исходной базе данных. Выполните её в терминале:

В текущем каталоге будет создан файл pg.sql.

Нажмите Next.
Шаг 3: Импортируйте схема в сервис Managed Postgres
Выберите целевую базу данных в раскрывающемся списке или нажмите Создать новую базу данных, чтобы создать её.
Мастер отобразит команду psql для применения дампа схема к сервису Managed Postgres. Запустите её в терминале:


После применения схемы задайте для целевой роли значение replica параметра session_replication_role, чтобы ограничения внешних ключей не блокировали ингестию:

Нажмите Next.
Шаг 4: Настройте параметры ингестии
Укажите публикацию, которую нужно использовать для логической репликации. Если оставить это поле пустым, публикация будет создана автоматически.
Разверните дополнительные параметры репликации, чтобы настроить производительность:
| Параметр | По умолчанию | Описание |
|---|---|---|
| Интервал синхронизации (в секундах) | 10 | Как часто опрашивается слот репликации |
| Параллельные потоки для начальной загрузки | 4 | Количество потоков на этапе пакетной загрузки |
| Размер пакета извлечения | 100,000 | Количество строк, извлекаемых за один пакет репликации |
| Количество строк в снимке на партицию | 100000 | Размер партиции для снимков больших таблиц |
| Количество таблиц для параллельного создания снимков | 1 | Количество таблиц, для которых снимки создаются одновременно |

Нажмите Next.
Шаг 5: Выберите таблицы
Выберите таблицы, которые хотите реплицировать. Таблицы сгруппированы по схема. Выберите отдельные таблицы или разверните схема, чтобы выбрать все таблицы в ней.

Нажмите Создать миграцию.
Отслеживание миграции
После создания миграции вы увидите её в списке Data sources со статусом Running.

Нажмите на миграцию, чтобы открыть подробную страницу. На вкладке Tables отображается ход начальной загрузки для каждой таблицы, включая обработанные строки, партиции и среднее время на партицию. На вкладке Metrics после начала CDC отображаются задержка репликации и пропускная способность.

Действия после миграции
После завершения первоначальной загрузки и, если используется CDC, когда задержка репликации близка к нулю:
Сверьте количество строк. Выборочно проверьте критически важные таблицы в исходной и целевой системах перед переключением трафика:
Остановите запись в исходную систему. Приостановьте запись со стороны приложения. Чтобы принудительно перевести систему в режим «только чтение» на время переключения:
Убедитесь, что репликация завершена. Сравните последнюю строку на источнике и в целевой системе:
Снова включите ограничения и восстановите роль репликации. Примените все индексы, ограничения и триггеры, которые вы отложили во время импорта, затем сбросьте целевую роль:
Сбросьте последовательности. Приведите последовательности в соответствие с текущими максимальными значениями в каждой таблице:
Переключите трафик приложения. Направьте операции чтения и записи на ваш сервис Managed Postgres и отслеживайте ошибки, нарушения ограничений целостности и состояние репликации.
Выполните очистку. После переключения и подтверждения того, что новый сервис работает нормально, удалите миграцию из раздела Data sources. Если вы использовали CDC, удалите слот репликации в исходном источнике, чтобы освободить ресурсы: