다음을 통해 공유


Azure Databricks로의 데이터 적재를 위해 PostgreSQL 구성

중요합니다

Lakeflow Connect용 PostgreSQL 커넥터는 공개 미리 보기로 제공됩니다. 공개 미리 보기에 등록하려면 Databricks 계정 팀에 문의하세요.

이 페이지에서는 Lakeflow Connect를 사용하여 PostgreSQL에서 Azure Databricks로 수집하기 위한 원본 설정 작업을 설명합니다.

변경 데이터 캡처를 위한 논리적 복제

PostgreSQL 커넥터는 논리적 복제를 사용하여 원본 테이블의 변경 내용을 추적합니다. 논리적 복제를 사용하면 커넥터가 원본 데이터베이스에 대한 트리거 또는 상당한 오버헤드 없이 데이터 수정(삽입, 업데이트 및 삭제)을 캡처할 수 있습니다.

Lakeflow PostgreSQL 논리 복제에는 다음이 필요합니다.

  1. Lakeflow Connect는 PostgreSQL 버전 13 이상에서 데이터 복제를 지원합니다.

  2. 논리 복제를 위해 데이터베이스를 구성합니다.

    PostgreSQL 매개 변수 wal_level 를 .로 logical설정해야 합니다.

  3. 복제하려는 모든 테이블을 포함하는 게시를 만듭니다.

  4. 복제할 각 카탈로그에 대한 복제 슬롯을 만듭니다.

비고

복제 슬롯을 만들기 전에 간행물을 만들어야 합니다.

논리적 복제에 대한 자세한 내용은 PostgreSQL 웹 사이트의 논리 복제 설명서를 참조하세요.

원본 설정 작업 개요

Azure Databricks에 데이터를 수집하기 전에 PostgreSQL에서 다음 작업을 완료합니다.

  1. PostgreSQL 13 이상 확인

  2. 네트워크 액세스 구성(보안 그룹, 방화벽 규칙 또는 VPN)

  3. 논리 복제 구성:

    • 논리 복제 활성화(wal_level = logical)
  4. 선택 사항: 자동 스키마 변경 검색에 대한 인라인 DDL 추적을 구성합니다. 인라인 DDL 추적을 선택하려는 경우 Databricks 지원에 문의하세요.

중요합니다

여러 PostgreSQL 데이터베이스에서 복제하려는 경우 각 데이터베이스에 대해 별도의 게시 및 복제 슬롯을 만들어야 합니다. 인라인 DDL 추적 스크립트(사용되는 경우)도 각 데이터베이스에서 실행해야 합니다.

논리 복제 구성

PostgreSQL에서 논리적 복제를 사용하도록 설정하려면 데이터베이스 설정을 구성하고 필요한 개체를 설정합니다.

WAL 수준을 논리적으로 설정

논리 복제를 위해 WAL(Write-Ahead 로그)을 구성해야 합니다. 이 설정은 일반적으로 데이터베이스를 다시 시작해야 합니다.

  1. 현재 wal_level 설정을 확인합니다.

    SHOW wal_level;
    
  2. 값이 logical이(가) 아니면, 서버 구성에서 wal_level = logical을(를) 설정하고 PostgreSQL 서비스를 다시 시작하십시오.

복제 사용자 만들기

복제 권한이 있는 Databricks 데이터 수집 전용 사용자를 만듭니다.

CREATE USER databricks_replication WITH PASSWORD 'your_secure_password';
GRANT CONNECT ON DATABASE your_database TO databricks_replication;
ALTER USER databricks_replication WITH REPLICATION;

자세한 권한 요구 사항은 PostgreSQL 데이터베이스 사용자 요구 사항을 참조하세요.

테이블에 대한 복제본 ID 설정

복제하려는 각 테이블에 대해 복제본 ID를 구성합니다. 올바른 설정은 테이블 구조에 따라 달라집니다.

테이블 구조체 필수 복제본 ID Command
테이블에는 기본 키가 있으며, TEXT, BYTEA, VARCHAR(n)와 같은 큰 값을 포함하는 TOASTable 열이 없습니다. DEFAULT ALTER TABLE schema_name.table_name REPLICA IDENTITY DEFAULT;
테이블에는 기본 키가 있지만 큰 가변 길이(TOAST 처리 가능한) 열이 포함됩니다. FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;
테이블에 기본 키가 없습니다. FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;

복제본 ID 설정에 대한 자세한 내용은 PostgreSQL 설명서의 복제본 ID 를 참조하세요.

출판물 제작

복제하려는 테이블을 포함하는 각 데이터베이스에 게시를 만듭니다.

-- Create a publication for specific tables
CREATE PUBLICATION databricks_publication FOR TABLE schema_name.table1, schema_name.table2;

-- Or create a publication for all tables in a database
CREATE PUBLICATION databricks_publication FOR ALL TABLES;

비고

복제하려는 각 PostgreSQL 데이터베이스에 별도의 게시를 만들어야 합니다.

복제 슬롯 매개 변수 구성

복제 슬롯을 만들기 전에 다음 서버 매개 변수를 구성합니다.

복제 슬롯에 대한 WAL 보존 제한

매개 변수: max_slot_wal_keep_size

기본값(-1)으로 설정하지 않는 것이 권장됩니다. 이는 지연되거나 비활성화된 복제 슬롯에 의해 무제한의 WAL bloat를 초래할 수 있기 때문입니다. 워크로드에 따라 이 매개 변수를 유한 값으로 설정합니다.

공식 PostgreSQL 설명서에서 max_slot_wal_keep_size 매개 변수 에 대해 자세히 알아봅니다.

비고

일부 관리형 클라우드 공급자는 이 매개 변수의 수정을 허용하지 않으며 대신 기본 제공 슬롯 모니터링 및 자동 정리를 사용합니다. 운영 경고를 설정하기 전에 플랫폼 동작을 검토합니다.

자세한 내용은 다음을 참조하세요.

복제 슬롯 용량 구성

매개 변수: max_replication_slots

복제되는 각 PostgreSQL 데이터베이스에는 하나의 논리적 복제 슬롯이 필요합니다. 이 매개 변수를 복제할 데이터베이스 수와 기존 복제 요구 사항으로 설정합니다.

WAL 전송 프로세스 구성

매개 변수: max_wal_senders

이 매개 변수는 WAL 데이터를 구독자에게 스트리밍하는 동시 WAL 발신자 프로세스의 최대 수를 정의합니다. 대부분의 경우 효율적이고 일관된 데이터 복제를 보장하기 위해 각 복제 슬롯에 대해 하나의 WAL 발신자 프로세스가 있어야 합니다.

사용 중인 복제 슬롯 수와 같거나 그 이상이 되도록 max_wal_senders을 구성하고, 다른 기존 사용량도 고려하십시오. 운영 유연성을 제공하려면 약간 더 높게 설정하는 것이 좋습니다.

복제 슬롯 만들기

Databricks 수집 게이트웨이가 변경 내용을 추적하는 데 사용할 각 데이터베이스에 복제 슬롯을 만듭니다.

-- Create a replication slot with the pgoutput plugin
SELECT pg_create_logical_replication_slot('databricks_slot', 'pgoutput');

중요합니다

  • 복제 슬롯은 커넥터에서 사용할 때까지 WAL 데이터를 보유합니다. WAL 보존을 max_slot_wal_keep_size 제한하고 무제한 WAL 증가를 방지하도록 매개 변수를 구성합니다. 자세한 내용은 복제 슬롯 매개 변수 구성 을 참조하세요.
  • 수집 파이프라인을 삭제하는 경우 연결된 복제 슬롯을 수동으로 삭제해야 합니다. 복제 슬롯 정리를 참조하세요.

선택 사항: 인라인 DDL 추적 구성

인라인 DDL 추적은 커넥터가 원본 데이터베이스에서 스키마 변경 내용을 자동으로 검색하고 적용할 수 있도록 하는 선택적 기능입니다. 이 기능은 기본적으로 비활성화되어 있습니다.

경고

인라인 DDL 추적은 현재 미리 보기 상태이며 작업 영역에 대해 사용하도록 설정하려면 Databricks 지원에 문의해야 합니다.

자동으로 처리되는 스키마 변경 내용과 전체 새로 고침이 필요한 스키마 변경에 대한 자세한 내용은 관리형 커넥터에서 스키마 진화를 처리하는 방법스키마 진화를 참조하세요.

인라인 DDL 추적 설정

작업 영역에 대해 인라인 DDL 추적을 사용하도록 설정한 경우 각 PostgreSQL 데이터베이스에서 다음 단계를 완료합니다.

  1. lakeflow_pg_ddl_change_tracking.sql 스크립트를 다운로드하고 실행합니다.

    \i lakeflow_pg_ddl_change_tracking.sql
    
  2. 트리거 및 감사 테이블이 성공적으로 생성되었는지 확인합니다.

    -- Check for the DDL audit table
    SELECT * FROM pg_tables WHERE tablename = 'lakeflow_ddl_audit';
    
    -- Check for the event triggers
    SELECT * FROM pg_event_trigger WHERE evtname LIKE 'lakeflow%';
    
  3. 게시물에 DDL 감사 테이블을 추가합니다.

    ALTER PUBLICATION databricks_publication ADD TABLE public.lakeflow_ddl_audit;
    

클라우드별 구성 정보

AWS RDS 및 오로라

  • rds.logical_replication 매개 변수가 매개 변수 그룹에서 1로 설정되어 있는지 확인합니다.

  • Databricks 작업 영역의 연결을 허용하도록 보안 그룹을 구성합니다.

  • 복제 사용자에게는 다음 역할이 필요합니다.rds_replication

    GRANT rds_replication TO databricks_replication;
    

PostgreSQL용 Azure 데이터베이스

  • Azure Portal 또는 CLI를 통해 서버 매개 변수에서 논리적 복제를 사용하도록 설정합니다.
  • Databricks 작업 영역의 연결을 허용하도록 방화벽 규칙을 구성합니다.
  • 유연한 서버의 경우 논리 복제가 지원됩니다. 단일 서버의 경우 지원되는 계층을 사용하고 있는지 확인합니다.

GCP Cloud SQL for PostgreSQL (GCP의 PostgreSQL용 클라우드 SQL)

  • cloudsql.logical_decoding 인스턴스 설정에서 플래그를 사용하도록 설정합니다.
  • Databricks 작업 영역의 연결을 허용하도록 권한 있는 네트워크를 구성합니다.
  • pglogical 확장을 사용하는 경우 cloudsql.enable_pglogical 플래그가 on로 설정되어 있는지 확인하십시오.

구성 확인

설치 작업을 완료한 후 논리 복제가 올바르게 구성되었는지 확인합니다.

  1. wal_levellogical로 설정되어 있는지 확인합니다.

    SHOW wal_level;
    
  2. 복제 사용자에게 권한이 있는지 확인합니다.replication

    SELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication';
    
  3. 게시물이 존재하는지 확인합니다.

    SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';
    
  4. 복제 슬롯이 있는지 확인합니다.

    SELECT slot_name, slot_type, active, restart_lsn
    FROM pg_replication_slots
    WHERE slot_name = 'databricks_slot';
    
  5. 테이블에 대한 복제본 ID를 확인합니다.

    SELECT schemaname, tablename, relreplident
    FROM pg_tables t
    JOIN pg_class c ON t.tablename = c.relname
    WHERE schemaname = 'your_schema';
    

    FULL 복제본 ID를 위해 relreplident 열이 f 표시되어야 합니다.

다음 단계

원본 설정을 완료한 후 PostgreSQL에서 데이터를 수집하는 수집 게이트웨이 및 파이프라인을 만들 수 있습니다. PostgreSQL에서 데이터 수집을 참조하세요.