본문 바로가기
[AWS]/STUDY

[AWS] Data Link and Migration

by METAVERSE STORY 2022. 7. 20.
반응형
728x170

데이터베이스 링크(Database Link)란?

데이터베이스 링크는 클라이언트 또는 현재의 데이터베이스에서 네트워크상의 다른 데이터베이스에 접속하기 위한 접속 설정을 정의하는 오라클 객체이다.

DB Link를 설정을 하면 한 DB에서 다른 DB의 내용을 볼 수 있게 되는것인데,

쉽게 말하자면 'A'DB에서 'B'DB로 DB Link를 걸고자 한다면 우선 'A'DB의 TNSNames.ORA 파일에 'B' DB 접속 정보를 추가해준다.

물론 그 전에 두 DB간에 1521(기본 포트)가 열려 있어야 한다.

MySQL의 경우는 3306이 되겠다.

MYSQL에서는 FEDERATED를 사용한다.

MYSQL에서 물리적으로 같은 서버면, 조회 권한만 주어 alias를 붙여서 다른 db끼리 Join 및 조회를 할수가 있다.

메인이 되는 DB 서버에 원격으로 붙는 형식을 사용할 수 있게 하는게 FEDERATED 기능이다.

방법으로는 아래와 같다.

- DB1 : 원본 데이터 DB

- DB2 : 원격으로 원본 데이터를 가져올 DB

우선 DB2(원격) 에만 federated 기능을 키면 된다.(원본 DB에는 필요없음)

A. DB2에 root로 접속을 하여, 

SHOW ENGINES 명령으로 확인

-> FEDERATED 가 있으면 쉽게 사용

-> 없으면  install plugin federated soname 'ha_federated.so' 로 설치

B. 설치(또는 이미 설치 되어있으면) 후 DB2 의 my.cnf 수정

 -> [mysqld] 아래에 federated 라는 단어를 추가한다.

C. mysql 재시작 후, 다시 SHOW ENGINES 로 확인

 -> Support 컬럼만 'YES' 로 바뀌어 있으면 준비가 완료 된 것이다.

해당 기능을 사용 및 테스트 하는 방법은 아래와 같다.

DB1 에서 우선 테이블 생성(일반적인 create 문, 물론 이미 생성된 table을 사용해도 된다. 테스트를 위해 새로 create)

 

CREATE TABLE `db_test1` (
  `a1` varchar(10) DEFAULT NULL,
  `a2` varchar(10) DEFAULT NULL,
  `a3` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

DB2 에서 federated 테이블을 생성해야 한다.

CREATE TABLE `db_test1` (
  `a1` varchar(10) DEFAULT NULL,
  `a2` varchar(10) DEFAULT NULL,
  `a3` varchar(11) DEFAULT NULL
) ENGINE=FEDERATED DEFAULT CHARSET=utf8

CONNECTION='mysql://접속ID:패스워드@도메인(또는 IP):포트/datebase명(ex:DB1)/테이블명(ex:db_test1)';

여기서 주의할 점은,

1. 컬럼명을 똑같이 맞춰줘야 한다.

2. 원본 데이터 DB에 스키마가 바뀌면, FEDERATED 테이블을 DROP하고 다시 생성해야 한다.

 -> FEDERATED 테이블은 스키마 변경 불가하다. DROP하고 다시 CREATE해야 한다.

3. 패스워드에 @가 들어가면 안된다. 패스워드 변경 필요

AWS RDS Migration 관련하여 검색해보니

몇가지 서비스가 존재하는것을 확인했다.

 

우선은 AWS Direct Connect가 있다.

자체 데이터 센터와 AWS 데이터 센터 간의 네트워크 전송을 가속화하기 위해 Direct Connect 전용 물리적 연결을 한다.

Dedicated Host와 비슷한 느낌이라 가격이 상당히 나갈것으로 예상된다.

다음으로 온라인 데이터 전송 서비스중에, AWS DataSync가 있다.

 - DataSync를 사용하면 온프레미스의 FileSystem을 S3, EFS와 같은 서비스로 전송할 수 있다.

 - 원래 Windows FileSystem은 EFS에 연결할 수 없고 FSx를 사용해야하지만, DataSync를 통해서 Windows와 EFS간 연결을 구성할 수 있다.

 - S3 버킷에 FileSystem을 전송해서 마이그레이션 하거나 버전 관리를 통해서 백업할 수 있다.

 - NFS와 SMB 두 형식의 FileServer 모두 DataSync와 연결할 수 있다.

 - FileServer와 AWS Storage를 연결하는 DataSync Agent가 필요하다.

AWS DataSync는 온프레미스 스토리지와 Amazon S3, Amazon EFS(Amazon Elastic File System) 또는 Amazon FSx for Windows File Server 간의 데이터 이전을 쉽게 자동화시켜주는 데이터 전송 서비스이다.

DataSync는 자체 인스턴스 실행, 암호화 처리, 스크립트 관리, 네트워크 최적화 및 데이터 무결성 검증을 포함하여 마이그레이션 속도를 늦추거나 IT 운영에 부담을 줄 수 있는 데이터 전송과 관련된 많은 작업을 자동으로 처리한다.

 

온프레미스와 AWS간 데이터 전송의 예시이다.

AWS DataSync는 온프레미스와 AWS 스토리지 서비스 사이에서 데이터 이동을 자동화 및 가속화하는 안전한 온라인 서비스다. DataSync는 Network File System(NFS) 공유, Server Message Block(SMB) 공유, Hadoop 분산 파일 시스템(HDFS), 자체 관리형 객체 스토리지, AWS Snowcone, Amazon Simple Storage Service(S3) 버킷, Amazon Elastic File System(Amazon EFS) 파일 시스템, Amazon FSx for Windows File Server 파일 시스템, Amazon FSx for Lustre 파일 시스템 및 Amazon FSx OpenZFS 파일 시스템 및 Amazon FSx for NetApp ONTAP 파일 시스템 간에 데이터를 복사할 수 있다.

AWS DataSync는 애플리케이션 데이터를 쉽게 복제, 아카이브 또는 공유할 수 있도록 AWS 스토리지 서비스 사이에서 데이터를 전송하는 데에도 사용된다.

DataSync를 사용하기 위해서는 Agent를 구성해야 한다.

다음으로는 DMS 서비스이다.

DMS 서비스의 특징은 다음과 같다.

 - AWS에서 제공해 주는 RDB 마이그레이션 서비스

 - 설정 및 마이그레이션 작업이 간단

 - 마이그레이션에서 사용한 리소스만큼 비용 과금

 - 이기종 간의 데이터 이전도 가능

 - 스키마 변환 도구도 제공

 - 적은 부하로 지속적인 레플리케이션 가능

DMS는 총 4단계로 작업이 나뉘어 있다.

1. 복제 인스턴스 생성AWS DMS콘솔

복제 인스턴스는 원본과 대상 엔드포인트 간에 실제 데이터 마이그레이션을 수행합니다. 인스턴스는 원본 데이터베이스에서 대상 데이터페이스로 데이터를 마이그레이션할 수 있도록 스토리지와 프로세싱 성능이 충분한 필요합니다. 이 복제 인스턴스의 크기는 마이그레이션할 데이터의 양과 인스턴스에서 수행해야 하는 작업에 따라 달라집니다.

DMS 생성 페이지로 접근하여 복제 인스턴스를 생성한다.

2. 소스 및 대상 엔드포인트 지정

복제 인스턴스가 생성되는 동안 이전에 생성한 Amazon RDS 데이터베이스의 원본과 대상 데이터 스토어 엔드포인트를 지정할 수 있습니다. 각 엔드포인트를 별도로 생성합니다.

엔드포인트를 생성해서 Source Endpoint와 Target Endpoint를 생성한다.

Migration 작업을 생성하여 마이그레이션을 시작한다.

 

반응형
그리드형

'[AWS] > STUDY' 카테고리의 다른 글

[AWS] 리눅스 파일 시스템  (0) 2022.08.12
[AWS][Lex][Lambda] 1. Lex와 날씨 API  (0) 2022.08.01
[AWS] AWS CLI 구성하기  (0) 2022.08.01
[AWS][초급] Lambda 더하기 테스트  (0) 2022.07.26
[AWS] Serverless 환경  (0) 2022.07.08
[AWS] Scale Down  (0) 2022.07.06
[AWS]AMI, SnapShot 계정간 공유, 다른 Region으로 복사  (0) 2022.07.05
[AWS]Subnet이란 무엇일까  (0) 2022.07.05

댓글