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

> 모든 Postgres 인스턴스를 ClickPipes 소스로 설정합니다

# 일반 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">
  ## 권한과 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. 복제하려는 테이블이 포함된 [publication](https://www.postgresql.org/docs/current/logical-replication-publication.html)을 생성합니다. 성능 오버헤드를 피하려면 publication에는 필요한 테이블만 포함하는 것을 강력히 권장합니다.

<Warning>
  publication에 포함된 모든 테이블은 **primary key**가 정의되어 있거나, **replica identity**가 `FULL`로 구성되어 있어야 합니다. 범위 지정 방법은 [Postgres FAQ](/ko/integrations/clickpipes/postgres/faq#how-should-i-scope-my-publications-when-setting-up-replication)를 참조하십시오.
</Warning>

* 특정 테이블에 대한 publication을 생성하려면 다음과 같이 합니다:

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

  * 특정 스키마의 모든 테이블에 대한 publication을 생성하려면 다음과 같이 합니다:

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

`clickpipes` publication에는 지정된 테이블에서 생성된 변경 이벤트 집합이 포함되며, 이후 복제 스트림을 수집하는 데 사용됩니다.

<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>

대규모 트랜잭션/커밋으로 인해 replication slot이 삭제되지 않도록 권장되는 구성 변경입니다.

`postgresql.conf` 파일을 업데이트하여 PostgreSQL 인스턴스의 `max_slot_wal_keep_size` 매개변수 값을 더 큰 값(최소 100GB 또는 `102400`)으로 늘릴 수 있습니다.

```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를 생성](/ko/integrations/clickpipes/postgres)하고 Postgres 인스턴스에서 ClickHouse Cloud로 데이터를 수집하기 시작할 수 있습니다.
ClickPipe를 생성하는 동안 필요하므로, Postgres 인스턴스를 설정할 때 사용한 연결 정보를 기록해 두십시오.
