Предварительные требования
- Доступ к исходной базе данных 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 нужно выполнить: - Роль, которую вы используете для целевой базы данных, должна иметь права на запись в объекты целевой базы данных:
Дамп схемы исходной базы данных
pg_dump:
- Замените
<user>,<password>,<host>,<port>и<database>на учетные данные вашей исходной базы данных. -sуказывает, что нужен дамп только схемы.--format directoryуказывает, что нужен дамп в формате каталога, который подходит дляpg_restore.-f rds-dumpуказывает каталог вывода для файлов дампа. Обратите внимание: этот каталог будет создан автоматически и не должен существовать заранее.
events и users. В events миллион строк, а в users — тысяча строк.
Создайте экземпляр Managed Postgres
Восстановите схему в ClickHouse Managed Postgres
pg_restore:
- Замените
<user>,<password>,<host>,<port>и<database>на учетные данные для доступа к целевой базе данных ClickHouse Managed Postgres. --verboseвыводит подробную информацию в процессе восстановления. Эта команда создаст в целевой базе данных все таблицы, индексы, представления и другие объекты схемы, но без данных.
Настройте логическую репликацию
Создайте публикацию в исходной базе данных
Создание публикации FOR ALL TABLES может вызвать дополнительную нагрузку на сеть, если таблиц много. Рекомендуется указывать только те таблицы, которые нужно реплицировать.
Создайте подписку в целевой базе данных ClickHouse Managed Postgres
Ограничения и важные моменты
- Логическая репликация передаёт только изменения данных (INSERT, UPDATE, DELETE). Изменения схемы (например, ALTER TABLE) нужно обрабатывать отдельно.
- Убедитесь, что сетевое соединение между исходной и целевой базами данных стабильно, чтобы избежать прерывания репликации.
- Следите за задержкой репликации, чтобы убедиться, что целевая база данных не отстаёт от исходной. Установка подходящего значения
max_slot_wal_keep_sizeв исходной базе данных поможет контролировать рост слота репликации и не допустить чрезмерного расхода дискового пространства. - В зависимости от вашего сценария использования может потребоваться настроить мониторинг и оповещения для процесса репликации.
Следующие шаги
pg_dump и pg_restore. Теперь вы можете изучить возможности Managed Postgres и его интеграцию с ClickHouse. Вот 10-минутное краткое руководство для быстрого старта: