Перейти к основному содержимому
Перейти к основному содержимому

Руководство по настройке источника PlanetScale for Postgres

Ссылки

PlanetScale for Postgres в настоящее время находится на этапе раннего доступа.

Поддерживаемые версии Postgres

ClickPipes поддерживает Postgres версии 12 и выше.

Включение логической репликации

  1. Чтобы включить репликацию на вашем экземпляре Postgres, необходимо убедиться, что установлен следующий параметр:

    wal_level = logical
    

    Чтобы проверить это, выполните следующую SQL-команду:

    SHOW wal_level;
    

    По умолчанию вывод должен быть logical. Если это не так, войдите в консоль PlanetScale, перейдите в Cluster configuration->Parameters и прокрутите до раздела Write-ahead log, чтобы изменить его.

Настройка wal_level в консоли PlanetScale
Примечание

Изменение этого параметра в консоли PlanetScale ПРИВЕДЁТ к перезагрузке.

  1. Также рекомендуется увеличить значение параметра max_slot_wal_keep_size с значения по умолчанию 4 ГБ. Это также выполняется через консоль PlanetScale: перейдите в Cluster configuration->Parameters, а затем прокрутите до Write-ahead log. Чтобы определить новое значение, ознакомьтесь с рекомендациями здесь.
Настройка max_slot_wal_keep_size в консоли PlanetScale

Создание пользователя с правами доступа и публикацией

Подключитесь к экземпляру PlanetScale Postgres, используя пользователя по умолчанию postgres.<...>, и выполните следующие команды:

  1. Создайте отдельного пользователя для ClickPipes:

    CREATE USER clickpipes_user PASSWORD 'some-password';
    
  2. Предоставьте на уровне схемы доступ только для чтения пользователю, созданному на предыдущем шаге. В следующем примере показаны права доступа для схемы public. Повторите эти команды для каждой схемы, содержащей таблицы, которые вы хотите реплицировать:

    GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
    GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
    
  3. Предоставьте пользователю привилегии репликации:

    ALTER USER clickpipes_user WITH REPLICATION;
    
  4. Создайте publication с таблицами, которые вы хотите реплицировать. Настоятельно рекомендуем включать в публикацию только необходимые таблицы, чтобы избежать лишних накладных расходов на производительность.

    Примечание

    Любая таблица, включённая в публикацию, должна либо иметь определённый первичный ключ, либо её replica identity должна быть настроена на FULL. См. раздел Postgres FAQs для рекомендаций по выбору области публикаций.

    • Чтобы создать публикацию для конкретных таблиц:

      CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
      
    • Чтобы создать публикацию для всех таблиц в конкретной схеме:

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
      

    Публикация clickpipes будет содержать набор событий изменений, сгенерированных из указанных таблиц, и затем будет использоваться для приёма потока репликации.

Ограничения

  1. Для подключения к PlanetScale Postgres к имени пользователя, созданному выше, необходимо добавить текущую ветку. Например, если созданный пользователь назывался clickpipes_user, фактическое имя пользователя, которое нужно указать при создании ClickPipe, должно быть clickpipes_user.branch, где branch — это значение "id" текущей ветки PlanetScale Postgres. Чтобы быстро его определить, вы можете посмотреть на имя пользователя postgres, которого вы использовали для создания пользователя ранее: часть после точки и будет идентификатором ветки.
  2. Не используйте порт PSBouncer (в настоящее время 6432) для CDC-конвейеров, подключающихся к PlanetScale Postgres — необходимо использовать обычный порт 5432. Любой из этих портов может использоваться только для конвейеров, выполняющих первоначальную загрузку (initial-load only).
  3. Убедитесь, что вы подключаетесь только к основному (primary) экземпляру, так как подключение к репликам в настоящее время не поддерживается.

Что дальше?

Теперь вы можете создать ClickPipe и начать приём данных из экземпляра Postgres в ClickHouse Cloud. Обязательно запишите параметры подключения, которые вы использовали при настройке экземпляра Postgres, так как они понадобятся вам для создания ClickPipe.