> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-3a82795f.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Настройте PlanetScale для Postgres в качестве источника для ClickPipes

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

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

<Info>
  PlanetScale for Postgres сейчас доступен в рамках [раннего доступа](https://planetscale.com/postgres).
</Info>

<div id="supported-postgres-versions">
  ## Поддерживаемые версии Postgres
</div>

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

<div id="enable-logical-replication">
  ## Включение логической репликации
</div>

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

   ```sql theme={null}
   wal_level = logical
   ```

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

   ```sql theme={null}
   SHOW wal_level;
   ```

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

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-3a82795f/a9Bs4XObb7pMATI7/images/integrations/data-ingestion/clickpipes/postgres/source/planetscale/planetscale_wal_level_logical.png?fit=max&auto=format&n=a9Bs4XObb7pMATI7&q=85&s=252ec9233b1429ae5d22079a0e209a50" alt="Настройка wal_level в консоли PlanetScale" size="md" border width="706" height="260" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/planetscale/planetscale_wal_level_logical.png" />

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

2. Кроме того, рекомендуется увеличить значение параметра `max_slot_wal_keep_size` по сравнению со значением по умолчанию 4GB. Это также делается через консоль PlanetScale: перейдите в `Cluster configuration->Parameters`, затем прокрутите вниз до `Write-ahead log`. Чтобы подобрать новое значение, ознакомьтесь с рекомендациями [здесь](/ru/integrations/clickpipes/postgres/faq#recommended-max_slot_wal_keep_size-settings).

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-3a82795f/a9Bs4XObb7pMATI7/images/integrations/data-ingestion/clickpipes/postgres/source/planetscale/planetscale_max_slot_wal_keep_size.png?fit=max&auto=format&n=a9Bs4XObb7pMATI7&q=85&s=c3304e62cd254c14920df517deab4398" alt="Настройка max_slot_wal_keep_size в консоли PlanetScale" size="md" border width="1014" height="286" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/planetscale/planetscale_max_slot_wal_keep_size.png" />

<div id="creating-a-user-with-permissions-and-publication">
  ## Создание пользователя, назначение разрешений и создание публикации
</div>

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

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

   ```sql theme={null}
   CREATE USER clickpipes_user PASSWORD 'some-password';
   ```

2. Предоставьте пользователю, созданному на предыдущем шаге, доступ к схеме в режиме только для чтения. В следующем примере показаны разрешения для схемы `public`. Повторите эти команды для каждой схемы, содержащей таблицы, которые вы хотите реплицировать:

   ```sql theme={null}
   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. Предоставьте пользователю привилегии репликации:

   ```sql theme={null}
   ALTER USER clickpipes_user WITH REPLICATION;
   ```

4. Создайте [публикацию](https://www.postgresql.org/docs/current/logical-replication-publication.html) с таблицами, которые вы хотите реплицировать. Мы настоятельно рекомендуем включать в публикацию только необходимые таблицы, чтобы избежать лишних накладных расходов по производительности.

<Warning>
  Любая таблица, включённая в публикацию, должна либо иметь определённый **primary key**, *либо* иметь параметр **replica identity** со значением `FULL`. Рекомендации по выбору охвата см. в [FAQ по Postgres](/ru/integrations/clickpipes/postgres/faq#how-should-i-scope-my-publications-when-setting-up-replication).
</Warning>

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

  ```sql theme={null}
  CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
  ```

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

    ```sql theme={null}
    CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
    ```

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

<div id="caveats">
  ## Ограничения
</div>

1. Чтобы подключиться к PlanetScale Postgres, к имени пользователя, созданному выше, нужно добавить текущую ветку. Например, если созданный пользователь называется `clickpipes_user`, то при создании ClickPipe нужно указать имя пользователя `clickpipes_user`.`branch`, где `branch` — это "id" текущей [ветки](https://planetscale.com/docs/postgres/branching) PlanetScale Postgres. Чтобы быстро определить его, можно посмотреть на имя пользователя `postgres`, которое вы ранее использовали для создания пользователя: часть после точки и будет идентификатором ветки.
2. Не используйте порт `PSBouncer` (сейчас это `6432`) для CDC-пайпов, подключающихся к PlanetScale Postgres: необходимо использовать обычный порт `5432`. Для пайпов только с начальной загрузкой можно использовать любой из этих портов.
3. Убедитесь, что подключаетесь только к основному экземпляру; [подключение к экземплярам-репликам](https://planetscale.com/docs/postgres/scaling/replicas#how-to-query-postgres-replicas) сейчас не поддерживается.

<div id="whats-next">
  ## Что дальше?
</div>

Теперь вы можете [создать свой ClickPipe](/ru/integrations/clickpipes/postgres) и начать загрузку данных из экземпляра Postgres в ClickHouse Cloud.
Обязательно сохраните сведения о подключении, которые вы использовали при настройке экземпляра Postgres, так как они понадобятся вам при создании ClickPipe.
