실습목표
WebSrv에서 퍼블릭 IP로 Xshell로 열고 - DBSrv의 MySQL 접근하기
# IP확인 및 DBSrv ping 테스트
ip a
ping 10.1.2.10
# DBSrv 로 MySQL 접속 (계정 정보: root/qwe123)
mysql -h 10.1.2.10 -uroot -pqwe123
1-1 (부록)DBSrv에서 MySQL 들어가는 법
# IP확인
ip a
# MySQL 접속 (계정 정보: root/qwe123)
mysql -uroot -pqwe123
;
꼭 넣어주기 # MariaDB monitor 접속
Welcome to the MariaDB monitor. Commands end with ; or \g.
...
# DB 서버의 상태 정보
MariaDB [(none)]> status;
# 데이터베이스(=스키마) 확인
SHOW DATABASES;
# employees 데이터베이스 선택 하기
USE employees;
MariaDB [(none)]> USE employees;
MariaDB [employees]>
# 테이블 확인
SHOW TABLES;
# 테이블 필드와 타입 등 정보 확인
DESC employees;
# employees 테이블 조회 하기
SELECT * FROM employees;
SELECT * FROM employees LIMIT 10;
SELECT * FROM employees LIMIT 100;
# 특정 열(컬럼=필드) 기준 오름/내림차순으로 정렬 조회 하기
# -- 공백이 있는 개체의 이름 사용 시는 백틱(backtick) `` 으로 묶어줘야 하나의 이름으로 인식함
SELECT * FROM employees ORDER BY `emp_no` DESC LIMIT 100;
SELECT * FROM employees ORDER BY `birth_date` ASC LIMIT 100;
# 특정 열(컬럼) 만 출력
SELECT first_name, last_name, gender FROM employees LIMIT 50;
# 특정 행(=로우=레코드)만 출력 - Mary 이름(first_name) , Baba 성(last_name)
SELECT * FROM employees WHERE first_name = 'Mary';
SELECT * FROM employees WHERE last_name = 'Baba';
RDS 검색 > 데이터베이스 생성 (첫번째 db 생성- 프리티어)
데이터베이스 생성방식 선택 - 표준생성
엔진유형 - MySQL
템플릿 - 프리티어
설정
swh-test1
DB 인스턴스 클래스 : 버스터블 클래스(t 클래스 포함) db.t2.micro
스토리지 - 디폴트
다중 AZ 배포
연결
추가 구성 : 클릭
swh-test1
# 변수 지정
RDS1=프리티어rds 엔드포인트
RDS2=개발/테스트버전RDS 엔드포인트
# 변수 지정 확인
echo $RDS1
echo $RDS2
# dig 질의 - 도메인 조회(subnet 주소 확인)
dig +short $RDS1
dig +short $RDS2
# mysql 접속 - exit로 나갈 수 있음
mysql -h $RDS1 -uroot -pqwe12345
mysql -h $RDS2 -uroot -pqwe12345
# 상태정보 및 데이터베이스 확인
status;
show databases;
# 상태정보 및 데이터베이스 확인 - 다 바꾼 후 ctrl+x > Y > enter
sudo su -
nano /var/www/html/index.php
## 아래 DB 주소와 암호를 변경
<?php
define('DB_SERVER', '자신의RDS1 엔드포인트 주소');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'qwe12345');
define('DB_DATABASE', 'sample');
?>
# RDS 확인하기
[root@WebSrv ~]# RDS2=swh-test2.ckm3nprg4gom.ap-northeast-2.rds.amazonaws.com
[root@WebSrv ~]# echo $RDS2
swh-test2.ckm3nprg4gom.ap-northeast-2.rds.amazonaws.com
[root@WebSrv ~]# dig +short $RDS2
10.1.4.233
# 상태정보 및 데이터베이스 확인 - 다 바꾼 후 ctrl+x > Y > enter
sudo su -
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 접속 후 데이터 확인 반복 → 아래 재부팅 시 동작 확인을 위함 (ctrl+c 로 탈출가능)
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
RDS2=gasidards2.cb79jlim4dyq.ap-northeast-2.rds.amazonaws.com
RDS2Read=gasidards2-readonly.cb79jlim4dyq.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에 바이너리 로그를 이용하여 복제를 구현
mysql -h $RDS2 -uroot -pqwe12345 -e "show master status;"
+----------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------------+----------+--------------+------------------+-------------------+
| mysql-bin-changelog.000010 | 156 | | | |
+----------------------------+----------+--------------+------------------+-------------------+
# 읽기 복제본 DB에서 정보 확인
mysql -h $RDS2Read -uroot -pqwe12345 -e "show slave status\G"
Master_Host: 172.23.1.176
Master_User: rdsrepladmin
Master_Log_File: mysql-bin-changelog.000010 ⇒ 마스터 DB의 바이너리 로그
Read_Master_Log_Pos: 156
Relay_Log_File: relaylog.000009
Relay_Log_Pos: 277
Relay_Master_Log_File: mysql-bin-changelog.000010 ⇒ 복제 동기화를 실행하는 바이너리 로그
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Exec_Master_Log_Pos: 156
RDS 삭제
최종 스냅샷 생성 여부( 체크 해제)
인스턴스 삭제 시 시스템 스냅샷 및 특정 시점으로 복구를 포함한 자동화된 백업을 더 이상 사용할 수 없다는 점을 인정합니다 ( 체크 )
CloudFormation 삭제