Snowflake Connector for PostgreSQL 특성

중요

PostgreSQL용 Snowflake Connector에 관심을 가져주셔서 감사합니다. 당사에서는 현재 대폭 개선된 환경을 제공할 차세대 솔루션에 집중하고 있습니다. 따라서 이 커넥터를 일반 공급 상태로 전환하는 것은 현재 제품 로드맵에 포함되어 있지 않습니다. 이 커넥터를 미리 보기 기능으로 계속 사용할 수 있지만, 향후 버그 수정 및 개선 사항에 대한 지원은 보장되지 않습니다. 새 솔루션은 :doc:`PostgreSQL용 Openflow Connector</user-guide/data-integration/openflow/connectors/postgres/about>`로 제공되며, 여기에는 더 나은 성능, 사용자 지정 기능, 향상된 배포 옵션이 포함됩니다.

버전 지원

|POSTGRES6|은 공식적으로 지원되는 PostgreSQL 버전을 지원합니다. Snowflake는 고객이 최신 버전으로 전환함에 따라 이전 버전에 대한 지원을 중단합니다. Snowflake는 새 버전이 출시되면 이에 대한 지원을 발표합니다.

커넥터는 여러 PostgreSQL 클라우드 버전을 지원하지만 일부 버전에는 추가 설정이 필요합니다. 자세한 내용은 Snowflake Connector for PostgreSQL 데이터 원본의 전제 조건 섹션을 참조하십시오.

지원되는 PostgresSQL 버전은 다음과 같습니다.

지원되는 PostgreSQL 버전

11

12

13

14

15

16

17

표준

AWS RDS

Amazon Aurora

GCP 클라우드 SQL

Azure Database

서버 설정

필요에 따라 PostgreSQL 서버에서 다음 설정을 검토하고 조정합니다.

wal_level

logical 으로 설정합니다.

커넥터는 기본 키를 사용하여 변경 사항을 대상 테이블에 병합합니다. 다음 설정은 미리 쓰기 로그(WAL) 레코드에 기본 키 정보가 포함되도록 합니다.

max_replication_slots

데이터베이스 에이전트에서 이 데이터베이스에 대한 모든 데이터 소스 구성 항목에 대해 1을 추가합니다.

max_connections

데이터베이스 에이전트에서 이 데이터베이스에 대한 모든 데이터 소스 구성 항목에 대해 1을 추가합니다.

max_wal_senders

데이터베이스 에이전트에서 이 데이터베이스에 대한 모든 데이터 소스 구성 항목에 대해 1을 추가합니다.

게시

커넥터에는 복제를 위해 테이블에 액세스하기 위한 `PostgreSQL 게시<https://www.postgresql.org/docs/current/logical-replication-publication.html>`_가 필요합니다.

  • 데이터베이스 에이전트는 데이터 소스당 정확히 하나의 게시를 지원합니다. 단일 PostgreSQL 서버에서 여러 게시를 사용해야 하는 경우 해당 서버를 별도의 데이터 소스로 여러 번 구성할 수 있으며, 각 데이터 소스에는 자체 게시가 있습니다.

  • 게시에는 INSERT, UPDATE, DELETE, :code:`TRUNCATE`를 포함하여 데이터에 대한 모든 변경 사항이 포함되어야 합니다.

  • ALL TABLES 또는 테이블 하위 세트에 대해 게시를 설정할 수 있지만, 최적의 성능을 얻기 위해 복제해야 하는 테이블만 추가합니다. 커넥터는 게시에 포함된 테이블의 변경 사항만 수신합니다.

  • 테이블은 모든 열 또는 열의 하위 세트와 함께 게시에 추가할 수 있습니다. 열의 하위 세트와 함께 추가하는 경우 :ref:`ADD_TABLE_WITH_COLUMNS 프로시저<label-postgres_connector_add_table_with_columns>`를 사용합니다.

경고

테이블이 열의 하위 세트와 함께 게시에 추가되었지만 ADD_TABLES 프로시저를 사용하여 복제가 활성화된 경우 게시에서 누락된 열은 대상 테이블에서 삭제된 것으로 표시됩니다. 나중에 게시에 열을 추가하면 테이블이 영구적으로 실패한 것으로 표시됩니다.

게시 구성에 대한 자세한 내용은 게시물 구성하기 섹션을 참조하세요.

복제 슬롯

데이터 및 스키마 변경 사항을 복제하기 위해 커넥터는 `복제 슬롯<https://www.postgresql.org/docs/current/logicaldecoding-explanation.html#LOGICALDECODING-REPLICATION-SLOTS>`_을 생성합니다. 슬롯은 지정된 데이터 소스의 첫 번째 테이블이 복제에 추가될 때 생성되며, 해당 데이터 소스의 모든 테이블에 사용됩니다.

슬롯의 이름은 :code:`sf_db_conn_rs_kbmd_<data-source-name>`와 같이 구성되며, 여기서 ``<data-source-name>``은 데이터베이스 에이전트 구성에 있는 데이터 소스의 식별자입니다.

  • 여러 데이터 소스를 추가하여 동일한 데이터베이스에 여러 번 연결하도록 데이터베이스 에이전트를 구성하는 경우 커넥터는 여러 복제 슬롯을 생성합니다.

  • 동일한 PostgreSQL 서버에 연결하도록 여러 데이터베이스 에이전트를 구성하는 경우 각 데이터베이스 에이전트에 고유한 데이터 소스 이름을 제공해야 합니다.

조심

데이터베이스 에이전트는 사용되지 않는 복제 슬롯을 제거하지 않습니다. PostgreSQL 인스턴스에서 데이터베이스 에이전트의 연결을 해제하거나 복제에서 모든 테이블을 제거한 경우 반드시 수동으로 복제 슬롯을 삭제하여 WAL 트리밍이 지연되는 것을 방지해야 합니다.

WAL 증가 및 복제 슬롯 위치

복제 슬롯이 생성되면 PostgreSQL은 커넥터가 해당 위치를 확인하고 진행할 때까지 복제 슬롯이 보유한 위치의 WAL 데이터를 유지합니다. 커넥터는 레코드가 대상 테이블에 아직 병합되지 않은 경우에도 저널 테이블에 레코드가 저장된 후 주기적으로 위치를 확인합니다.

  • **연속 모드**에서는 커넥터가 1분마다 위치를 확인합니다.

  • **예약 모드**에서는 커넥터가 구성된 일정에 따라 위치를 확인합니다. 일정이 길어지면 WAL의 크기가 더 커집니다.

WAL용 PostgreSQL 서버에 충분한 디스크 공간이 있는지 확인해야 합니다. WAL이 지속적으로 증가하는 것을 감지하는 경우 다음을 확인합니다.

  • 데이터베이스 에이전트가 연결되어 있고 커넥터가 데이터를 적극적으로 복제하고 있습니까? 그렇지 않은 경우 복제 슬롯이 진행되지 않으며 WAL 트리밍이 차단됩니다.

  • 복제가 복제된 테이블의 데이터 변경 사항을 따라가고 있습니까? 그렇지 않은 경우 소스의 데이터 변경 사항이 Snowflake 대상 테이블에 나타나는 데까지 지연이 계속 증가한다는 의미이며, 복제 슬롯이 너무 느리게 진행되고 있는 것입니다. 복제에서 일부 테이블을 제거하거나 컴퓨팅 웨어하우스 크기를 늘려야 합니다.

PostgreSQL에서 max_wal_size 설정은 복제 슬롯이 진행되지 않아서 발생하는 경우 WAL 증가에 영향을 미치지 않습니다.

중요한 상황에서는 커넥터에서 사용하는 복제 슬롯을 수동으로 삭제할 수 있습니다. 그러면 커넥터에서 실행 중인 모든 복제가 중단되지만 PostgreSQL을 활성화하여 WAL을 잘라내고 디스크 공간을 회수할 수 있습니다.

기본 키 및 테이블 복제본 ID

커넥터는 기본 키를 사용하여 변경 사항을 대상 테이블에 병합합니다. 그 결과:

에이전트 인증

현재 지원되는 유일한 인증 방법은 사용자 이름과 비밀번호입니다. 데이터베이스 에이전트 구성의 모든 데이터 소스 항목에는 자체 자격 증명 세트가 포함되며, 이러한 자격 증명은 데이터 소스마다 다를 수 있습니다.

데이터베이스 에이전트의 사용자는 REPLICATION 특성이 있는 역할을 가져야 하며, 해당 특성을 적용할 수 없는 경우 SUPERUSER 특성이 있는 역할을 가져야 합니다.

데이터베이스 에이전트의 사용자를 생성하는 방법에 대한 지침은 필수 사용자 생성하기 섹션을 참조하세요.

.소스 데이터베이스에 대한 데이터베이스 에이전트의 액세스 보안에 대한 자세한 내용은 `PostgreSQL 설명서<https://www.postgresql.org/docs/current/logical-replication-security.html>`_를 참조하세요.