3. RDS 배포 및 Web과 연동 실습 진행
RDS(MySQL) 배포 및 연동
1. RDS -> 데이터베이스 생성 클릭 -> 데이터베이스 생성 4분 정도 소요
- RDS DB1 생성
# 별도 언급이 없는 부분은 기본값 설정
생성 방식 : 표준 생성
엔진 옵션 : 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 DB2 생성
# 별도 언급이 없는 부분은 기본값 설정
생성 방식 : 표준 생성
엔진 옵션 : MySQL
템플릿 : 개발/테스트
DB 인스턴스 식별자 : minimun (현재 AWS 리전에서 AWS 계정이 소유하는 모든 DB 인스턴스에 대해 유일, 각자 편하게 설정)
마스터 사용자 이름 : root
마스터 암호(암호확인) : qwe12345
DB 인스턴스 클래스 : 버스터블 클래스(t 클래스 포함) db.t2.micro (이전 세대 클래스 포함 체크)
다중 AZ 배포 : 대기 인스턴스 생성
VPC : DB-VPC1
퍼블릭 액세스 가능 : 아니요
VPC 보안 그룹 : ##-VPC1SG3-## 포함된것 선택 , 기본 default 는 제거
추가 구성 : 클릭
- 초기 데이터베이스 이름 : sample
- DB 파라미터 그룹 : ##-mydbparametergroup-## 포함된것 선택
- 백업 보존 기간 : 35일
- Enhanced 모니터링 활성화 (Uncheck)
=> 생성 후 연결 & 보안 탭 메뉴에 엔드포인트(접속 주소) 메모
=> 생성 후 구성 탭 메뉴에 다중 AZ와 보조 영역 확인
2. WebSrv SSH 접속 후 RDS 확인
# 변수 지정
[ec2-user@WebSrv ~]$ RDS1=mym-dbtest1.cuzxdyerai8i.ap-northeast-2.rds.amazonaws.com
[ec2-user@WebSrv ~]$ RDS2=mym-dbtest2.cuzxdyerai8i.ap-northeast-2.rds.amazonaws.com
[ec2-user@WebSrv ~]$ echo $RDS1
mym-dbtest1.cuzxdyerai8i.ap-northeast-2.rds.amazonaws.com
[ec2-user@WebSrv ~]$ echo $RDS2
mym-dbtest2.cuzxdyerai8i.ap-northeast-2.rds.amazonaws.com
# dig 질의
[ec2-user@WebSrv ~]$ dig +short $RDS1
10.1.3.102
[ec2-user@WebSrv ~]$ dig +short $RDS2
10.1.4.211
# mysql 접속
[ec2-user@WebSrv ~]$ mysql -h $RDS1 -uroot -pqwe12345
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.23 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> status;
--------------
mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
Connection id: 16
Current database:
Current user: root@10.1.1.10
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MySQL
Server version: 8.0.23 Source distribution
Protocol version: 10
Connection: mym-dbtest1.cuzxdyerai8i.ap-northeast-2.rds.amazonaws.com via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 31 min 22 sec
Threads: 3 Questions: 1326 Slow queries: 0 Opens: 157 Flush tables: 3 Open tables: 76 Queries per second avg: 0.704
--------------
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sample |
| sys |
+--------------------+
5 rows in set (0.01 sec)
3. WebSrv 의 index.php 수정 후 WebSrv에서 AWS RDS1 DB 사용
# 상태정보 및 데이터베이스 확인
vim /var/www/html/index.php
# 아래 DB 주소와 암호를 변경
nano /var/www/html/index.php
<?php
define('DB_SERVER', 'mym-dbtest1.cuzxdyerai8i.ap-northeast-2.rds.amazonaws.com');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'qwe12345');
define('DB_DATABASE', 'sample');
?>
HTTP://WebEC2_PublicIP/ 접속 → 이후 이름,주소 추가
- 테이블 직접 생성 및 데이터(레코드)생성
RDS Multi-AZ 실습 진행(1번 RDS)
1. 백업(0일) 미사용 상태에서 '읽기 복제본 생성' 불가능 상태
2. DB수정 → '다중 AZ 배포' (대기 인스턴스 생성)클릭, 백업(35일) → 계속 → 즉시 적용 → DB 인스턴스 수정 클릭 ⇒ 17분 정도 시간 소요
RDS Multi-AZ 실습 진행(2번 RDS)
# 상태정보 및 데이터베이스 확인
vim /var/www/html/index.php
# 아래 2번 DB 주소와 암호를 변경
nano /var/www/html/index.php
<?php
define('DB_SERVER', 'mym-dbtest2.cuzxdyerai8i.ap-northeast-2.rds.amazonaws.com');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'qwe12345');
define('DB_DATABASE', 'sample');
?>
HTTP://WebEC2_PublicIP/ 접속 → 이후 이름,주소 추가
- WebSrv 에서 다음 두 명령어 실행 시키고 db 재부팅
# 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
# mysql 접속 후 데이터 확인 반복 → 아래 재부팅 시 동작 확인을 위함
while true; do mysql -h $RDS2 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"; date; sleep 1; done
+----+-------+------------+
| ID | NAME | ADDRESS |
+----+-------+------------+
| 1 | test2 | test data2 |
| 2 | test3 | test data3 |
+----+-------+------------+
Tue Jul 20 13:12:49 UTC 2021
+----+-------+------------+
| ID | NAME | ADDRESS |
+----+-------+------------+
| 1 | test2 | test data2 |
| 2 | test3 | test data3 |
+----+-------+------------+
Tue Jul 20 13:12:50 UTC 2021
# (옵션) dig 조회 → IP 변경 확인을 위함
while true; do dig +short $RDS2; date; sleep 1; done
Tue Jul 20 13:13:17 UTC 2021
10.1.4.211
Tue Jul 20 13:13:18 UTC 2021
10.1.4.211
Tue Jul 20 13:13:19 UTC 2021
10.1.4.211
Tue Jul 20 13:13:20 UTC 2021 <===== 10.1.3.0/24 subnet으로 변경된 것 확인!!!
10.1.3.208
Tue Jul 20 13:13:21 UTC 2021
10.1.3.208
결론 : endpoint 의 변경 없이 다른 subnet에 db가 백업 되어있다 를 확인
RDS Read Replica 실습 진행(2번 RDS)
- RDS2 -> 읽기 복제본 생성 => 10분정도 시간 소요
DB 인스턴스 식별자 : mym-dbtest2-readonly(현재 AWS 리전에서 AWS 계정이 소유하는 모든 DB 인스턴스에 대해 유일, 각자 편하게 설정)
AWS 리전 : Asia Pacific (Seoul)
다중 AZ 배포 : 대기 인스턴스를 생성하지 마십시오
RDS2=mym-dbtest2.cuzxdyerai8i.ap-northeast-2.rds.amazonaws.com
RDS2Read=mym-dbtest2-readonly.cuzxdyerai8i.ap-northeast-2.rds.amazonaws.com
# 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에 바이너리 로그를 이용하여 복제를 구현
[ec2-user@WebSrv ~]$ mysql -h $RDS2 -uroot -pqwe12345 -e "show master status;"
+----------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------------+----------+--------------+------------------+-------------------+
| mysql-bin-changelog.000034 | 156 | | | |
+----------------------------+----------+--------------+------------------+-------------------+
# 읽기 복제본 DB에서 정보 확인
[ec2-user@WebSrv ~]$ mysql -h $RDS2Read -uroot -pqwe12345 -e "show slave status\G"
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.23.3.31
Master_User: rdsrepladmin
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin-changelog.000034 => 마스터 DB의 바이너리 로그
Read_Master_Log_Pos: 156
Relay_Log_File: relaylog.000009
Relay_Log_Pos: 277
Relay_Master_Log_File: mysql-bin-changelog.000034 => 복제 동기화를 실행하는 바이너리 로그
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table: innodb_memcache.cache_policies,innodb_memcache.config_options,mysql.plugin,mysql.rds_configuration,mysql.rds_history,mysql.rds_monitor,mysql.rds_replication_status,mysql.rds_sysinfo
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 156
Relay_Log_Space: 714
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 614894498
Master_UUID: f8c11af2-e94d-11eb-b461-0a57f60b6f7e
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
Network_Namespace:
Database 삭제
'Infra > cloud' 카테고리의 다른 글
[AFOS] 7주차 네트워크 서비스(ELB) - 실습 : ALB (0) | 2021.07.27 |
---|---|
[AFOS] 7주차 네트워크 서비스 - 로드밸런스 (0) | 2021.07.27 |
[AFOS] 6주차 데이터베이스 서비스 (0) | 2021.07.19 |
[AFOS] 5주차 보안 서비스 - 실습 (0) | 2021.07.19 |
[AFOS] 5주차 보안 서비스 (0) | 2021.07.17 |