6週目.データベースサービス
17659 ワード
[実習目標] EC 2を使用してWebサーバとDBサーバ を配備する. RDS配備データベース の開発/テストバージョンのRDSを使用して、2つの実践を行います. マルチAZフォールト Read Replicaを使用した分散型サービス
クラウドFormationスタックの作成-リンクをクリックして、デフォルト環境をテンプレートファイルに自動的に配置します. 4つのSubnet は、1の仮想マシンにあります.
構成:1つのWebサーバインスタンス+1つのDBサーバインスタンス
RDSの検索>データベースの作成
デフォルトでは、Pretty RDSはマルチAZを提供しません.そのためには、DBを「マルチAZ配信」に変更する必要があります.
Websrvでindex.phpを変更してWebsrvでAWS RDS 2 DB を使用するクエリー を変更します. RDS 2→操作→再起動→「フェイルオーバ再起動」→検証 バックアップサーバを使用するかどうかを確認します: 約2分20秒で障害が発生し、アクセスできなくなり、再アクセス は、他のAZのバックアップ を自動的に置き換えます.の繰り返しクエリでは、IPが に変更されたことがわかります.
RDS 2ジョブの作成→レプリカの読み取りに約10分かかる DBインスタンス識別子:swh-test 2-readonly AWSバージョン:アジア太平洋 マルチAZ配備:代替インスタンス を作成しないでください.
ReadReplia Endpoint検証とMySQL接続後検証
クラウドコンピューティング導入環境の使用
📌 WebSRVからDBSSVへのアクセス
構成:1つのWebサーバインスタンス+1つのDBサーバインスタンス
WebSrvインスタンスの接続
# IP확인 및 DBSrv ping 테스트
ip a
ping 10.1.2.10
# DBSrv 로 MySQL 접속 (계정 정보: root/qwe123)
mysql -h 10.1.2.10 -uroot -pqwe123
DBSSVインスタンスの接続
# IP확인
ip a
# MySQL 접속 (계정 정보: root/qwe123)
mysql -uroot -pqwe123
🔎 HTMLとPHP、MySQLの関係
1. 사용자는 DB에 접근하기 위해 HTML을 이용하게 된다. HTML파일에 태그 사용하여 입력한 정보가 서버의 PHP 파일에 전달된다.
2. 사용자가 입력한 값은 웹 서버(PHP)로 전달이 된다. MySQL과 다른 으용프로그램과 연계
3. PHP 스크립트는 MySQL에 데이터로 입력된다.
MariaDB MonitorでのデフォルトSQL文の使用(WebSrvインスタンス)
# 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';
📌 配備MySQL(RDS)
RDSの検索>データベースの作成
[最初のRDS]
1. 데이터베이스 생성방식 선택 - 표준생성
2. 엔진유형 - MySQL
3. 템플릿 - 프리티어
4. 설정
DB 인스턴스 식별자 - hyun-test1
마스터사용자 이름 - root
마스터 암호(암호확인) : qwe12345
5. DB 인스턴스 클래스 : 버스터블 클래스(t 클래스 포함) db.t2.micro
6. 스토리지 - 디폴트
7. 다중 AZ 배포 X(프리티어 버전이라 선택이 안됨)
8. 연결
VPC : DB-VPC1
퍼블릭액세스 - 아니요
VPC 보안 그룹 : ##-VPC1SG3-## 포함된것 선택 , 기본 default 는 제거
Database 접근을 위해 만든 DB port(3306) 전용의 정책이 들어가있음
가용 영역 : ap-northeast-2a
추가 구성 : 클릭
9. 추가구성
초기 데이터베이스 이름 : sample
DB 파라미터 그룹 : ##-mydbparametergroup-## 포함된것 선택
백업 보존 기간 : 0일(백업을 하지 않겠다라는 의미)
모니터링 - 활성화 X
유지 관리 기간 : 선택 기간 → 일요일 , 01 :00 , 0.5시간
지정하지 않으면 업무 중에 aws RDS가 재부팅이 되거나 혹은 업데이트를 받게될 수도 있음
[2番目のRDS]
1. 데이터베이스 생성방식 선택 - 표준생성
2. 엔진유형 - MySQL
3. 템플릿 - 개발/테스트
4. 설정
DB 인스턴스 식별자 - hyun
마스터사용자 이름 - root
마스터 암호(암호확인) : qwe12345
5. DB 인스턴스 클래스 : 버스터블 클래스(t 클래스 포함) db.t2.micro (이전 세대 클래스 포함 체크)
6. 스토리지 - 디폴트
7. 다중 AZ 배포 - 스토리지 - 디폴트다중 AZ 배포(DB를 복제해 사용하기 위해 사용함)
8. 연결
VPC : DB-VPC1
퍼블릭액세스 - 아니요
VPC 보안 그룹 : ##-VPC1SG3-## 포함된것 선택 , 기본 default 는 제거
Database 접근을 위해 만든 DB port(3306) 전용의 정책이 들어가있음
가용 영역 : ap-northeast-2a
추가 구성 : 클릭
9. 추가구성
초기 데이터베이스 이름 : sample
DB 파라미터 그룹 : ##-mydbparametergroup-## 포함된것 선택
백업 보존 기간 : 35일(백업을 하지 않겠다라는 의미)
모니터링 - 활성화 X
유지 관리 기간 : 선택 기간 → 일요일 , 01 :00 , 0.5시간
지정하지 않으면 업무 중에 aws RDS가 재부팅이 되거나 혹은 업데이트를 받게될 수도 있음
[WebSrvとRDSの接続]
# 변수 지정
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;
WebSrv 의 index.php 수정 후 WebSrv 에서 AWS RDS1 DB 사용
원래는 EC2로 배포한 DBsrv를 참조하고 있었지만, RDS로 바꾸는 것
WebSrv 의 Public IP로 접근하면 사용 DB가 rds로 바뀜
# 상태정보 및 데이터베이스 확인 - 다 바꾼 후 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 Multi-AZ
デフォルトでは、Pretty RDSはマルチAZを提供しません.そのためには、DBを「マルチAZ配信」に変更する必要があります.
[開発/テストRDSに適用]
# 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
別のコンソールウィンドウに繰り返しクエリーを配置し、# 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
再起動📌 RDS Read Replica
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
Reference
この問題について(6週目.データベースサービス), 我々は、より多くの情報をここで見つけました https://velog.io/@hyun0820/6주차.-데이터베이스-서비스-실습テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol