분류 sql

오픈 소스를 사용한 데이터베이스 복제 가이드

컨텐츠 정보

  • 조회 528 (작성일 )

본문

데이터베이스용으로 로그 기반 CDC(Change Data Capture) 복제를 선택해야 하는 이유 사용 가능한 오픈 소스 옵션에 대해 알아보세요.


끊임없이 진화하는 데이터의 세계에서 종종 한 가지 질문이 떠오릅니다. 기하급수적으로 증가하고 점점 더 많은 소스에서 오는 데이터를 어떻게 원활하게 복제할 수 있습니까? 

이 기사에서는 데이터베이스 복제 작업을 데이터 웨어하우스, 호수 또는 기타 데이터베이스로 상품화하는 데 도움이 될 수 있는 몇 가지 기본 오픈 소스 기술에 대해 설명합니다.


널리 사용되는 복제 기술 중 하나는 CDC(Change Data Capture)로, 소스 데이터베이스의 행 수준 데이터 변경 사항을 신속하게 식별하고 캡처하여 대상 데이터 웨어하우스, 호수 또는 기타 데이터베이스에 실시간으로 전달할 수 있는 패턴입니다. 

CDC를 사용하면 삽입, 업데이트 및 삭제 작업으로 분류된 마지막 복제 이후 변경된 데이터만 범위에 포함됩니다. 

이 증분 설계 접근 방식은 CDC를 전체 데이터베이스 복제와 같은 다른 데이터베이스 복제 패턴보다 훨씬 더 효율적으로 만듭니다. 

전체 데이터베이스 복제를 사용하면 잠재적으로 수백만 개의 행이 있는 전체 원본 데이터베이스 테이블을 스캔하고 대상으로 복사합니다.


Open source CDC 


Debezium은 Apache Kafka를 활용하여 데이터 변경 사항을 전송하는 오픈 소스 분산 CDC 플랫폼입니다. 데이터베이스를 지속적으로 모니터링하여 각 행 수준 변경 사항이 데이터베이스에 커밋된 것과 정확히 동일한 순서로 대상으로 전송되도록 합니다.

그러나 DIY 복제 프로젝트에서 Debezium을 사용하는 것은 큰 부담이 될 수 있습니다. 소스 및 대상 시스템, Kafka 및 Debezium 내부와 관련된 개념에 대한 깊은 이해가 필요합니다.

예를 들어 Debezium MySQL 커넥터에 필요한 모든 세부 정보를 살펴보십시오.


Airbyte는 데이터 웨어하우스, 호수 및 데이터베이스의 데이터를 통합할 수 있는 오픈 소스 데이터 통합 ​​엔진입니다. Airbyte는 Debezium을 활용하고 모든 어려운 작업을 수행합니다. 실제로 Airbyte 내에서 Debezium은 임베디드 라이브러리로 실행됩니다. 이 엔지니어링 설계를 통해 Apache Kafka 또는 다른 언어 런타임을 사용할 필요 없이 Debezium을 사용할 수 있습니다.

비디오는 CDC를 사용하여 몇 분 만에 Airbyte로 PostgreSQL 데이터베이스를 복제하는 방법을 보여줍니다. 오픈 소스 코드는 Postgres, MySQL 및 MSSQL과 함께 사용할 수 있으며 이를 가능하게 하는 다른 모든 주요 데이터베이스에서도 곧 사용할 예정입니다.


데이터베이스에 대한 몇 가지 일반적인 CDC 사용 사례는 무엇입니까? 


데이터베이스는 오늘날 데이터 인프라의 핵심이며 다양한 사용 사례가 적용됩니다.


1. 트랜잭션 데이터베이스와 네트워크 전반에 걸쳐 오버헤드를 줄이십시오. 


CDC를 사용하면 소스 데이터베이스 시스템에 불필요한 오버헤드를 가하지 않고 데이터 변경 사항을 연속 스트림으로 전달할 수 있습니다. 이는 데이터베이스가 설계된 보다 가치 있는 작업을 수행하는 데 집중할 수 있음을 의미하므로 앱의 처리량을 높이고 대기 시간을 줄일 수 있습니다. CDC를 사용하면 증분 데이터 변경 사항만 네트워크를 통해 전송되므로 데이터 전송 비용이 절감되고 네트워크 포화가 최소화되며 피크 배치 트래픽을 처리하기 위해 시스템을 미세 조정할 필요가 없습니다.


2. 트랜잭션 및 분석 데이터베이스의 동기화 유지 


데이터가 엄청난 속도로 생성되는 상황에서 데이터에서 통찰력을 추출하는 것이 조직의 성공의 핵심입니다. CDC는 트랜잭션 데이터베이스에서 실시간 데이터 변경 사항을 캡처하고 정기적으로 분석 데이터베이스 또는 웨어하우스로 전송하여 더 깊은 통찰력을 추출하기 위해 분석할 수 있습니다. 예를 들어 온라인 여행 회사라고 가정해 보겠습니다. 데이터베이스 계층(예: PostgreSQL 사용)에서 실시간 온라인 예약 활동을 캡처하고 이러한 트랜잭션을 분석 데이터베이스로 보내 고객의 구매 패턴 및 선호도에 대해 자세히 알아볼 수 있습니다.


3. 레거시 시스템에서 차세대 데이터 플랫폼으로 데이터 마이그레이션 


클라우드 기반 데이터베이스 인스턴스로 이동하여 레거시 데이터베이스 시스템을 현대화하는 방향으로 전환함에 따라 이러한 새로운 플랫폼으로 데이터를 이동하는 것이 그 어느 때보다 중요해졌습니다. CDC를 사용하면 데이터가 주기적으로 동기화되므로 원하는 속도로 데이터 플랫폼을 현대화하는 동시에 기존 데이터 플랫폼과 차세대 데이터 플랫폼을 모두 유지 관리할 수 있습니다. 이 설정은 유연성을 보장하고 하트비트를 놓치지 않고 비즈니스 운영을 유지할 수 있습니다.


4. 애플리케이션을 위한 동적 데이터 캐시 워밍업 


캐싱은 애플리케이션 성능을 개선하기 위한 표준 기술이지만 데이터 캐시가 효과적이려면 데이터 캐시를 워밍업(또는 데이터와 함께 로드)해야 합니다. 웜 데이터 캐시를 사용하면 애플리케이션이 코어 데이터베이스를 우회하여 데이터에 빠르게 액세스할 수 있습니다. 예를 들어, 이 패턴은 캐시에 이 조회 데이터를 로드하면 코어 데이터베이스에서 읽기 워크로드를 오프로드할 수 있기 때문에 많은 데이터 조회를 수행하는 애플리케이션에 매우 유용합니다. CDC를 사용하면 데이터 캐시를 항상 동적으로 업데이트할 수 있습니다. 예를 들어, 데이터베이스의 선택적 조회 테이블은 초기 워밍업 주기 동안 캐시에 로드될 수 있습니다. 조회 테이블 데이터의 향후 수정 사항은 캐시를 업데이트하기 위해 점진적으로 전파됩니다.


어떤 CDC 구현이 있으며 어떤 데이터베이스를 선택해야 합니까? 


CDC는 꽤 오랫동안 존재해 왔으며 수년에 걸쳐 여러 제품에서 널리 사용되는 다양한 구현이 생겨났습니다. 그러나 모든 CDC 구현이 동일하게 생성되는 것은 아니므로 데이터 변경 사항을 명확하게 파악하려면 적절한 구현을 선택해야 합니다. 이러한 구현 중 일부와 각 구현을 사용하는 데 따른 문제를 아래 목록에 요약했습니다.


수정된 날짜 


이 접근 방식은 행을 만든 사람, 최근에 행을 수정한 사람, 행이 만들어지고 수정된 시간을 포함하여 테이블의 모든 행에서 메타데이터를 추적합니다.


도전 과제: 


  • 삭제된 행에 대한 date_modified 필드가 더 이상 존재하지 않기 때문에 데이터 삭제를 추적하기가 쉽지 않습니다.
  • date_modified 필드를 처리하려면 추가 컴퓨팅 리소스가 필요합니다. date_modified 필드에서 인덱싱을 사용하는 경우 인덱스에 추가 컴퓨팅 및 스토리지 리소스가 필요합니다.

이진 비교 


이 구현은 현재 데이터와 이전 데이터 간의 상태 차이를 계산합니다.


도전 과제: 


  • 상태 차이를 계산하는 것은 복잡할 수 있으며 데이터 볼륨이 클 때 잘 확장되지 않습니다.
  • 추가 컴퓨팅 리소스가 필요하며 실시간으로 수행할 수 없습니다.

데이터베이스 트리거 


이 방법을 사용하려면 동일한 테이블 내에서 또는 별도의 부기 테이블에서 메타데이터를 관리하기 위한 논리로 데이터베이스 트리거를 생성해야 합니다.


도전 과제: 


  • 트리거는 모든 트랜잭션에 대해 실행되어야 하며 이는 트랜잭션 워크로드를 느리게 할 수 있습니다.
  • 데이터 엔지니어는 트랜잭션 실패의 경우를 처리하기 위해 추가로 복잡한 롤백 논리를 작성해야 합니다.
  • 테이블 스키마가 수정된 경우 최신 스키마 변경 사항으로 트리거를 수동으로 업데이트해야 합니다.
  • 여러 데이터베이스 시스템 간의 SQL 언어 차이는 트리거를 쉽게 이식할 수 없으며 다시 작성해야 할 수도 있음을 의미합니다.


Log-based 


이 구현은 캡처 프로세스의 영향을 최소화하기 위해 데이터베이스 로그 및 저널 파일에서 직접 데이터를 읽습니다. 데이터베이스 로그 및 저널 파일은 모든 트랜잭션 데이터베이스 제품에 존재하므로 경험이 투명합니다. 즉, 데이터베이스 개체 또는 데이터베이스 위에서 실행되는 응용 프로그램 측면에서 논리적 변경이 필요하지 않습니다.


도전 과제: 


  • 대상 데이터베이스 시스템이 다운된 경우 원본 데이터베이스 시스템 로그는 동기화가 발생할 때까지 그대로 유지되어야 합니다.
  • 로그 파일을 우회하는 데이터베이스 작업은 캡처되지 않습니다. ACID 동작을 보장하기 위해 로그가 필요하기 때문에 이것은 대부분의 관계형 데이터베이스 사용 사례에 대한 코너 케이스입니다.
    -,예를 들어 TRUNCATE 테이블 문은 데이터를 로깅하지 않을 수 있으며 이 경우 쿼리 힌트 또는 구성을 통한 강제 로깅이 필요할 수 있습니다.

프로덕션 데이터베이스와 관련하여 선택은 명확합니다. 로그 기반 CDC는 안정성, 방대한 데이터 볼륨에서 확장할 수 있는 능력, 데이터베이스나 앱 변경 없이 사용하기 쉽기 때문에 앞으로 나아갈 길입니다.


결론 


이 기사가 데이터베이스에 대한 로그 기반 CDC 복제가 중요한 이유와 사용 가능한 새로운 오픈 소스 옵션을 설명하는 데 도움이 되었기를 바랍니다. Airbyte가 로그 기반 CDC 복제를 훨씬 쉽게 만든 것처럼 이러한 옵션은 무한한 복제 가능성을 제공합니다.


출처 : https://opensource.com/article/21/8/database-replication-open-source