tencent cloud

Data Transfer Service

문서Data Transfer Service

TencentDB for MySQL에서 자체 구축 또는 타사 클라우드 MySQL로 동기화

Download
포커스 모드
폰트 크기
마지막 업데이트 시간: 2022-11-09 14:25:32
본문은 DTS를 사용하여 TencentDB for MySQL 인스턴스에서 자체 구축 또는 타사 클라우드 MySQL 데이터베이스로 데이터를 동기화하는 방법을 설명합니다.
본문은 단방향 동기화를 수행하는 방법을 설명합니다. 양방향 동기화 또는 다대일 동기화와 같은 복잡한 토폴로지 구조를 생성하려면 양방향 동기화 데이터 구조 생성, 다대일 동기화 데이터 구조 생성 또는 멀티 사이트 Active-Active IDC 구축을 참고하십시오.

주의 사항

전체 데이터 동기화 중에 DTS는 특정 원본 데이터베이스 리소스를 사용하므로 원본 데이터베이스의 로드와 압력이 증가할 수 있습니다. 데이터베이스 설정이 낮으면 사용량이 적은 시간에 데이터를 동기화하는 것이 좋습니다.
데이터 중복을 방지하려면 동기화할 테이블에 기본 키 또는 null이 아닌 고유 키가 있어야 합니다.
기본적으로 잠금 없는 방식이 사용되며 동기화 과정에서 원본 데이터베이스에 전역 잠금(FTWRL)이 적용되지 않고 기본 키가 없는 테이블만 테이블 잠금이 추가되고 나머지는 NOLOCK입니다.
데이터 동기화 중에 DTS는 동기화 작업을 실행하는 계정을 사용하여 원본 데이터베이스에 시스템 데이터베이스__tencentdb__를 작성하여 동기화 작업 중에 데이터 비교 정보를 기록합니다.
후속 데이터 문제를 찾을 수 있도록 원본 데이터베이스의 __tencentdb__ 시스템 데이터베이스는 동기화 작업이 끝난 후 삭제되지 않습니다.
__tencentdb__시스템 데이터베이스는 단일 스레드 연결 대기 메커니즘을 사용하며 원본 데이터베이스의 저장 공간의 약 0.01%–0.1%인 매우 작은 공간을 차지합니다. 예를 들어, 원본 데이터베이스가 50GB인 경우 __tencentdb__는 약 5KB - 50KB가 됩니다. 따라서 원본 데이터베이스의 성능에 거의 영향을 미치지 않으며 리소스를 선점하지 않습니다.

전제 조건

원본 및 대상 데이터베이스는 데이터 동기화가 지원하는 데이터베이스에 설명된 대로 동기화 기능 및 버전에 대한 요구 사항을 충족해야 합니다.
원본 데이터베이스에 필요한 권한:
GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SHOW VIEW,PROCESS,SELECT ON *.* TO '계정'@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO '계정'@'%';
FLUSH PRIVILEGES;
대상 데이터베이스 필요 권한: ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE USER, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, PROCESS, REFERENCES, RELOAD, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER, UPDATE.

제한

기본 테이블, 뷰, 저장 프로시저 및 함수의 동기화만 지원합니다.
뷰, 저장 프로시저 및 함수를 동기화할 때 DTS는 원본 데이터베이스의 DEFINER([DEFINER = user1])에 해당하는 user1이 동기화 계정의 user2와 동일한지 확인하고, 동일하지 않은 경우 동기화 후 DTS는 대상 데이터베이스에 있는 user1의 SQL SECURITY 속성을 DEFINER에서 INVOKER([INVOKER = user1])로 변경하고 대상 데이터베이스의 DEFINER를 동기화 계정의 user2로 설정합니다([DEFINER = 동기화 계정 user2]). 소스 라이브러리의 뷰 정의가 너무 복잡하면 작업이 실패할 수 있습니다.
원본 MySQL 데이터베이스가 비 GTID 데이터베이스인 경우 DTS는 이에 대한 HA 스위치를 지원하지 않습니다. 전환되면 DTS 증분 동기화가 중단될 수 있습니다.
InnoDB, MyISAM 및 TokuDB의 세 가지 데이터베이스 엔진이 있는 데이터만 동기화할 수 있습니다. 다른 엔진이 있는 테이블은 기본적으로 동기화 중에 건너뜁니다.
연결된 데이터 객체는 함께 동기화해야 합니다. 그렇지 않으면 동기화에 실패합니다. 일반적인 연결 관계에는 뷰-테이블 참조, 뷰-뷰 참조, 기본/외래 키 연결 테이블 등이 포함됩니다.
증분 동기화 중에 원본 데이터베이스에 분산 트랜잭션이 있거나 STATEMENT 형식의 Binlog 문을 생성하면 동기화가 실패합니다.
원본 데이터베이스 Binlog의 GTID에 hole이 있는 경우 동기화 작업의 성능에 영향을 미치고 작업이 실패할 수 있습니다.
동일한 트랜잭션에 DML 및 DDL 문을 모두 포함하는 시나리오는 지원되지 않으므로 작업 실행 중에 오류가 트리거됩니다.
Geometry 데이터 유형은 지원되지 않으며 작업 실행 중에 오류를 트리거합니다.
'ALTER VIEW' 명령은 지원하지 않으며 이 명령을 만났을 때 작업 건너뛰기가 동기화되지 않습니다.

작업 제한

동기화 중에는 다음 작업을 수행하지 마십시오. 그렇지 않으면 동기화 작업이 실패합니다.
원본 및 대상 데이터베이스와 포트 번호의 사용자 정보(사용자 이름, 암호 및 권한 포함)를 수정하거나 삭제하지 마십시오.
원본 데이터베이스에서 분산 트랜잭션을 실행하지 마십시오.
STATEMENT 형식의 Binlog 데이터를 원본 데이터베이스에 쓰지 마십시오.
원본 데이터베이스에서 Binlog를 지우지 마십시오.
증분 동기화 중에 시스템 테이블 __tencentdb__를 삭제하지 마십시오.

동기화 지원 SQL 작업

작업 유형
SQL 문
DML
INSERT, UPDATE, DELETE
DDL
CREATE DATABASE, DROP DATABASE, ALTER DATABASE, CREATE TABLE, ALTER TABLE, DROP TABLE, TRUNCATE TABLE, RENAEM TABLE, CREATE VIEW, DROP VIEW, CREATE INDEX, DROP INDEX
설명:
파티션(Partition)과 관련된 DDL 문은 동기화할 수 없습니다.

환경 요건

유형
환경 요건
원본 데이터베이스 요구 사항
원본 및 대상 데이터베이스를 연결할 수 있어야 합니다.
데이터베이스 매개변수 요구 사항:
원본 데이터베이스의 server_id 매개변수는 수동으로 설정해야 하며 0이 될 수 없습니다.
원본 데이터베이스/테이블의 row_format은 FIXDE로 설정할 수 없습니다.
원본 및 대상 데이터베이스의 lower_case_table_names 변수 값은 동일해야 합니다.
원본 데이터베이스의 connect_timeout 변수는 10 이상이어야 합니다.
Binlog 매개변수 요구사항:
원본 데이터베이스의 log_bin 변수는 ON으로 설정해야 합니다.
원본 데이터베이스의 binlog_format 변수는 ROW로 설정해야 합니다.
원본 데이터베이스의 binlog_row_image 변수는 FULL로 설정해야 합니다.
MySQL 5.6 이상에서 gtid_mode 변수가 ON이 아니면 알람이 트리거됩니다. gtid_mode를 활성화하는 것이 좋습니다.
do_db 및 ignore_db를 설정할 수 없습니다.
원본 데이터베이스가 세컨더리 데이터베이스인 경우 log_slave_updates 변수를 ON으로 설정해야 합니다.
최소 3일 동안 원본 데이터베이스의 Binlog를 보관하는 것이 좋습니다. 그렇지 않으면 체크포인트에서 작업을 재개할 수 없으며 실패합니다.
외래 키 종속성:
외래 키 종속성은 NO ACTION 또는 RESTRICT 두 가지 유형 중 하나로만 설정할 수 있습니다.
부분 테이블 동기화 중에 외래 키 종속성이 있는 테이블을 마이그레이션해야 합니다.
대상 데이터베이스에 대한 요구 사항
대상 데이터베이스 버전은 원본 데이터베이스 버전보다 높거나 같아야 합니다.
대상 데이터베이스에는 충분한 저장 공간이 있어야 합니다. 초기화 유형으로 ‘전체 데이터 초기화’를 선택한 경우 대상 데이터베이스 공간은 원본 데이터베이스에서 동기화할 데이터베이스/테이블 공간의 1.2배 이상이어야 합니다.
대상 데이터베이스는 원본 데이터베이스에 있는 것과 동일한 이름을 가진 테이블 및 뷰와 같은 동기화 객체를 가질 수 없습니다.
대상 데이터베이스의 max_allowed_packet 매개변수는 4MB 이상으로 설정해야 합니다.
기타 요구 사항
환경 변수 innodb_stats_on_metadata를 OFF로 설정해야 합니다.

작업 단계

1. 데이터 동기화 구매 페이지에 로그인하여 알맞은 설정을 선택하고 구매하기를 클릭합니다.
매개변수
설명
과금 방식
정액 과금제 및 사용량 과금이 지원됩니다.
원본 인스턴스 유형
MySQL을 선택합니다. 한 번 구성하면 변경할 수 없습니다.
원본 인스턴스 리전
원본 데이터베이스 리전을 선택합니다. 구성한 후에는 변경할 수 없습니다.
대상 인스턴스 유형
MySQL을 선택합니다. 한 번 구성하면 변경할 수 없습니다.
대상 인스턴스 리전
대상 데이터베이스 리전을 선택합니다. 한 번 구성되면 변경할 수 없습니다.
사양
비즈니스 요구 사항에 따라 사양을 선택하십시오. 사양이 높을수록 성능이 좋습니다.
2. 구매 성공 후 데이터 동기화 목록으로 돌아가면 새로 생성된 데이터 동기화 작업을 볼 수 있습니다. 사용하기 전에 설정해야 합니다.
3. 데이터 동기화 목록의 작업 열에서 설정을 클릭하여 동기화 작업 설정 페이지로 들어갑니다.
4. 동기화 작업 설정 페이지에서 원본 인스턴스와 대상 인스턴스를 설정하고 해당 계정 및 비밀번호를 설정한 뒤 연결성 테스트를 하고 다음 단계를 클릭합니다.

설정 항목
매개변수
설명
작업 설정
작업 이름
DTS는 사용자 정의할 수 있는 작업 이름을 자동으로 생성합니다.
실행 모드
즉시 실행 및 예약 실행이 지원됩니다.
원본 데이터베이스 설정
원본 인스턴스 유형
구매 시 선택한 원본 데이터베이스 유형을 선택합니다. 변경할 수 없습니다.
원본 인스턴스 리전
구매 시 선택한 원본 데이터베이스 리전을 선택합니다. 이 리전은 한 번 설정하면 변경할 수 없습니다.
서비스 제공자
자체 구축 데이터베이스(클라우드 서버에 자체 구축 포함) 또는 Tencent Cloud 데이터베이스는 ‘일반’을 선택하고 타사 클라우드 벤더 데이터베이스는 해당 서비스 제공 업체를 선택하십시오. 이 시나리오에서는 ‘일반’을 선택하십시오.
액세스 유형
이 시나리오에서는 ‘데이터베이스’를 선택합니다.
교차/인트라 계정
이 시나리오에서는 ‘인트라 계정’을 선택합니다.
인스턴스 ID
원본 데이터베이스 인스턴스 ID입니다.
계정
필수 권한이 있어야 하는 소스 데이터베이스의 계정입니다.
비밀번호
원본 데이터베이스의 암호입니다.
대상 인스턴스 설정
대상 인스턴스 유형
구매 시 선택한 대상 데이터베이스 유형. 변경할 수 없습니다.
대상 인스턴스 리전
구매 시 대상 데이터베이스 리전을 선택합니다. 변경할 수 없습니다.
액세스 유형
자체 구축 또는 타사 클라우드 데이터베이스의 경우 일반적으로 공중망를 선택하거나 VPN 액세스, 직접 연결 또는 CCN을 선택할 수 있습니다. 실제 네트워크 상태를 기준으로 선택합니다. 이 시나리오에서는 ‘공중망’을 예로 들어 설명하며, 다양한 액세스 유형에 대한 준비는 준비 작업 개요를 참고하십시오.
호스트 주소
대상 데이터베이스의 IP 주소 또는 도메인 이름입니다.
포트
대상 데이터베이스의 포트입니다.
계정
특정 권한이 있어야 하는 대상 데이터베이스 계정입니다.
비밀번호
대상 데이터베이스의 비밀번호입니다.
5. 동기화 옵션 및 객체 설정 페이지에서 데이터 초기화, 데이터 동기화 및 객체 동기화 옵션을 설정하고 저장 후 다음으로 이동을 클릭합니다.
설명:
초기화 유형에 대해 전체 데이터 초기화만 선택하는 경우 시스템은 기본적으로 대상 데이터베이스에 테이블 구조를 생성했다고 가정하고 테이블 구조를 동기화하거나 원본 및 대상 데이터베이스에 동일한 이름의 테이블이 있는지 여부를 확인하지 않습니다. 따라서 대상이 이미 있는 경우사전 확인 및 오류 보고를 선택하면 사전 확인 및 오류 보고 기능이 적용되지 않습니다.
전체 데이터 초기화만을 선택한 경우 대상 데이터베이스에 미리 테이블 구조를 생성해야 합니다.
동기화하는 동안 테이블 이름을 rename하려면(예: table A를 table B로 rename) 동기화 객체로 table A만 선택하는 것이 아니라 table A가 있는 전체 데이터베이스(또는 전체 인스턴스)를 선택해야 합니다. 그렇지 않으면 시스템에서 오류를 보고합니다.

설정 항목
매개변수
설명
데이터 초기화 옵션
초기화 유형
구조 초기화: 원본 데이터베이스의 테이블 구조는 동기화 작업이 실행되기 전에 대상 데이터베이스로 초기화됩니다.
전체 데이터 초기화: 원본 데이터베이스의 데이터는 동기화 작업이 실행되기 전에 대상 데이터베이스로 초기화됩니다. 두 옵션 모두 기본적으로 선택되어 있으며 필요에 따라 선택을 취소할 수 있습니다.
대상이 이미 있는 경우
사전 확인 및 오류 보고: 동일한 이름의 테이블이 원본 및 대상 데이터베이스에 모두 있는 경우 오류가 보고되고 작업이 중지됩니다.
무시 및 실행: 전체 및 증분 데이터가 대상 데이터베이스의 테이블에 직접 추가됩니다.
데이터 동기화 옵션
충돌 해결 방법
보고: 데이터 동기화 중 기본 키 충돌이 발견되면 오류가 보고되고 데이터 동기화 작업이 일시 중지됩니다.
무시: 데이터 동기화 중에 기본 키 충돌이 발견되면 대상 데이터베이스의 기본 키 레코드가 유지됩니다.
덮어쓰기: 데이터 동기화 중에 기본 키 충돌이 발견되면 원본 데이터베이스의 기본 키 레코드가 대상 데이터베이스의 기본 키 레코드를 덮어씁니다.
동기화 작업 유형
지원되는 작업: Insert, Update, Delete, DDL. 필요에 따라 다른 DDL 동기화 정책을 선택하려면 ‘DDL 사용자 지정’을 여십시오. 자세한 내용은 SQL 필터 정책 설정을 참고하십시오.
동기화 객체 옵션
원본 인스턴스 DB 테이블 객체
동기화할 객체를 선택하고 기본 DB 테이블, 뷰, 저장 프로시저 및 함수를 지원합니다. 고급 객체 동기화는 일회성 작업입니다. 작업이 시작되기 전에 원본 데이터베이스의 고급 객체 동기화만 지원합니다. 작업이 시작된 후 새로 추가된 고급 객체는 대상 데이터베이스에 동기화되지 않습니다. 자세한 내용은 고급 객체 동기화를 참고하십시오.
선택된 객체
DB 테이블 매핑 지원(DB 테이블 이름 변경), 데이베이스 이름과 테이블 이름 위에 마우스를 올리면 편집 버튼이 나타납니다. 클릭 후 팝업 창에서 새 이름을 입력할 수 있습니다.
동기화할 고급 객체를 선택할 때 DB 테이블의 이름 변경을 하지 않는 것이 좋습니다. 그렇지 않으면 고급 객체의 동기화가 실패할 수 있습니다.
Online DDL 임시 테이블 동기화를 지원(gh-ost, pt-online-schema-change 툴 사용)합니다. 테이블의 편집 버튼을 클릭하면 팝업 창에서 임시 테이블 이름을 선택할 수 있습니다. 자세한 내용은 Online DDL 임시 테이블 동기화를 참고하십시오.
6. 확인 작업 페이지에서 확인을 완료하고 모든 점검 항목이 통과되면 작업 실행을 클릭합니다. 확인이 실패한 경우 확인 실패 해결 방법의 설명 대로 문제를 수정하고 확인 작업을 다시 시작합니다.
실패: 확인 항목 실패로 작업이 차단되었음을 나타냅니다. 문제를 수정하고 확인 작업을 다시 실행해야 합니다.
알람: 확인 항목이 요구 사항을 완전히 충족하지 못함을 나타내며, 작업을 계속할 수 있지만 비즈니스에 영향을 미칩니다. 알람을 무시할지 아니면 문제를 해결하고 계속할지 선택합니다.

7. 데이터 동기화 작업 리스트로 돌아가면 작업이 실행 중 상태가 됩니다.
설명:
작업 열에서 더 보기 > 중지를 클릭하여 동기화 작업을 중지할 수 있습니다. 작업을 중지하기 전에 데이터 동기화가 완료되었는지 확인해야 합니다.

8. (옵션) 작업 이름을 클릭하여 작업 상세 보기 페이지로 들어가면 작업 초기화 상태 및 모니터링 데이터를 확인할 수 있습니다.

도움말 및 지원

문제 해결에 도움이 되었나요?

피드백