Предварительные требования
- Доступ к вашей исходной базе данных PostgreSQL с учетной записью пользователя, у которой есть права на репликацию. Следуйте руководству по настройке для соответствующего источника:
- Amazon RDS Postgres
- Amazon Aurora Postgres
- Supabase Postgres
- Google Cloud SQL Postgres
- Azure Flexible Server for Postgres
- Neon Postgres
- Crunchy Bridge Postgres
- TimescaleDB
- Универсальный источник Postgres для любого другого провайдера или самоуправляемого экземпляра
- Сервис ClickHouse Managed Postgres в качестве целевого сервиса для миграции. Если у вас его еще нет, см. руководство по быстрому началу.
- На локальной машине должны быть установлены
pg_dumpиpsql. Оба входят в стандартный набор клиентских инструментов PostgreSQL.
Что нужно учесть перед миграцией
- Распространение DDL: непрерывная репликация (CDC) фиксирует операции DML и
ADD COLUMN. Другие изменения DDL, такие какDROP COLUMNиALTER COLUMN, не распространяются автоматически, и их нужно применять на целевой стороне вручную.
Если во время миграции возникнут проблемы, ознакомьтесь с FAQ по миграциям Managed Postgres, где описаны распространённые ошибки и способы их устранения.
Шаг 1: Подключитесь к исходной базе данных
Откройте консоль ClickHouse Cloud и выберите свой сервис Managed Postgres. На левой боковой панели нажмите источник данных. Нажмите Start import. Заполните сведения о подключении к исходной базе данных PostgreSQL: host, port, username, password и имя базы данных. Включите TLS, если это требуется для исходной базы. Если вам нужно приватное подключение к исходной базе данных, можно выбрать SSH tunneling и указать необходимые параметры SSH. Это позволит миграции безопасно подключаться к базам данных, которые недоступны из публичной сети. Выберите метод ингестии:- Initial load + CDC — копирует существующие данные, а затем поддерживает синхронизацию целевой системы с последующими изменениями.
- Initial load only — однократное копирование без дальнейшей репликации.
- CDC only — пропускает начальное копирование и реплицирует только новые изменения, начиная с этого момента.
Автоматизированная миграция схемы
При выборе этого варианта ClickPipe автоматически получит схему исходной базы данных и применит её к сервису Managed Postgres на этапе Setup после создания ClickPipe. Эта возможность предполагает пустую целевую базу данных, поскольку переносит из исходной базы данных все объекты независимо от того, какие таблицы вы выберете позже в мастере. Если целевая база данных уже содержит данные или требуется более гибкая настройка, выберите режим Manual. Выберите целевую базу данных в раскрывающемся списке или нажмите Create a new database, чтобы создать её.Мониторинг
Ход миграции схемы можно отслеживать в представлении сведений о ClickPipes. В разделе Журналы отображаются статус миграции схемы и все возникшие ошибки. Этот режим имеет следующие ограничения:- Пайпы, использующие SSH tunneling, не поддерживают автоматическую миграцию схемы. Схему необходимо экспортировать и импортировать вручную.
Ручная миграция схемы
Если в целевой базе данных уже есть данные или вам нужна более индивидуальная настройка, а не чистое состояние, которое предполагает автоматический режим, выберите режим Manual.Экспортируйте схему базы данных
Мастер покажет командуpg_dump, уже заполненную сведениями о подключении к исходной базе данных. Выполните её в терминале:
pg.sql.
Нажмите Next.
Импортируйте схему в свой сервис Managed Postgres
Выберите целевую базу данных в раскрывающемся списке или нажмите Create a new database, чтобы создать новую. Мастер покажет командуpsql для применения дампа схемы к вашему сервису Managed Postgres. Выполните её в терминале:
Шаг 4: Настройка параметров ингестии
Укажите публикацию, которую нужно использовать для логической репликации. Если оставить это поле пустым, публикация будет создана автоматически. Разверните Расширенные настройки репликации, чтобы настроить пропускную способность:
Нажмите Далее.
Шаг 5: Выберите таблицы
Выберите таблицы, которые нужно реплицировать. Таблицы сгруппированы по схемам. Вы можете выбрать отдельные таблицы или развернуть схему, чтобы выбрать все таблицы в ней. Нажмите Create migration.Отслеживание миграции
После создания миграции она появится в списке источников данных со статусом Running. Нажмите на миграцию, чтобы открыть подробное представление. На вкладке Tables отображается ход начальной загрузки для каждой таблицы, включая количество обработанных строк, число партиций и среднее время на партицию. На вкладке Metrics после запуска CDC отображаются задержка репликации и пропускная способность.Переключение трафика
После завершения начальной загрузки и, если используется CDC, при значении задержки репликации, близком к нулю, можно переключить трафик с исходной исходной базы данных Postgres на ваш сервис Managed Postgres. Откройте подробное представление миграция и перейдите на вкладку Post-migration steps. Этот мастер проведёт вас по шести шагам, необходимым для безопасного завершения миграция. Шаги нужно выполнять строго по порядку: перейти к следующему можно только после завершения предыдущего.Шаг 1. Переведите исходную базу данных Postgres в режим только для чтения
Остановите запись из приложения в источник, чтобы во время cutover не возникло расхождений. Мастер покажет командуALTER DATABASE с уже подставленным именем вашей исходной базы данных — выполните её на исходной базе данных:
В зависимости от вашего провайдера Postgres этот шаг может выглядеть иначе. Управляемые сервисы могут запрещать
ALTER DATABASE или принудительное завершение backend-соединений, предлагая вместо этого включать режим только для чтения через собственную консоль, группы параметров или отзыв привилегий на запись. Обратитесь к документации вашего провайдера, чтобы узнать, каким способом можно перевести источник в режим только для чтения.Шаг 2: проверка количества строк
Выберите реплицированные таблицы, которые нужно проверить. ClickPipes подсчитывает строки в каждой выбранной таблице как в источнике, так и в целевой системе, и сравнивает результаты. Для больших таблиц количество может быть приблизительным. Нажмите Select all tables, чтобы проверить все таблицы, либо найдите и отметьте отдельные таблицы, после чего нажмите Count rows.Шаг 3: приостановите пайп
Приостановите ClickPipe, чтобы репликация прекратилась до того, как вы сбросите последовательности и переключите трафик. Нажмите Pause ClickPipe и, прежде чем продолжить, дождитесь, пока пайп будет приостановлен.Шаг 4: сброс последовательностей
Сбросьте последовательности в пункте назначения, чтобы новые вставки продолжались с корректных значений. Нажмите Reset sequences, чтобы привести каждую последовательность в соответствие с текущим максимальным значением в её таблице.Шаг 5: Переключение трафика
Переведите операции чтения и записи на ваш сервис Managed Postgres, изменив URL базы данных в приложении на строку подключения Managed Postgres. Мастер предоставляет сведения о подключении в нескольких форматах — url, psql, env, yaml и jdbc, — так что вы можете скопировать тот, который подходит для вашего стека. После обновления приложения нажмите Mark as completed.Шаг 6: Очистка
После переключения трафика, убедившись, что новый сервис работает исправно, удалите миграцию и освободите ресурсы источника. Мастер отображает командуpg_drop_replication_slot с уже подставленным именем слота — выполните её на источнике, чтобы удалить слот репликации: