본문은 DTS의 데이터 마이그레이션 기능을 사용하여 PostgreSQL에서 TencentDB for PostgreSQL로 데이터를 마이그레이션하는 방법을 설명합니다.
TDSQL-C PostgreSQL을 PostgreSQL로 마이그레이션하기 위한 요구 사항 및 지침은 기본적으로 이 시나리오와 동일하므로 작업은 이 시나리오의 관련 내용을 참고하십시오.
주의 사항
전체 데이터 마이그레이션 중에 DTS는 원본 데이터베이스 리소스를 사용하므로 원본 데이터베이스의 로드와 부담이 증가할 수 있습니다. 데이터베이스 설정이 낮으면 사용량이 적은 시간에 데이터를 마이그레이션하는 것이 좋습니다.
공용 네트워크에서 인스턴스를 마이그레이션할 때 원본 데이터베이스 서비스가 공용 네트워크를 통해 액세스할 수 있는지 확인하고 공용 네트워크 연결을 안정적으로 유지하십시오. 네트워크가 변동하거나 실패하면 마이그레이션이 실패하며 이 경우 마이그레이션 작업을 다시 시작해야 합니다.
원본 PostgreSQL 데이터베이스가 TencentDB for PostgreSQL이 아닌 경우 replication 권한이 있어야 합니다. 그렇지 않으면 사전 검사가 실패합니다.
실제 마이그레이션 과정에서 마이그레이션 속도는 원본의 읽기 성능, 원본과 대상 인스턴스 간의 네트워크 대역폭, 대상 인스턴스의 사양 및 성능과 같은 요인의 영향을 받습니다. 마이그레이션 동시성은 대상 인스턴스 사양의 코어 수에 따라 결정됩니다. 예를 들어 대상 인스턴스에 2개의 코어가 있는 경우 동시성은 2입니다.
전제 조건
원본 데이터베이스에 대한 권한 요구 사항은 다음과 같습니다.
원본 PostgreSQL 데이터베이스가 TencentDB for PostgreSQL이 아닌 경우 원본 데이터베이스 계정에 replication 권한이 있어야 합니다.
원본 데이터베이스가 TencentDB for PostgreSQL인 경우 원본 데이터베이스 계정은 TencentDB 인스턴스 생성 시 선택한 초기 사용자여야 합니다.
일부 테이블이나 객체에 권한이 없는 경우 권한이 높은 사용자를 사용하여 다음 샘플 명령을 실행하여 권한을 부여할 수 있습니다.
grant select on table 테이블 이름 to 사용자 이름;
grant select on SEQUENCE 시퀀스 이름 to 사용자 이름;
grant connect on database 데이터베이스 이름 to 사용자 이름;
grant select on large object 대형 객체 이름 oid to 사용자 이름;
GRANT USAGE ON SCHEMA 스키마 이름 to 사용자 이름;
대상 데이터베이스 계정은 TencentDB 인스턴스를 생성할 때 선택한 초기 사용자여야 합니다.
대상 데이터베이스 인스턴스에 마이그레이션할 database가 포함되어 있지만 database owner가 현재 마이그레이션 사용자의 소속이 아닌 경우 다음 명령문을 실행하여 마이그레이션 사용자에게 database 권한을 부여합니다.
alter database 데이터베이스 이름 owner to 마이그레이션사용자;
사용자를 마이그레이션하는 경우(마이그레이션 작업을 실행하는 계정) pg_tencentdb_superuser 역할을 가진 사용자가 아닌 경우 시스템은 확인 중에 ‘대상 데이터베이스 권한 확인에 실패했으며 Schema 목록을 가져올 수 없습니다’라는 메시지를 표시합니다. 이 경우 다음 명령문을 실행하여 마이그레이션 사용자에게 초기 사용자의 권한을 부여합니다.
grant pg_tencentdb_superuser to 마이그레이션 사용자;
제한
연결된 데이터 객체는 함께 마이그레이션해야 합니다. 그렇지 않으면 마이그레이션이 실패합니다. 일반적인 연결 관계에는 뷰-테이블 참조, 뷰-뷰 참조, 저장 프로시저/함수/트리거 뷰/테이블 참조, 기본/외래 키 연결 테이블이 포함됩니다.
마이그레이션 효율성을 보장하기 위해 CVM 기반 자체 구축 인스턴스의 리전 간 마이그레이션은 지원되지 않습니다. 리전 간 마이그레이션이 필요한 경우 공용 네트워크 액세스 유형을 사용하십시오.
전체 인스턴스가 마이그레이션되면 대상 데이터베이스에 원본 데이터베이스와 동일한 이름을 가진 사용자 및 역할이 있을 수 없습니다.
마이그레이션 유형으로 전체 + 증분 마이그레이션을 선택한 경우 원본 데이터베이스의 테이블에 기본 키가 있어야 하며, 그렇지 않으면 원본 데이터베이스와 대상 데이터베이스의 데이터가 일치하지 않습니다. 기본 키가 없는 테이블의 경우, 전체 마이그레이션을 선택하는 것이 좋습니다.
작업 제한
마이그레이션하는 동안 원본 및 대상 데이터베이스와 포트 번호의 사용자 정보(사용자 이름, 암호 및 권한 포함)를 수정하거나 삭제하지 마십시오.
구조적, 전체 및 증분 마이그레이션 중에는 DDL 또는 대형 객체 작업을 수행하지 마십시오. 그렇지 않으면 마이그레이션된 데이터가 일치하지 않습니다.
전체 데이터 마이그레이션만 수행하는 경우 마이그레이션 시작 시간 이전의 데이터만 마이그레이션됩니다. 마이그레이션하는 동안 원본 데이터베이스에 새 데이터를 쓰는 경우 원본 데이터베이스와 대상 데이터베이스 간에 데이터 불일치가 발생합니다. 데이터 쓰기가 있는 시나리오에서 실시간으로 데이터 일관성을 보장하려면 전체 + 증분 데이터 마이그레이션을 선택하는 것이 좋습니다.
환경 요건
설명:
시스템은 마이그레이션 작업을 시작하기 전에 다음 환경 요구 사항을 자동으로 확인하고 요구 사항이 충족되지 않으면 오류를 보고합니다. 실패 항목을 식별할 수 있는 경우 확인 항목 요구 사항에 따라 수정하십시오. 그렇지 않으면 시스템 확인이 완료될 때까지 기다렸다가 오류 메시지에 따라 문제를 수정하십시오. |
원본 데이터베이스 요구 사항 | 원본 및 타깃 데이터베이스를 연결할 수 있어야 합니다. 원본 데이터베이스가 있는 서버에 충분한 아웃바운드 대역폭이 있어야 합니다. 그렇지 않으면 마이그레이션 속도가 영향을 받습니다. 데이터베이스 매개변수 요구 사항: 원본 데이터베이스의 wal_level 매개변수는 증분 마이그레이션 중에 logical로 설정되어야 합니다. 원본 데이터베이스의 max_replication_slots 값은 증분 마이그레이션 중에 마이그레이션할 database 수보다 커야 합니다. 원본 데이터베이스의 max_wal_senders 값은 증분 마이그레이션 중에 마이그레이션할 database 수보다 커야 합니다. |
타깃 데이터베이스에 대한 요구 사항 | 전체 마이그레이션에서 대상 데이터베이스 버전은 원본 데이터베이스 버전보다 크거나 같아야 합니다. 증분 마이그레이션에서는 v10.x 이상의 버전 간 마이그레이션이 지원됩니다. 대상 데이터베이스 공간의 사용 가능한 크기는 원본 데이터베이스에서 마이그레이션할 데이터베이스/테이블 크기의 1.2배 이상이어야 합니다. (증분 데이터 마이그레이션은 update 및 delete 작업을 실행하여 데이터베이스의 일부 테이블이 데이터 조각을 생성하도록 합니다. 따라서 마이그레이션이 완료된 후 대상 데이터베이스의 테이블 크기가 원본 데이터베이스의 테이블 크기보다 클 수 있습니다. 이는 주로 원본 데이터베이스와 대상 데이터베이스의 autovcauum 트리거 조건이 다르기 때문입니다.) 대상 데이터베이스는 원본 데이터베이스와 동일한 이름을 가진 사용자 이름 및 테이블과 같은 마이그레이션 객체를 가질 수 없습니다. 증분 마이그레이션 중 대상 데이터베이스의 max_worker_processes 값은 max_logical_replication_workers 값보다 커야 합니다. |
작업 단계
1. (옵션) PostgreSQL 9.4, 9.5, 9.6을 ‘전체 + 증분 마이그레이션’의 원본 데이터베이스로 사용하는 경우 다음 지침을 참고하여 tencent_decoding 플러그인을 설치해야 합니다. 다른 시나리오의 경우 이 단계를 건너뛰십시오.
2. 원본 데이터베이스가 있는 서버의 시스템 아키텍처에 따라 해당 플러그인을 다운로드합니다.
시스템 아키텍처 x86_64 및 aarch64만 지원합니다.
플러그인 버전은 PostgreSQL 버전과 동일해야 합니다.
Glibc 버전은 다음 요구 사항을 충족해야 합니다. x86_64 시스템은 최소 2.17 - 323 버전이어야 하고, aarch64 시스템은 최소 2.17 - 260 버전이어야 합니다.
Linux 시스템에서 Glibc 버전 확인:
RHEL/CentOS: rpm -q glibc
다른 운영 체제(Debian/Ubuntu/SUSE 등)에서 Glibc 버전 확인:
ldd --version | grep -i libc
3. 인스턴스를 다시 시작하지 않고 다운로드한 tencent_decoding.so 파일을 Postgres 프로세스 디렉터리의 lib 폴더에 넣습니다.
4. DTS 콘솔에 로그인하고 왼쪽 사이드바에서 데이터 마이그레이션을 선택한 다음 마이그레이션 작업 생성을 클릭하여 마이그레이션 작업 만들기 페이지로 들어갑니다. 5. 마이그레이션 작업 생성 페이지에서 원본 및 타깃 인스턴스의 유형, 리전 및 사양을 선택하고 즉시 구매를 클릭합니다.
|
원본 인스턴스 유형 | 원본 데이터베이스 유형을 선택합니다. 구매 후 변경할 수 없습니다. 본문은 ‘PostgreSQL’을 선택합니다. |
원본 인스턴스 리전 | 원본 데이터베이스 리전을 선택합니다. 원본 데이터베이스가 자체 구축된 데이터베이스인 경우 가장 가까운 리전을 선택하십시오. |
타깃 인스턴스 유형 | 타깃 데이터베이스 유형을 선택합니다. 구매 후 변경할 수 없습니다. 본문은 ‘PostgreSQL’을 선택합니다. |
타깃 인스턴스 리전 | 타깃 데이터베이스 리전을 선택합니다. |
사양 | 비즈니스 상황에 따라 마이그레이션 링크의 사양을 선택합니다. |
6. 원본과 대상 데이터베이스 설정 페이지에서 작업 설정, 원본 데이터베이스 설정 및 대상 데이터베이스 설정을 완료하고, 원본 데이터베이스와 대상 데이터베이스의 연결성 테스트 통과 시 생성을 클릭합니다.
설명:
연결 테스트에 실패하면 수정 방법의 지침에 따라 문제를 해결하고 수정한 후 다시 시도하십시오. |
작업 설정 | 작업 이름 | 쉬운 작업 식별을 위해 의미 있는 이름을 설정합니다. |
| 실행 모드 | 즉시 실행: 작업 확인 통과 직후 작업이 시작됩니다. 예약 실행: 작업 실행 시간을 설정하면 작업이 자동으로 시작됩니다. |
| 태그 | 태그는 다양한 차원의 범주별로 리소스를 관리하는 데 사용됩니다. 기존 태그가 요구 사항을 충족하지 않는 경우 콘솔로 이동하여 추가로 생성하십시오. |
원본 데이터베이스 설정 | 원본 데이터베이스 유형 | 구매 시 선택한 원본 데이터베이스 유형으로, 변경할 수 없습니다. |
| 리전 | 구매 시 선택한 원본 데이터베이스 리전으로, 변경할 수 없습니다. |
| 액세스 유형 | 시나리오에 따라 유형을 선택하십시오. 이 시나리오에서는 ‘데이터베이스’를 예로 듭니다. 다양한 액세스 유형에 대한 준비 작업은 준비 작업 개요를 참고하십시오. 마이그레이션 효율성을 보장하기 위해 CVM 자체 구축 인스턴스 마이그레이션은 리전 간 마이그레이션을 지원하지 않습니다. 리전 간에 마이그레이션해야 하는 경우 공중망 액세스 방법을 선택합니다. 공중망: 원본 데이터베이스는 공용 IP를 통해 액세스할 수 있습니다. CVM에서 자체 구축: 원본 데이터베이스가 CVM 인스턴스에 배포됩니다. DC: 원본 데이터베이스는 DC를 통해 VPC와 상호 연결될 수 있습니다. VPN 액세스: 원본 데이터베이스는 VPN 연결을 통해 VPC와 상호 연결될 수 있습니다. 데이터베이스: 원본 데이터베이스는 TencentDB 데이터베이스입니다. CCN: 원본 데이터베이스는 CCN을 통해 VPC와 상호 연결될 수 있습니다. |
| 데이터베이스 인스턴스 | 원본 데이터베이스 PostgreSQL의 인스턴스 ID를 선택합니다. |
| 계정 | 특정 권한이 있어야 하는 원본 PostgreSQL 데이터베이스의 계정입니다. |
| 비밀번호 | 원본 PostgreSQL 데이터베이스의 비밀번호입니다. |
타깃 라이브러리 설정 | 타깃 데이터베이스 유형 | 구매 시 선택한 타깃 데이터베이스 유형으로, 변경할 수 없습니다. |
| 리전 | 구매 시 선택한 타깃 데이터베이스 리전으로, 변경할 수 없습니다. |
| 액세스 유형 | 시나리오에 따라 유형을 선택하십시오. 본문은 기본적으로 ‘데이터베이스’를 선택합니다. |
| 데이터베이스 인스턴스 | 타깃 데이터베이스의 인스턴스 ID를 선택합니다. |
| 계정 | 특정 권한이 있어야 하는 타깃 데이터베이스 계정입니다. |
| 비밀번호 | 타깃 데이터베이스의 암호입니다. |
7. 마이그레이션 옵션 설정 및 마이그레이션 객체 선택 페이지에서 마이그레이션 유형과 마이그레이션 객체를 설정하고 저장을 클릭합니다.
|
마이그레이션 유형 | 시나리오에 따라 유형을 선택하십시오. 구조적 마이그레이션: 원본 데이터베이스의 데이터베이스 및 테이블과 같은 구조적 데이터가 마이그레이션됩니다. 전체 마이그레이션: 전체 데이터베이스가 마이그레이션됩니다. 마이그레이션된 데이터는 작업이 시작될 때만 원본 데이터베이스의 기존 콘텐츠가 되지만 작업이 시작된 후 원본 데이터베이스에 기록된 증분 데이터는 포함되지 않습니다. 전체 + 증분 마이그레이션: 마이그레이션된 데이터에는 작업이 시작될 때 원본 데이터베이스의 기존 콘텐츠와 작업이 시작된 후 원본 데이터베이스에 기록된 증분 데이터가 포함됩니다. 마이그레이션 중에 원본 데이터베이스에 데이터 쓰기가 있고 논스톱 방식으로 원활하게 데이터를 마이그레이션하려면 이 옵션을 선택하십시오. |
객체 마이그레이션 | 전체 인스턴스: role 및 사용자의 메타데이터 정의를 포함하지만 postgres의 시스템 객체와 같은 시스템 데이터베이스는 제외하여 전체 데이터베이스 인스턴스를 마이그레이션합니다. 지정된 객체: 지정된 객체를 마이그레이션합니다. |
객체 지정 | 원본 데이터베이스 객체에서 마이그레이션할 객체를 선택하고 선택한 객체 상자로 이동합니다. |
8. 확인 작업 페이지에서 확인을 진행하고 확인 통과 후 작업 실행을 클릭합니다.
확인이 실패한 경우 확인 실패 해결 방법의 설명 대로 문제를 수정하고 확인 작업을 다시 시작합니다. 실패: 확인 항목 실패로 작업이 차단되었음을 나타냅니다. 문제를 수정하고 확인 작업을 다시 실행해야 합니다.
알람: 확인 항목이 요구 사항을 완전히 충족하지 못함을 나타내며, 작업을 계속할 수 있지만 비즈니스에 영향을 미칩니다. 알람을 무시할지 아니면 문제를 해결하고 계속할지 선택합니다.
9. 데이터 마이그레이션 작업 목록으로 돌아가면 작업이 준비 중 상태로 들어간 것을 볼 수 있습니다. 1 - 2분 후 데이터 마이그레이션 작업이 시작됩니다.
구조 마이그레이션 또는 전체 마이그레이션을 선택: 완료되면 작업이 자동 중지됩니다.
전체 + 증분 마이그레이션 선택: 전체 마이그레이션이 완료된 후 마이그레이션 작업은 자동으로 중지되지 않는 증분 데이터 동기화 단계로 자동 전환됩니다. 증분 데이터 동기화를 수동으로 중지하려면 완료를 클릭해야 합니다. 그런 다음 작업이 완료됨 상태로 들어갑니다. 이 시점에서 원본 및 대상 데이터베이스를 변경하지 마십시오. 백엔드는 자동으로 일부 객체를 원본과 정렬합니다.
적절한 시기에 증분 데이터 동기화 및 비즈니스 전환을 수동으로 완료합니다.
마이그레이션 작업이 증분 동기화 단계에 있고 지연 상태가 아닌지 확인합니다. 그렇다면 몇 분 동안 원본 데이터베이스에 데이터 쓰기를 중지하십시오.
타깃-원본 데이터베이스 데이터 간격이 0MB이고 타깃-원본 데이터베이스 시간 지연이 0초인 경우 증분 동기화를 수동으로 완료합니다.
10. (옵션) 작업 조회, 삭제 등 작업을 수행하려면 해당 작업을 클릭하고 작업 열에서 해당 작업을 선택합니다. 자세한 내용은 작업 관리를 참고하십시오. 11. 마이그레이션 작업 상태가 작업 성공이 되면 정식으로 컷오버 할 수 있습니다. 자세한 내용은 컷오버 설명을 참고하십시오.