Предварительные требования
- Доступ к исходной базе данных PostgreSQL.
- Экземпляр ClickHouse Managed Postgres, в который вы хотите перенести данные.
- PeerDB, установленный на компьютере. Вы можете воспользоваться инструкциями по установке в репозитории PeerDB на GitHub. Достаточно клонировать репозиторий и выполнить
docker-compose up. В этом руководстве мы будем использовать интерфейс PeerDB, который после запуска PeerDB будет доступен по адресуhttp://localhost:3000.
Что учитывать перед миграцией
- Объекты базы данных: PeerDB автоматически создаст таблицы в целевой базе данных на основе исходной схемы. Однако некоторые объекты базы данных, такие как индексы, ограничения и триггеры, не переносятся автоматически. После миграции вам потребуется вручную заново создать эти объекты в целевой базе данных.
- Изменения DDL: Если вы включите непрерывную репликацию, PeerDB будет поддерживать синхронизацию целевой базы данных с исходной для операций DML (INSERT, UPDATE, DELETE) и передавать операции ADD COLUMN. Однако другие изменения DDL (например, DROP COLUMN, ALTER COLUMN) автоматически не передаются. Подробнее о поддержке изменений схемы здесь
- Сетевое подключение: Убедитесь, что и исходная, и целевая базы данных доступны с машины, на которой запущен PeerDB. Возможно, потребуется настроить правила межсетевого экрана или параметры Security Group, чтобы разрешить подключение.
Создание peer
+ New peer.
Создание peer для источника
Create peer, чтобы сохранить peer.
Создание целевого peer
Create peer, чтобы сохранить целевой peer.
Теперь в разделе “Peers” должны отображаться оба peer — исходный и целевой.
Получение дампа схемы исходной базы данных
pg_dump:
Установка pg_dump
Установка pg_dump
Ubuntu:Обновите списки пакетов:Установите клиент PostgreSQL:macOS:Способ 1: с помощью Homebrew (рекомендуется)Установите Homebrew, если он у вас ещё не установлен:Установите PostgreSQL:Проверьте установку:
Удалите уникальные ограничения и индексы из дампа схемы
Примените дамп схемы к целевой базе данных
psql и выполнив файл дампа схемы:
session_replication_role значение replica:
Создайте mirror
+ New mirror.
- Задайте mirror имя, описывающее перенос.
- Выберите исходный и целевой peer, которые вы создали ранее, в раскрывающихся списках.
- Убедитесь, что:
- Soft delete выключен.
- Разверните
Advanced settings. Убедитесь, что система типов Postgres включена, а столбцы PeerDB отключены.
- Выберите таблицы, которые хотите перенести. Можно выбрать конкретные таблицы или все таблицы из исходной базы данных.
Выбор таблицУбедитесь, что имена целевых таблиц в целевой базе данных совпадают с именами исходных таблиц, так как на предыдущем шаге мы перенесли схему как есть.
- После настройки параметров mirror нажмите кнопку
Create mirror.
Дождитесь завершения Initial load
Мониторинг initial load и репликации
- Сначала выполняется запрос COUNT, чтобы оценить количество строк в каждой таблице.
- Затем выполняется запрос на партиционирование с использованием NTILE, чтобы разбить большие таблицы на более мелкие фрагменты для эффективной передачи данных.
- После этого выполняются команды FETCH, чтобы получить данные из исходной базы данных, а затем PeerDB синхронизирует их с целевой базой данных.
Действия после миграции
Эти шаги могут различаться в зависимости от вашего сценария использования и требований приложения. Главное — обеспечить согласованность данных, свести к минимуму время простоя и проверить целостность перенесённых данных, прежде чем полностью переключаться на новую систему.
- Выполните проверки перед переключением
- Остановите запись в исходной системе
- Убедитесь, что репликация полностью синхронизирована
- Заново создайте и включите ограничения, индексы и триггеры
replica:
- Сброс последовательностей в целевых таблицах
- Переключите трафик приложения
- Переведите трафик чтения на ClickHouse Managed Postgres.
- Переведите трафик записи на ClickHouse Managed Postgres.
- Отслеживайте ошибки приложения, нарушения ограничений и состояние базы данных.
- Очистите ресурсы
Слоты репликацииЕсли вы включили непрерывную репликацию, PeerDB создаст слот репликации в исходной базе данных PostgreSQL. После завершения миграции обязательно удалите слот репликации вручную из исходной базы данных, чтобы избежать лишнего расхода ресурсов.
Справочные материалы
- Документация по ClickHouse Managed Postgres
- Руководство PeerDB по созданию CDC
- FAQ по Postgres ClickPipe (также актуально для PeerDB)
Следующие шаги
pg_dump и pg_restore. Теперь вы готовы изучить возможности Managed Postgres и его интеграцию с ClickHouse. Ниже — 10-минутное краткое руководство для быстрого старта: