RDS
-> 데이터베이스
-> 데이터베이스 생성
클릭
RDS DB 1 생성
생성 방식 : **표준 생성**
엔진 옵션 : **MySQL**
템플릿 : **프리 티어**
DB 인스턴스 식별자 : ***beas1** (현재 AWS 리전에서 AWS 계정이 소유하는 모든 DB 인스턴스에 대해 유일, 각자 편하게 설정)*
마스터 사용자 이름 : **root**
마스터 암호(암호확인) : **qwe12345**
DB 인스턴스 클래스 : 버스터블 클래스(t 클래스 포함) **db.t2.micro**
VPC : **DB-VPC1**
퍼블릭 액세스 가능 : **아니요**
VPC 보안 그룹 : ##-**VPC1SG3**-## 포함된것 선택 , 기본 default 는 제거
가용 영역 : **ap-northeast-2a**
추가 구성 : **클릭**
- 초기 데이터베이스 이름 : **sample**
- DB 파라미터 그룹 : ****##-**mydbparametergroup**-## 포함된것 선택
- 백업 보존 기간 : 0일
- 유지 관리 기간 : 선택 기간 → 일요일 , 01 :00 , 0.5시간
프리티어에서는 가용성 및 내구성
은 막혀있네요
RDS DB 2(Muti-AZ) 생성(12분 정도 소요)
# 별로 언급이 없는 부분은 기본값 설정입니다!
생성 방식 : **표준 생성**
엔진 옵션 : **MySQL**
템플릿 : **개발/테스트**
DB 인스턴스 식별자 : ***beas2*** *(현재 AWS 리전에서 AWS 계정이 소유하는 모든 DB 인스턴스에 대해 유일, 각자 편하게 설정)*
마스터 사용자 이름 : **root**
마스터 암호(암호확인) : **qwe12345**
DB 인스턴스 클래스 : 버스터블 클래스(t 클래스 포함) **db.t2.micro** (이전 세대 클래스 포함 체크)
다중 AZ 배포 : **대기 인스턴스 생성**
VPC : **DB-VPC1**
퍼블릭 액세스 가능 : **아니요**
VPC 보안 그룹 : ##-**VPC1SG3**-## 포함된것 선택 , 기본 default 는 제거
추가 구성 : **클릭**
- 초기 데이터베이스 이름 : **sample**
- DB 파라미터 그룹 : ****##-**mydbparametergroup**-## 포함된것 선택
- 백업 보존 기간 : **35일**
- Enhanced 모니터링 활성화 (**Uncheck**)
개발/테스트에서는 가용성 및 내구성
이 열려 있네요
요금은 금방 삭제하면 얼마 안 드니 걱정 안 해도 됩니다
RDS DB1 엔드포인트를 확인해줍니다
다중 AZ는 아니요라고 적혀있고, 보조 영역은 없네요
RDS DB2 의 엔드포인트도 확인해줍니다
여기에는 다중 AZ와 보조 영역 2개 다 있네요
# 변수 지정
RDS1=gasidards1.cb79jlim4dyq.ap-northeast-2.rds.amazonaws.com
RDS2=gasidards2.cb79jlim4dyq.ap-northeast-2.rds.amazonaws.com
echo $RDS1
echo $RDS2
# dig 질의
dig +short $RDS1
dig +short $RDS2
# mysql 접속
mysql -h $RDS1 -uroot -pqwe12345
mysql -h $RDS2 -uroot -pqwe12345
# 상태정보 및 데이터베이스 확인
status;
show databases;
WebSrv 의 index.php 수정 후 WebSrv 에서 AWS RDS1 DB 사용
# 상태정보 및 데이터베이스 확인
nano /var/www/html/index.php
## 아래 DB 주소와 암호를 변경
<?php
define('DB_SERVER', '**자신의RDS1 엔드포인트 주소**');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '**qwe12345**');
define('DB_DATABASE', 'sample');
?>
이건 오류나서 모르겠다 이유를 찾고 게시물을 수정하겠습니다
# mysql 접속 후 데이터 확인
mysql -h $RDS1 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"
while true; do mysql -h $RDS1 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"; date; sleep 1; done
# mysql 접속
mysql -h $RDS1 -uroot -pqwe12345
# 스키마 생성
CREATE SCHEMA `shopdb`;
USE shopdb;
# 테이블 생성
CREATE TABLE `shopdb`.`memberTBL` (
`memberID` CHAR(8) NOT NULL,
`memberName` CHAR(5) NOT NULL,
`memberAddress` CHAR(20) NULL,
`age` INT NOT NULL,
PRIMARY KEY (`memberID`));
# 행(=데이터=레코드) 넣기
INSERT INTO memberTBL VALUES ('Gasida', '베아스', '인천 연수구 송도동', '30');
INSERT INTO memberTBL VALUES ('User4', '유나', '경기 성남시 분당구', '27');
# 조회
SELECT * FROM memberTBL;
백업 0일 미사용 상태에서 읽기 복제본 생성
가능을 확인해보지만 가능하지 않는다
작업 바로 왼쪽에 수정
을 누른다
가용성 및 내구성 에서 대기 인스턴스 생성
클릭
백업 보존 기간 35일
로 변경
하단에 계속
클릭
수정 예약에서 즉시 사용
클릭 -> 하단에 DB 인스턴스 수정
클릭
WebSrv 의 index.php 수정 후 WebSrv 에서 AWS RDS2 DB 사용
# 상태정보 및 데이터베이스 확인
cat /var/www/html/index.php
## 아래 DB 주소와 암호를 변경
nano /var/www/html/index.php
<?php
define('DB_SERVER', '자신의RDS2 엔드포인트 주소');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'qwe12345');
define('DB_DATABASE', 'sample');
?>
HTTP://WebEC2_PublicIP/ 접속 → 이후 이름,주소 추가
WebSrv 에서 동작
# mysql 접속 후 데이터 확인 반복 → 아래 재부팅 시 동작 확인을 위함
while true; do mysql -h $RDS2 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"; date; sleep 1; done
# (옵션) dig 조회 → IP 변경 확인을 위함
while true; do dig +short $RDS2; date; sleep 1; done
RDS -> 작업 -> 재부팅
클릭
장애 조치로 재부팅
클릭 -> 확인
클릭
작업 -> 읽기 전용 복제본 생성
클릭
DB 인스턴스 식별자 : ***bea2-readonly*** *(현재 AWS 리전에서 AWS 계정이 소유하는 모든 DB 인스턴스에 대해 유일, 각자 편하게 설정)*
AWS 리전 : **Asia Pacific (Seoul)**
다중 AZ 배포 : **대기 인스턴스를 생성하지 마십시오**
읽기 복제본에 엔드 포인트를 확인해 줍니다
RDS2=엔드 포인트
RDS2Read=엔드 포인트
# mysql 접속 후 데이터 확인
while true; do mysql -h $RDS2 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"; date; sleep 1; done
while true; do mysql -h $RDS2Read -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"; date; sleep 1; done
# 마스터 DB에서 정보 확인 : 마스터 DB에 바이너리 로그를 이용하여 복제를 구현
mysql -h $RDS2 -uroot -pqwe12345 -e "show master status;"
# 읽기 복제본 DB에서 정보 확인
mysql -h $RDS2Read -uroot -pqwe12345 -e "show slave status\G"
제가 사이트에 입력한 정보가 나오네요
참고 자료 : AFOS[2기] 노션 내용