이 문서에서는 PostgreSQL 데이터베이스 CDC(변경 데이터 캡처) 원본을 Eventstream에 추가하는 방법을 보여줍니다.
Microsoft Fabric Eventstream에 대한 PostgreSQL 데이터베이스 CDC(변경 데이터 캡처) 원본 커넥터를 사용하면 PostgreSQL 데이터베이스에서 현재 데이터의 스냅샷을 캡처할 수 있습니다. 현재 PostgreSQL CDC(데이터베이스 변경 데이터 캡처)는 데이터베이스에 공개적으로 액세스할 수 있는 다음 서비스에서 지원됩니다.
- PostgreSQL용 Azure 데이터베이스
- PostgreSQL용 Amazon RDS
- Amazon Aurora PostgreSQL
- PostgreSQL용 Google Cloud SQL
PostgreSQL 데이터베이스 CDC 원본이 이벤트 스트림에 추가되면 지정된 테이블에 대한 행 수준 변경 내용을 캡처합니다. 그런 다음 이러한 변경 내용을 실시간으로 처리하고 추가 분석을 위해 다른 대상으로 보낼 수 있습니다.
필수 조건
Fabric의 용량 라이선스 모드 또는 평가판 라이선스 모드에서 참가자 이상의 권한으로 작업 공간에 액세스합니다.
PostgreSQL 데이터베이스에 등록된 사용자 액세스.
PostgreSQL 데이터베이스는 공개적으로 액세스할 수 있어야 하며 방화벽 뒤에 있거나 가상 네트워크에서 보호되면 안 됩니다.
PostgreSQL 데이터베이스 및 테이블에서 사용되는 CDC.
Azure Database for PostgreSQL이 있는 경우 다음 섹션의 단계에 따라 CDC를 사용합니다. 자세한 내용은 Azure Database for PostgreSQL - 유연한 서버에서 논리 복제 및 논리 디코딩을 참조하세요.
다른 PostgreSQL 데이터베이스의 경우 Debezium connector for PostgreSQL :: Debezium 설명서를 참조하세요.
eventstream이 없는 경우 eventstream 을 만듭니다.
PostgreSQL 데이터베이스에서 CDC 사용
이 섹션에서는 Azure Database for PostgreSQL 예로 사용합니다.
Azure Database for PostgreSQL 유연한 서버에서 CDC를 사용하려면 다음 단계를 따릅니다.
Azure Portal의 Azure Database for PostgreSQL 유연한 서버 페이지에서 탐색 메뉴에 있는 서버 매개 변수를 선택합니다.
서버 매개 변수 페이지에서 다음을 수행합니다.
- wal_level을 logical로 설정합니다.
- max_worker_processes를 16 이상으로 업데이트합니다.
변경 내용을 저장하고 서버를 다시 시작합니다.
Azure Database for PostgreSQL Flexible 서버 인스턴스에서 공용 네트워크 트래픽을 허용하는지 확인합니다.
다음 SQL 문을 실행하여 관리 사용자 복제 권한을 부여합니다. 다른 사용자 계정을 사용하여 PostgreSQL DB를 연결하여 CDC를 가져오려면 사용자가 테이블 소유자인지 확인합니다.
ALTER ROLE <admin_user_or_table_owner_user> WITH REPLICATION;
데이터 원본 선택 마법사 시작
이벤트 스트림에 원본을 아직 추가하지 않은 경우 외부 원본 타일 사용을 선택합니다.
이미 게시된 이벤트 스트림에 원본을 추가하는 경우 편집 모드로 전환합니다. 리본에서 원본> 추가를 선택합니다.
데이터 원본 선택 페이지에서 PostgreSQL DB(CDC) 타일에 있는 Connect를 검색하고 선택합니다.
PostgreSQL 데이터베이스 CDC 구성 및 연결
연결 페이지에서 새 연결을 선택합니다.
연결 설정 섹션에서 다음 정보를 입력합니다.
서버: PostgreSQL 데이터베이스의 서버 주소(예: my-pgsql-server.postgres.database.azure.com).
데이터베이스: 데이터베이스 이름(예: my_database).
연결 이름: 연결의 이름을 입력합니다.
인증 종류, 기본 을 선택하고 데이터베이스의 사용자 이름 및 암호를 입력합니다.
비고
현재 Fabric 이벤트 스트림은 기본 인증만 지원합니다.
연결을 선택하여 연결 설정을 완료합니다.
포트: 서버의 포트 번호를 입력합니다. 기본값은 5432입니다. 선택한 클라우드 연결이 연결 관리 및 게이트웨이에서 구성된 경우, 포트 번호가 거기에 설정된 것과 일치하는지 확인하세요. 일치하지 않는 경우 연결 및 게이트웨이 관리에서 클라우드 연결의 포트 번호가 우선적으로.
데이터베이스 테이블에서 변경 내용을 캡처할 때 다음 두 가지 옵션 중에서 선택할 수 있습니다.
- 모든 테이블: 데이터베이스의 모든 테이블에서 변경 내용을 캡처합니다.
-
테이블 이름 입력: 쉼표로 구분된 목록을 사용하여 테이블의 하위 집합을 지정할 수 있습니다. 형식
schemaName.tableName의 전체 테이블 식별자 또는 유효한 정규식을 사용할 수 있습니다. 예제: -
dbo.test.*:test스키마에서 이름이dbo으로 시작하는 모든 테이블을 선택합니다. -
dbo\.(test1|test2): 선택dbo.test1및dbo.test2.
목록에서 두 형식을 결합할 수 있습니다. 전체 항목의 총 문자 제한은 102,400 자입니다.
슬롯 이름(선택 사항): 특정 데이터베이스/스키마의 특정 플러그 인에서 변경 내용을 스트리밍하기 위해 만든 PostgreSQL 논리 디코딩 슬롯의 이름을 입력합니다. 서버는 이 슬롯을 사용하여 Eventstream 스트리밍 커넥터로 이벤트를 스트리밍합니다. 소문자, 숫자 및 밑줄만 포함해야 합니다.
- 지정하지 않으면 적절한 데이터베이스 권한이 필요한 슬롯을 만드는 데 GUID가 사용됩니다.
- 지정된 슬롯 이름이 있는 경우 커넥터는 이를 직접 사용합니다.
고급 설정을 확장하여 PostgreSQL 데이터베이스 CDC 원본에 대한 추가 구성 옵션에 액세스할 수 있습니다.
게시 이름: 사용할 PostgreSQL 논리 복제 게시의 이름을 지정합니다. 데이터베이스의 기존 게시와 일치해야 합니다. 그렇지 않으면 자동 생성 모드에 따라 자동으로 만들어집니다. 기본값은
dbz_publication입니다.비고
커넥터 사용자에게 게시를 만들 수 있는 슈퍼 사용자 권한이 있어야 합니다. 사용 권한 관련 문제를 방지하려면 커넥터를 처음 시작하기 전에 수동으로 게시를 만드는 것이 좋습니다.
게시 자동 만들기 모드: 게시가 자동으로 만들어지는지 여부와 방법을 제어합니다. 옵션은 다음과 같습니다.
-
Filtered(기본값): 지정된 게시가 없으면 커넥터는 선택한 테이블만 포함하는 테이블을 만듭니다(테이블 포함 목록에 지정된 대로). -
AllTables: 지정된 게시물이 있는 경우 커넥터는 그것을 사용합니다. 존재하지 않는 경우 커넥터는 데이터베이스의 모든 테이블을 포함하는 테이블을 만듭니다. -
Disabled: 커넥터가 게시물을 만들지 않습니다. 지정한 게시물이 없으면 커넥터가 예외를 발생시키고 중지합니다. 이 경우 데이터베이스에서 게시를 수동으로 만들어야 합니다.
자세한 내용은 게시 자동 생성 모드에 대한 Debezium 설명서를 참조하세요.
-
10진수 처리 모드: 커넥터가 PostgreSQL
DECIMAL및NUMERIC열 값을 처리하는 방법을 지정합니다.-
Precise: 정확한 10진수 형식(예: JavaBigDecimal)을 사용하여 데이터 표현의 전체 정밀도 및 정확도를 보장하는 값을 나타냅니다. -
Double: 값을 배정밀도 부동 소수점 숫자로 변환합니다. 이렇게 하면 유용성과 성능이 향상되지만 정밀도가 손실될 수 있습니다. -
String: 값을 형식이 지정된 문자열로 인코딩합니다. 이렇게 하면 다운스트림 시스템에서 쉽게 사용할 수 있지만 원래 숫자 형식에 대한 의미 체계 정보가 손실됩니다.
-
스냅샷 모드: 커넥터가 시작될 때 스냅샷을 수행하기 위한 조건을 지정합니다.
-
Initial: 논리 서버 이름에 대한 오프셋이 기록되지 않거나 이전 스냅샷이 완료되지 않은 것으로 감지된 경우에만 커넥터가 스냅샷을 실행합니다. 스냅샷이 완료되면 커넥터는 후속 데이터베이스 변경에 대한 이벤트 레코드를 스트리밍하기 시작합니다. -
InitialOnly: 논리 서버 이름에 대한 오프셋이 기록되지 않은 경우에만 커넥터가 스냅샷을 실행합니다. 스냅샷이 완료되면 커넥터가 중지됩니다. binlog에서 변경 이벤트를 읽기 위해 스트리밍으로 전환되지 않습니다. -
NoData: 커넥터는 스키마만 캡처하지만 테이블 데이터는 캡처하지 않는 스냅샷을 실행합니다. 데이터의 일관된 스냅샷이 필요하지 않지만 커넥터가 시작된 후 변경 내용만 필요한 경우 이 옵션을 설정합니다.
-
하트비트 작업 쿼리:커넥터가 하트비트 메시지를 보낼 때 커넥터가 원본 데이터베이스에서 실행되는 쿼리를 지정합니다.
스냅샷 선택 문 재정의:스냅샷에 포함할 테이블 행을 지정합니다. 스냅샷이 테이블에 행의 하위 집합만 포함하도록 하려면 이 속성을 사용합니다. 이 속성은 스냅샷에만 영향을 줍니다. 커넥터가 로그에서 읽는 이벤트에는 적용되지 않습니다.
검토 + 연결 페이지에서 요약을 검토한 다음 추가를 선택합니다.
업데이트된 eventstream 보기
편집 모드에서 Eventstream에 추가된 PostgreSQL 데이터베이스 CDC 원본을 볼 수 있습니다.
새로 추가된 이 PostgreSQL DB CDC 원본을 구현하려면 게시를 선택합니다. 이러한 단계를 완료하면 PostgreSQL DB CDC 원본을 라이브 뷰에서 시각화할 수 있습니다.
관련 콘텐츠
기타 커넥터: