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
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 |
댓글