Wisdom’s Cloud
[AWS] 12. Amazon RDS 본문
구분 | 내용 |
서비스명 | Amazon RDS(Relational Database Services) |
설명 | 주로 사용되는 6개의 데이터베이스 엔진 중에서 선택할 수 있는 아마존 관계형 데이터베이스 서비스 |
주요 특징 | - 관리 용이성: 인프라의 프로비저닝/DB 설치 및 유지 관리 불필요 - 뛰어난 확장성: 서비스 중단 없이 서버 및 스토리지 확장 가능 - 가용성 및 내구성: 안정성이 뛰어난 인프라 제공(멀티 AZ) - 빠른 속도: SSD 지원 스토리지 옵션 및 고성능 OLTP에 최적화된 옵션과 비용 효율적 범용 사례에서 옵션 선택 가능 - 보안: 데이터베이스와 네트워크에 대한 액세스를 손쉽게 제어 |
프리티어(Free Tier) | - MySQL, PostgreSQL, MariaDB, Oracle BYOL, SQL Server 지원 - RDS 단일 AZ db.t2.micro 인스턴스를 750시간 무료 사용 - 가입 후 12개월 이후에 종료됨 |
Amazon 클라우드 데이터베이스 서비스 선택 사항
- 직접 운영: 본인이 사용하기 원하는 데이터베이스를 Amazon EC2에 직접 설치하여 운영할 수 있다.
- AWS에서 제공하는 DB 서비스 이용: 관계형 데이터베이스 서비스인 Amazon RDS과 NoSQL 기반의 중단 없는 확장성을 제공하는 Amazon DynamoDB, 대용량 병렬 페타바이트급 데이터웨어 서비스를 제공할 수 있는 Amazon Redshift와 같은 다양한 데이터베이스 서비스를 이용하여 별도의 운영과 관리 없이 서비스의 용도 및 사용량에 따라 원하는 형태의 리소스를 선택할 수 있다.
RDS 주요 특징
- 유연한 인스턴스 및 스토리지 확장
- 손쉽게 사용 가능한 백업 및 복원 기능
- 멀티 AZ를 통한 고가용성 확보
- RDS 암호화 옵션을 통한 보완성 강화
- Database Migration 서비스
실습: MySQL용 DB 인스턴스 생성, 클라이언트를 통한 DB 연결 및 삭제하기
step 1 MySQL DB 인스턴스 만들기
step 2 SQL 클라이언트 다운로드 및 DB 연결하기
* MySQL Workbench에서는 데이터베이스에서 사용할 수 있는 다양한 스키마 객체가 제공된다.
이제 테이블 생성을 시작하고, 데이터를 삽입하고, 쿼리를 실행할 수 있다. *
step 3 DB 인스턴스 삭제
실습: 웹 서버에서 실행되는 PHP 애플리케이션에 MySQL 데이터베이스 연결하기
step 1 RDS 네트워크 및 보안 설정
- 서브넷 이름: Tutorial private 2
- VPC ID: vpc-014ee353003e38ff3 | tutorial-vpc(이전에 생성한 VPC)
- 가용 영역: ap-northeast-2c(이전에 선택한 가용 영역과 다른 가용 영역)
- IPv4 CIDR 블록: 10.0.2.0/24
- 보안 그룹 이름: tutorial-securitygroup
- 설명: Tutorial Security Group
- VPC: vpc-014ee353003e38ff3 | tutorial-vpc(이전에 생성한 VPC)
- 보안 그룹 이름: tutorial-db-securitygroup
- 설명: tutorial-db-securitygroup
- VPC: vpc-014ee353003e38ff3 | tutorial-vpc(이전에 생성한 VPC)
- 이름: tutorial-db-subnet-group
- 설명: tutorial-db-subnet-group
- VPC: vpc-014ee353003e38ff3 | tutorial-vpc(이전에 생성한 VPC)
step 2 RDS DB 인스턴스 생성하기
- DB 인스턴스 식별자: tutorial-db-Instance
- 마스터 사용자 이름: tutorial_user
- 마스터 암호: 비밀번호
step 3 PHP가 포함된 Apache 웹 서버 설치
* Amazon Linux 2 AMI에는 지금 실습에서 필요한 소프트웨어 패키지가 없으므로
오른쪽 메뉴에서 커뮤티니 AMI의 맨 아래에 위치한 Amazon Linux AMI 2018.03.0를 선택해야 한다!!! *
$ sudo yum install -y httpd24 php56 php56-mysqlnd
step 4 RDS DB 인스턴스에 Apache 웹 서버 연결
<?php include "../inc/dbinfo.inc"; ?>
<html>
<body>
<h1>Sample page</h1>
<?php
/* Connect to MySQL and select the database. */
$connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);
if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error();
$database = mysqli_select_db($connection, DB_DATABASE);
/* Ensure that the EMPLOYEES table exists. */
VerifyEmployeesTable($connection, DB_DATABASE);
/* If input fields are populated, add a row to the EMPLOYEES table. */
$employee_name = htmlentities($_POST['NAME']);
$employee_address = htmlentities($_POST['ADDRESS']);
if (strlen($employee_name) || strlen($employee_address)) {
AddEmployee($connection, $employee_name, $employee_address);
}
?>
<!-- Input form -->
<form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
<table border="0">
<tr>
<td>NAME</td>
<td>ADDRESS</td>
</tr>
<tr>
<td>
<input type="text" name="NAME" maxlength="45" size="30" />
</td>
<td>
<input type="text" name="ADDRESS" maxlength="90" size="60" />
</td>
<td>
<input type="submit" value="Add Data" />
</td>
</tr>
</table>
</form>
<!-- Display table data. -->
<table border="1" cellpadding="2" cellspacing="2">
<tr>
<td>ID</td>
<td>NAME</td>
<td>ADDRESS</td>
</tr>
<?php
$result = mysqli_query($connection, "SELECT * FROM EMPLOYEES");
while($query_data = mysqli_fetch_row($result)) {
echo "<tr>";
echo "<td>",$query_data[0], "</td>",
"<td>",$query_data[1], "</td>",
"<td>",$query_data[2], "</td>";
echo "</tr>";
}
?>
</table>
<!-- Clean up. -->
<?php
mysqli_free_result($result);
mysqli_close($connection);
?>
</body>
</html>
<?php
/* Add an employee to the table. */
function AddEmployee($connection, $name, $address) {
$n = mysqli_real_escape_string($connection, $name);
$a = mysqli_real_escape_string($connection, $address);
$query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
if(!mysqli_query($connection, $query)) echo("<p>Error adding employee data.</p>"); }
/* Check whether the table exists and, if not, create it. */
function VerifyEmployeesTable($connection, $dbName) {
if(!TableExists("EMPLOYEES", $connection, $dbName))
{
$query = "CREATE TABLE EMPLOYEES (
ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(45),
ADDRESS VARCHAR(90) )";
if(!mysqli_query($connection, $query))echo("<p>Error creating table.</p>");
}
}
/* Check for the existence of a table. */
function TableExists($tableName, $connection, $dbName) {
$t = mysqli_real_escape_string($connection, $tableName);
$d = mysqli_real_escape_string($connection, $dbName);
$checktable = mysqli_query($connection,
"SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'");
if(mysqli_num_rows($checktable) > 0) return true;
return false;
}
?>
'AWS > Beginner' 카테고리의 다른 글
[AWS] 14. Amazon Route 53 (0) | 2021.02.14 |
---|---|
[AWS] 13. 클라우드 용어 정리(5) (0) | 2021.02.04 |
[AWS] 11. 클라우드 용어 정리(4) (0) | 2021.01.26 |
[AWS] 10. Amazon VPC (0) | 2021.01.20 |
[AWS] 9. 클라우드 용어 정리(3) (0) | 2021.01.20 |