본 문서는 TDSQL for MySQL용 DTS에서 데이터 구독 작업을 생성하는 방법을 설명합니다.
전제 조건
원본 인스턴스에서 binlog가 활성화되었습니다.
구독 계정이 원본 인스턴스에 생성되었습니다. 필요한 계정 권한은 다음과 같습니다: REPLICATION CLIENT, REPLICATION SLAVE, PROCESS 및 모든 대상의 SELECT 권한.
구체적인 권한 부여 명령은 다음과 같습니다.
create user '마이그레이션 계정' IDENTIFIED BY '계정 비밀번호';
grant SELECT, REPLICATION CLIENT,REPLICATION SLAVE,PROCESS on *.* to ' 마이그레이션 계정'@'%';
flush privileges;
제한
현재 구독 메시지 내용은 기본적으로 1일 동안 보관됩니다. 만료된 데이터는 삭제됩니다. 따라서 즉시 데이터를 소비하는 것이 좋습니다.
데이터가 소비되는 리전은 가입된 데이터베이스의 리전과 동일해야 합니다.
geometry 데이터 유형은 현재 지원되지 않습니다.
데이터 구독 원본이 TDSQL for MySQL인 경우 인증문을 직접 실행하는 것은 지원ehl지 않습니다. 대신 TDSQL 콘솔로 이동하여 타깃 인스턴스 ID를 클릭하고 계정 관리 페이지를 입력하여 권한을 부여해야 합니다.
구독 계정에 필요한 권한은 위의 권한 부여 문에 나열된 권한입니다. 구독 계정에 __tencentdb__의 권한을 부여하려면 권한 수정 팝업 창에서 객체 수준 권한을 선택한 다음 모든 권한을 선택합니다. 데이터 구독 원본이 TDSQL for MySQL인 경우 2급 파티션 테이블을 구독할 수 없습니다. 구독 작업이 시작되기 전에 원본 데이터베이스에 2-레벨 분할 테이블을 생성하면 확인 작업이 실패합니다.
구독 작업이 실행될 때 원본 데이터베이스에 2-레벨 분할 테이블이 생성된 경우 2-레벨 분할 테이블에서 구독된 데이터는 서브 테이블의 데이터가 됩니다(선택한 구독 객체가 전체 데이터베이스 또는 전체 인스턴스인 경우 구독 작업이 시작된 후 원본 데이터베이스에서 생성된 2-레벨 분할 테이블도 구독됩니다. 이러한 방식으로 2-레벨 분할 테이블의 데이터는 구독에도 포함됩니다). 2-레벨 분할 테이블의 기본 레이어는 서브 테이블에 의해 구현되므로 구독 작업 실행 중에 2-레벨 분할 테이블을 생성하지 않는 것이 좋습니다. 그렇지 않으면 아래와 같이 가입된 데이터에 차이가 발생합니다.
예를 들어 원본 데이터베이스 테이블 ‘test_a’가 2-레벨 분할 테이블인 경우 DTS가 이 테이블에 구독하는 DML의 테이블 이름은 ‘test_a_tdsql_subp0/test_a_tdsql_subp1’입니다.
DTS에서 Kafka 메시지 구독의 전달 의미는 적어도 한 번(at least once) 메시지를 전달하는 것입니다. 따라서 특별한 경우에 소비된 데이터가 중복될 수 있습니다. 예를 들어 구독 작업이 다시 시작되면 다시 시작한 후 중단 오프셋 전에 원본 Binlog가 당겨져 메시지가 반복적으로 전달됩니다. 등록된 객체 수정 및 비정상 작업 복원과 같은 콘솔 작업은 중복 메시지를 유발할 수 있습니다. 비즈니스가 중복 데이터에 민감한 경우 소비 Demo에서 비즈니스 데이터를 기반으로 중복 제거 로직을 추가해야 합니다.
주의 사항
데이터 구독 원본이 TDSQL for MySQL인 경우 각 샤드의 DDL 작업이 구독되어 Kafka에 전달됩니다. 따라서 분할된 테이블에는 DDL 작업에 대한 중복 DDL 문이 있습니다. 예를 들어 인스턴스 A에 3개의 샤드가 있고 샤딩된 tableA를 구독하는 경우 동일한 DDL 작업에 대한 3개의 DDL 문이 tableA에 전달됩니다.
Kafka에서 각 메시지의 헤더는 key/value 형식의 샤드 정보를 전달합니다. 여기서 key는 ShardId이고 value는 SQL 통과 ID입니다. SQL 통과 ID를 기반으로 메시지가 온 샤드를 식별할 수 있으며 TDSQL 콘솔 > 인스턴스 목록 > 샤드 관리에서 볼 수 있는 SQL 통과 ID를 기반으로 메시지가 온 샤드를 식별할 수 있습니다.
구독을 지원하는 SQL 작업
|
| |
| CREATE DATABASE, DROP DATABASE, CREATE TABLE, ALTER TABLE, DROP TABLE, RENAME TABLE |
작업 단계
1. DTS 콘솔에 로그인한 뒤 왼쪽 사이드바에서 데이터 구독을 선택하고 데이터 구독 생성을 클릭합니다. 2. 데이터 구독 생성 페이지에서 적합한 설정을 선택하고 구매하기를 클릭합니다.
과금 방식: 정액 과금제 및 종량제 과금 방식을 지원합니다.
리전: 리전은 구독하려는 데이터베이스의 인스턴스 구독과 일치해야 합니다.
데이터베이스: 실제 데이터베이스 유형을 선택합니다.
버전: kafka 버전을 선택하면 Kafka 클라이언트를 통한 직접 소비를 지원합니다.
구독 인스턴스 이름: 현재 데이터 구독 인스턴스의 이름을 편집합니다.
3. 구매 성공 후, 데이터 구독 리스트로 돌아가 작업열의 구독 설정을 클릭해 새로 구입한 구독의 설정을 진행합니다. 설정 완료 후 사용할 수 있습니다.
4. 데이터베이스 구독 설정 페이지에서 적합한 설정을 선택하고 다음 단계를 클릭합니다.
인스턴스: 데이터 인스턴스를 선택합니다. 현재 읽기 전용 및 재해 복구 인스턴스는 데이터 구독을 지원하지 않습니다.
데이터베이스 계정: 구독 인스턴스의 계정과 비밀번호를 추가합니다. 계정은 구독 작업에 필요한 REPLICATION CLIENT, REPLICATION SLAVE, PROCESS 및 모든 대상의 SELECT 권한을 갖추고 있습니다.
kafka 파티션 수: kafka 파티션의 수를 설정합니다. 숫자를 늘리면 데이터 쓰기 및 소비 속도가 향상될 수 있습니다. 단일 파티션은 메시지 순서를 보장할 수 있지만 여러 파티션은 보장할 수 없습니다. 사용 중 메시지 순서에 대한 엄격한 요구 사항이 있는 경우 이 값을 1로 설정하십시오.
5. 구독 유형 및 대상 선택 페이지에서 구독 유형을 선택하고 설정 저장을 클릭합니다.
구독 유형: 옵션에는 데이터 업데이트, 구조 업데이트 및 전체가 포함됩니다.
데이터 업데이트: 데이터 INSERT, UPDATE, DELETE 작업을 포함하여 선택한 대상의 데이터 업데이트를 구독합니다.
구조 업데이트: 구독 인스턴스 내 모든 대상의 구조를 생성, 수정 및 삭제합니다.
전체 인스턴스: 해당 구독 인스턴스의 모든 대상의 데이터 업데이트 및 구조 업데이트를 포함합니다.
6. 사전 인증 페이지에서 2 - 3분에 걸쳐 사전 인증 작업이 실행됩니다. 사전 인증이 완료된 후, 실행을 클릭하여 데이터 구독 작업 설정을 완료합니다.
설명:
검증에 실패할 경우 확인 항목 개요의 안내에 따라 문제를 수정하고 다시 검증을 시작하십시오. 7. 시동을 클릭하면 구독 작업이 초기화되며 3 - 4분 동안 실행됩니다. 초기화에 성공하면 실행 중 상태로 변합니다.
8. 신규 소비자 그룹, 데이터 구독(Kafka 버전)을 사용하면 다중 지점 소비를 위해 여러 소비자 그룹을 만들 수 있습니다. 소비는 Kafka의 소비자 그룹에 따라 다릅니다. 따라서 데이터를 사용하려면 먼저 소비자 그룹을 생성해야 합니다. 9. 구독 인스턴스가 실행 중 상태가 되면 데이터 소비를 시작할 수 있습니다. Kafka 소비는 비밀번호 인증이 필요하며, 다국어 Demo 코드를 제공하고 주요 소비 프로세스 및 주요 데이터 구조를 설명합니다.