본문 바로가기
교육

[67일 차] 21.10.28 : DevOps 8

by ballena 2021. 10. 28.

AWS RDS


1교시

 

 

어제 하다 말았던 실습 재개.

 

EC2 인스턴스를 온 프레미스 DB라고 가정하고, RDS로 Migration

수정된 YAML 파일 설명이 있었다.

스택 파일을 생성하면 RDS DB, 인스턴스, AutoScaling 시작 구성/그룹, 로드 밸런서가 생성된다.

구성 결과

 

엔드포인트라는 단어가 자주 나오는데 정확히 알고 가자.

-> 송신 또는 수신하는 지점. 이 지점에서 데이터를 받고 해당 서비스로 전달해준다.

-> 장비를 식별해서 통신할 수 있는 정보값

 


2교시

 

 

Windows 터미널에서

aws rds describe-db-instances 실행

AWS에 RDS로 구성된 DB 인스턴스 정보 출력

출력된 정보 중 엔드포인트 부분

인스턴스 하나로 접속

-> service httpd status로 웹 서비스 상태 확인

-> /var/www/html에 wordpress 디렉터리가 있는 것을 확인

->  mysql -u[계정명] --host [엔드포인트 주소] -P [포트번호] -p[비밀번호]

 

db.m3.medium 비용은 월별 $65.88

SSD 50GB 비용은 $5.75

DB 스냅숏용 추가 스토리지(300GB) 비용은 $28.50

(버전 변화에 따라 변동이 있을 수 있다)

 

 

1. RDS로 데이터 가져오기(이주)

 

1.1. 백업 DB 파일을 이용

DB 백업하기

-> mysqldump -u root -p --all-databases > dump.sql

-> mysqldump -u root -p [DB명] > dump.sql

-> mysqldump -u root -p -h [원격지 DB 주소] [DB명] > dump.sql


3교시

 

 

복구를 위해 만들어놓은 파일을 받는다(S3에서 받든, 파일을 다운로드하든)

 

받은 파일을

-> mysql -u [사용자명] -h [RDS 엔드포인트] -p < [백업파일명].sql

 

aws cloudformation describe-stacks --stack-name [스택명] --query Stacks[0].Outputs[0].OutPutValue --output text

-> CloudFormation 스택의 출력값 중 첫 라인의 첫 값을 출력

 

 

1.2. DMS를 사용

https://myinfrabox.tistory.com/104

 

[AWS][DMS] Data Migration Service 사용방법

■ Database Migration Service 축약어로 DMS라 불립니다. 데이터 베이스 데이터를 실시간으로 복제해주는 솔루션으로서 흔히 CDC(Change Data Capture)라고도 합니다. 소스라 불리는 데이터베이스 테이블에서

myinfrabox.tistory.com

DMS를 사용한 DB Migration 참고

 

Source DB를 EC2 인스턴스에 구축한 DB로 대체하고, Target DB를 RDS로 하는 것.

 

일단 EC2 인스턴스를 만들고, Mysql과 DB를 구축한 뒤 sql 파일을 추출해놓는다.


4교시

 

 

EC2에 MySQL 8.0 설치 : 그냥 설치하면 5.x 버전이 설치된다.

yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

yum install mysql-community-server

systemctl enable --now mysqld

vim /etc/my.cnf의 [mysqld] 섹션 하단에

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

skip-character-set-client-handshake

작성 후 mysqld 재시작

 

root의 임시 패스워드 확인

-> grep 'temporary password' /var/log/mysqld.log

 

mysql_secure_installation -p'임시 패스워드'

-> 추가 설정 진행

끝나면 접속 후에 사용자 생성

-> CREATE USER '사용자명'@'%' IDENTIFIED BY '비밀번호';

권한 설정

-> GRANT ALL PRIVILEGES ON *.* TO '사용자명'@'%';

-> FLUSH PRIVILEGES;

원격 접속 시 에러가 발생하지 않으려면 FLUSH 전에

-> ALTER USER '사용자명'@'%' IDENTIFIED WITH mysql_native_password by '비밀번호';

 

이제 다른 인스턴스에서 원격 접속 확인

-> mysql -h [대상 DB의 IP 주소] -u[사용자명] -p[비밀번호]

-> 접속해서 DB 조회 확인

 

 

원격 접속을 확인했으면 이제 RDS 설정

RDS > 데이터베이스 생성 > 엔진 유형(MySQL), 버전은 웬만하면 동일하거나 비슷하게 맞추기, 템플릿은 프로덕션, 설정(식별자 이름이나 마스터 이름/비밀번호 작성), DB 인스턴스 클래스는 대충 db.t3.micro, 스토리지는 기본값, 대기 인스턴스 생성하지 않음, 연결 설정(VPC, 서브넷, 보안 그룹 지정. 가용 영역은 지정하지 않아야 에러가 나지 않는다), 데이터베이스 인증은 암호 인증(기본값) > 생성


5~7교시

 

 

 

소스 엔드포인트로 MySQL을 설치한 인스턴스의 공인 IP 주소를 복사해 놓는다

RDS의 엔드포인트도 복사해 놓는다.

 

서비스 탭에서 마이그레이션 및 전송 > Database Migration Service(DMS)로 들어간다.

서브넷 그룹 > 이름/설명 작성, VPC와 서브넷 선택(퍼블릭 서브넷)

 

복제 인스턴스 > 대충 작성하되 VPC는 RDS와 같은 것 선택, 보안 그룹은 DB 열려있는 보안 그룹 선택, 다중 AZ는 단일 AZ > 생성

 

엔드포인트(소스 DB의 엔드포인트) > 소스 엔드포인트 > 식별자와 이름 작성, 소스 엔진은 MySQL, 수동으로 액세스 정보 제공 체크 > 서버 이름에는 소스 DB의 IP 주소, 포트는 3306, 사용자 이름과 암호에는 DB에서 만들었던 사용자 정보 입력 > 하단에서 VPC 선택 후 테스트해서 Successful 뜨면 생성

 

엔드포인트 하나 더 생성(RDS의 엔드포인트) > 대상 엔드포인트 체크, RDS DB 인스턴스 선택 체크하고 RDS 인스턴스 선택 > 수동으로 액세스 정보 제공(사용자 정보는 RDS 정보) > 테스트 후 생성

 

데이터베이스 마이그레이션 태스크 > 이름, 식별자 작성하고 복제 인스턴스 선택, 소스와 대상 DB 엔드포인트 선택, 마이그레이션 유형은 기본값 > 태스크 설정은 기본값 > 테이블 매핑에 새 선택 규칙 추가(스키마 입력, sqlDB, userTBL, 포함)

where 스키마 이름 is like '%' and 테이블 이름 is like 'jwk%', include

 

(실습에서는 기본 VPC를 사용했다)

 

이제 배스천 호스트용으로 만든 인스턴스에 접속, mysql 설치

mysql -u[RDS 사용자명] -h [RDS 엔드포인트] -p[RDS 비밀번호]

실행해서 접속하면 RDS에 소스 DB의 데이터가 있다.


8교시

 

 

  • DB 스냅숏 생성 및 복원하기

RDS는 Managed 서비스다. 스냅숏을 사용해서 장애가 발생된 데이터를 복원할 수 있다.

 

- 자동 스냅숏 생성

- 스냅샷 기반으로 새로운 DB 인스턴스를 시작해서 스냅샷 복원

- 재해 복구 또는 재배치를 위해 다른 리전에 스냅샷 복사

 

RDS의 스냅샷 탭에 가보면 아까 실습한 내용의 스냅숏이 자동으로 만들어져 있다.

스냅샷 생성 > DB 인스턴스 선택 > 이름 작성 > 생성

사용 가능이 뜨면 끝. 이건 수동 스냅숏.

 

RDS 인스턴스를 수정해서 자동 스냅숏 시간을 조절할 수도 있다.

 

RDS로 스냅숏을 만들고, 이 스냅숏이 이 RDS에 적용할 수는 없다.

스냅숏으로 새로운 RDS를 만들어 복구하는 것

 

스냅숏 체크 > 작업 > 스냅샷 복원

-> 새로운 RDS 인스턴스가 생긴다. 다시 접속해보면 동일한 것을 알 수 있다.


1교시(09:45~09:55) : 엔드포인트란?

오전 내용은 전체적으로 다시 들을 만하다.

'교육' 카테고리의 다른 글

[69일 차] 21.11.01 : DevOps 10  (0) 2021.11.01
[68일 차] 21.10.29 : DevOps 9  (0) 2021.10.29
[66일 차] 21.10.27 : DevOps 7  (0) 2021.10.27
[65일 차] 21.10.26 : DevOps 6  (0) 2021.10.26
[64일 차] 21.10.25 : DevOps 5  (0) 2021.10.25

댓글