Перейти к основному содержанию
В этом руководстве приведены пошаговые инструкции по переносу базы данных PostgreSQL в ClickHouse Managed Postgres с использованием нативной логической репликации Postgres.

Предварительные требования

  • Доступ к исходной базе данных PostgreSQL.
  • На локальной машине должны быть установлены psql,pg_dump и pg_restore. Они нужны для создания пустых таблиц в целевой базе данных. Обычно эти утилиты входят в состав PostgreSQL. Если нет, их можно скачать с официального сайта PostgreSQL.
  • Исходная база данных должна быть доступна из ClickHouse Managed Postgres. Убедитесь, что необходимые правила брандмауэра или настройки группы безопасности разрешают такое подключение. Получить исходящий IP-адрес экземпляра Managed Postgres можно следующим образом:

Настройка

Чтобы логическая репликация работала, нужно убедиться, что исходная база данных настроена правильно. Вот основные требования:
  • В исходной базе данных параметр wal_level должен быть установлен в logical.
  • В исходной базе данных параметр max_replication_slots должен быть установлен как минимум в 1.
  • Для RDS (который в этом руководстве используется в качестве примера) нужно убедиться, что в вашей группе параметров параметр rds.logical_replication установлен в 1.
  • Пользователь исходной базы данных должен иметь привилегию REPLICATION. В случае RDS нужно выполнить:
  • Роль, которую вы используете для целевой базы данных, должна иметь права на запись в объекты целевой базы данных:
Убедитесь, что ваша исходная база данных настроена именно так:

Дамп схемы исходной базы данных

Перед настройкой логической репликации необходимо создать схему в целевой базе данных ClickHouse Managed Postgres. Для этого можно создать дамп схемы исходной базы данных с помощью pg_dump:
Здесь:
  • Замените <user>, <password>, <host>, <port> и <database> на учетные данные вашей исходной базы данных.
  • -s указывает, что нужен дамп только схемы.
  • --format directory указывает, что нужен дамп в формате каталога, который подходит для pg_restore.
  • -f rds-dump указывает каталог вывода для файлов дампа. Обратите внимание: этот каталог будет создан автоматически и не должен существовать заранее.
В нашем случае есть две таблицы — events и users. В events миллион строк, а в users — тысяча строк.

Создайте экземпляр Managed Postgres

Сначала убедитесь, что у вас уже настроен экземпляр Managed Postgres, желательно в том же регионе, что и исходный экземпляр. Для этого можно воспользоваться кратким руководством здесь. Для этого руководства мы развернем следующее:

Восстановите схему в ClickHouse Managed Postgres

Теперь, когда у нас есть дамп схемы, мы можем восстановить её в нашем экземпляре ClickHouse Managed Postgres с помощью pg_restore:
Здесь:
  • Замените <user>, <password>, <host>, <port> и <database> на учетные данные для доступа к целевой базе данных ClickHouse Managed Postgres.
  • --verbose выводит подробную информацию в процессе восстановления. Эта команда создаст в целевой базе данных все таблицы, индексы, представления и другие объекты схемы, но без данных.
В нашем случае после выполнения этой команды у нас есть две пустые таблицы:

Настройте логическую репликацию

Когда схема уже готова, можно настроить логическую репликацию из исходной базы данных в целевую базу данных ClickHouse Managed Postgres. Для этого нужно создать публикацию в исходной базе данных и подписку в целевой базе данных.

Создайте публикацию в исходной базе данных

Подключитесь к исходной базе данных PostgreSQL и создайте публикацию, включающую таблицы, которые вы хотите реплицировать.
Создание публикации FOR ALL TABLES может вызвать дополнительную нагрузку на сеть, если таблиц много. Рекомендуется указывать только те таблицы, которые нужно реплицировать.

Создайте подписку в целевой базе данных ClickHouse Managed Postgres

Затем подключитесь к целевой базе данных ClickHouse Managed Postgres и создайте подписку, подключенную к публикации в исходной базе данных.
Это автоматически создаст слот репликации в исходной базе данных и запустит репликацию данных из указанных таблиц в целевую базу данных. В зависимости от объема данных этот процесс может занять некоторое время. В нашем случае после настройки подписки данные начали поступать: Новые строки, вставляемые в исходную базу данных, теперь будут реплицироваться в целевую базу данных ClickHouse Managed Postgres почти в реальном времени.

Ограничения и важные моменты

  • Логическая репликация передаёт только изменения данных (INSERT, UPDATE, DELETE). Изменения схемы (например, ALTER TABLE) нужно обрабатывать отдельно.
  • Убедитесь, что сетевое соединение между исходной и целевой базами данных стабильно, чтобы избежать прерывания репликации.
  • Следите за задержкой репликации, чтобы убедиться, что целевая база данных не отстаёт от исходной. Установка подходящего значения max_slot_wal_keep_size в исходной базе данных поможет контролировать рост слота репликации и не допустить чрезмерного расхода дискового пространства.
  • В зависимости от вашего сценария использования может потребоваться настроить мониторинг и оповещения для процесса репликации.

Следующие шаги

Поздравляем! Вы успешно перенесли свою базу данных PostgreSQL в ClickHouse Managed Postgres с помощью pg_dump и pg_restore. Теперь вы можете изучить возможности Managed Postgres и его интеграцию с ClickHouse. Вот 10-минутное краткое руководство для быстрого старта:
Последнее изменение 3 июля 2026 г.