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

> Настройте любой экземпляр Postgres как источник для ClickPipes

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

<Info>
  Если вы используете одного из поддерживаемых провайдеров (см. боковую панель), обратитесь к руководству для этого провайдера.
</Info>

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`. Если это не так, выполните:

   ```sql theme={null}
   ALTER SYSTEM SET wal_level = logical;
   ```

2. Кроме того, для экземпляра Postgres рекомендуется задать следующие настройки:

   ```sql theme={null}
   max_wal_senders > 1
   max_replication_slots >= 4
   ```

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

   ```sql theme={null}
   SHOW max_wal_senders;
   SHOW max_replication_slots;
   ```

   Если значения не соответствуют рекомендуемым, можно выполнить следующие SQL-команды, чтобы установить их:

   ```sql theme={null}
   ALTER SYSTEM SET max_wal_senders = 10;
   ALTER SYSTEM SET max_replication_slots = 10;
   ```

3. Если вы внесли какие-либо изменения в конфигурацию, как указано выше, вам НЕОБХОДИМО ПЕРЕЗАПУСТИТЬ экземпляр Postgres, чтобы изменения вступили в силу.

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

Подключитесь к своему экземпляру 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>
  Каждая таблица, включённая в публикацию, должна либо иметь определённый **первичный ключ**, *либо* иметь настроенный параметр **replica identity** со значением `FULL`. Рекомендации по выбору состава публикаций см. в разделе [Postgres FAQ](/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="enabling-connections-in-pg_hbaconf-to-the-clickpipes-user">
  ## Разрешение подключений в `pg_hba.conf` для пользователя ClickPipes
</div>

Если вы настраиваете систему самостоятельно, вам нужно разрешить подключения для пользователя ClickPipes с IP-адресов ClickPipes, выполнив следующие шаги. Если вы используете управляемый сервис, вы можете сделать то же самое, следуя документации провайдера.

1. Внесите необходимые изменения в файл `pg_hba.conf`, чтобы разрешить подключения для пользователя ClickPipes с IP-адресов ClickPipes. Пример записи в файле `pg_hba.conf`:
   ```response theme={null}
   host    all   clickpipes_user     0.0.0.0/0          scram-sha-256
   ```

2. Перезагрузите экземпляр PostgreSQL, чтобы изменения вступили в силу:
   ```sql theme={null}
   SELECT pg_reload_conf();
   ```

<div id="increase-max_slot_wal_keep_size">
  ## Увеличьте `max_slot_wal_keep_size`
</div>

Это рекомендуемое изменение конфигурации поможет избежать удаления слота репликации из-за больших транзакций или коммитов.

Вы можете увеличить значение параметра `max_slot_wal_keep_size` для своего экземпляра PostgreSQL до более высокого уровня (не менее 100 ГБ или `102400`), обновив файл `postgresql.conf`.

```sql theme={null}
max_slot_wal_keep_size = 102400
```

Можно перезагрузить экземпляр Postgres, чтобы изменения вступили в силу:

```sql theme={null}
SELECT pg_reload_conf();
```

<Note>
  Чтобы получить более точную рекомендацию по этому параметру, вы можете обратиться к команде ClickPipes.
</Note>

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

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