생계/AWS2024. 10. 23. 17:25

AWS 프리티어로 postgresql RDS 인스턴스 생성하기 

1. 엔진

 

엔진버전은 암거나 해도 되는데 나는 15.6 -R3 을 선택했다.

 

2. 설정 

DB 인스턴스 식별자는 pgdb , 마스터 계정은 pgdba 로 설정했다.

 

3. 연결

 EC2 로 붙지 않고 바로 접속할거라 퍼블릭액세스 '예' 를 선택한다. 

 퍼블릭이면 누구나 들어올수 있기에 well-known port 가 아닌 나만의 포트로 수정해준다. 

 

보안그룹의 인바운드 규칙도 편집해준다. 

 

4. 원격접속하기 

  엔드포인트를 확인하고 디비버에서 접속해보자 

 잘된다. 

반응형
Posted by 돌고래트레이너
생계/AWS2024. 10. 18. 14:51

Blue 와 Green 의 테이블 구조가 다른 상태에서 복제가 정상적으로 진행이 되는지 테스트 해보자 

1. mysql rds 생성 

 mysql rds 인스턴스 생성은 이전에 작성한 포스팅을 참조하자 

https://riorio.tistory.com/606

 

[무과금] 아마존 AWS 프리티어 mysql RDS 생성

무과금으로 AWS RDS mysql 생성하기본 포스팅의 목적은 무과금으로 AWS RDS db인스턴스를 생성함에 있다. 실제 DB를 테스트 용도로 사용하려면 세부 옵션들의 변경이 필요함을 숙지하자.  - 프리티어

riorio.tistory.com

 

생성이 완료 되면 테스트 DB 를 생성하고 테스트 테이블을 하나 생성하자 

CREATE DATABASE TEST;

USE TEST

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
    email VARCHAR(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin,
    age varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin,
    address text collate utf8mb4_general_ci,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin;

-- sample data 입력 

INSERT INTO users (username, email, age, address) VALUES ('john_doe', 'john@example.com', '30', 'seoul-south korea');

 

2. 블루그린 - 그린 인스턴스 추가 

그린 인스턴스를 생성한다. 그린 인스턴스 전용 파라미터 그룹을 새로 만들어서 설정해준다. 

그린 전용 파라미터 그룹에는 아래 두가지 파라미터가 수정이 되었다. 

read_only=0 
slave_type_conversions=ALL_NON_LOSSY

 

버튼을 누르면 그린 인스턴스가 생성작업이 시작된다.

생성이 완료되면 엔드포인트 정보로 접속하자. 

 

3. 테스트 

 테이블 구조를 다르게 유지하기 위해 그린에만 DDL 을 실행한다.

 insert 는 blue 에서 실행하고 green 에서 복제가 되는지 조회해보자

-- [G] 1. char set
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- [B] 1. char set
INSERT INTO users (username, email, age, address) VALUES ('fastlookup', 'fast@example.com','1','L.A santa monica beach');


-- [G] 2. col order
ALTER TABLE users MODIFY COLUMN email VARCHAR(100) AFTER age;
-- [B] 2. col order
INSERT INTO users (username, email, age, address) VALUES ('émilie', 'émilie@example.com','24','jeju-island');


-- [G] 3. col type varchar -> int 
ALTER TABLE users MODIFY COLUMN age int;
-- [B] 3. col type varchar -> int
INSERT INTO users (username, email, age) VALUES ('jane_smith', 'jane@example.com', 25);


-- [G] 3. col type  text -> varchar
ALTER TABLE users MODIFY COLUMN address VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- [B] 4. col type text -> varchar
INSERT INTO users (username, email, age, address) VALUES ('no_index', 'no_index@example.com','98','new-york,new-york');

블루-그린 테이블 구조가 달라도 데이터는 정상적으로 복제가 되었다. 

작업이 완료되었고, 복제가 완료되었으면 staging 을 prod 로 바꾸는 switch over 를 하자

 

전환이 완료되었다. 그린은 신규블루로 바뀌었고 엔드포인트도 기존 블루의 엔드포인트로 바뀌었다.

기존블루의 인스턴스 이름에는 "old" 가 붙게 된다. 

 사용자 입장에서는 잠깐의 순단이 발생하고 운영반영이 되었다. 

 

* 스위치오버 전후 유의점 

- 전환 전 그린 파라미터의 원복 : read_only,  slave_type_conversions ( 재부팅 필요) 

- 그린의 데이터 검증, sql 플랜 확인 

- 전환 작업은 DB연결 수가 적은 시점에 해야 원활하게 작업가능

    (리소스사용의 최소화, 빠른 전환, 데이터 불일치, 충돌 리스크 감소) 

반응형
Posted by 돌고래트레이너
생계/AWS2024. 10. 14. 01:02

AWS DMS 로 데이터를 옮기는 테스트를 해보자

1. Replication Instance 생성

 - subnet group 생성

 

- 복제 인스턴스 생성 

RI 가 속할 vpc 를 선택하고 위에 만들어둔 서브넷그룹을 선택한다. 

 

2. 데이터 마이그레이션 태스크 생성

 - 엔드포인트 생성

소스, 타겟 엔드포인트를 생성하고 연결테스트까지 해본다 

대상RDS 의 보안그룹의 인바운드 규칙에 DMS RI 의 주소를 추가해준다. 

연결테스트가 성공이 되면 테스크를 생성하자 

 

 - 태스크 생성

 

태스크가 생성되면 자동으로 데이터가 복제된다. 

## 테스트 스크립트 

create database dmstest;

use dmstest;

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    email VARCHAR(100),
    hire_date DATE,
    department VARCHAR(50),
    salary DECIMAL(10, 2)
);
  
  INSERT INTO employees (first_name, last_name, email, hire_date, department, salary) VALUES
('John', 'Doe', 'john.doe@example.com', '2020-01-15', 'IT', 75000.00),
('Jane', 'Smith', 'jane.smith@example.com', '2019-05-22', 'HR', 65000.00),
('Michael', 'Johnson', 'michael.johnson@example.com', '2021-03-10', 'Marketing', 70000.00),
('Emily', 'Brown', 'emily.brown@example.com', '2018-11-30', 'Finance', 80000.00),
('David', 'Lee', 'david.lee@example.com', '2022-02-01', 'IT', 72000.00),
('Sarah', 'Wilson', 'sarah.wilson@example.com', '2020-09-18', 'Sales', 68000.00),
('Robert', 'Taylor', 'robert.taylor@example.com', '2019-07-05', 'Marketing', 71000.00),
('Lisa', 'Anderson', 'lisa.anderson@example.com', '2021-11-12', 'HR', 67000.00),
('William', 'Martinez', 'williahttp://m.martinez@example.com', '2018-04-20', 'Finance', 82000.00),
('Jennifer', 'Garcia', 'jennifer.garcia@example.com', '2022-01-03', 'Sales', 69000.00);

select * from employees;

 

정상적으로 데이터가 복제되었다.

반응형
Posted by 돌고래트레이너
생계/AWS2024. 5. 9. 14:39

스태츠팩 리포트를 생성하고, 이를 로컬에 다운받는 방법을 알아보자.

1. 스태츠팩 리포트 생성 

select snap_id, snap_time
  from stats$snapshot
 where snap_time > trunc(sysdate) -6
order by 1
;

begin rdsadmin.rds_run_spreport('start snapshot number', 'end snapshot number');
end;

2. AWS 콘솔에서 다운받기

- 콘솔에 로긴후  "로그 및 이벤트" 탭

아래 로그쪽에 'spreport' 를 입력..

이름이 일치하는 파일이 나오면 클릭하여 오른쪽 다운로드 버튼 클릭

* 보안 등의 이유로 다운이 되지 않는 다면 아래 유틸로 툴에서 확인가능하다. 

select text
  from table(rdsadmin.rds_file_util.read_text_file('DIR_NAME','FILE_NAME'))
;
  
 

반응형
Posted by 돌고래트레이너
생계/AWS2024. 3. 3. 12:48

아마존 AWS 프리티어 계정으로 EC2 생성하기
EC2 는 Elastic Compute Cloud 의 약자이며, RDS 는 DBaas 로 DB만 서비스로 제공해주는데 EC2 는
OS만 깔린 서버를 제공해준다. 
 

사진출처 :  https://www.whatap.io/ko/blog/9/

 
정확하게는 저장된 AMI (amazon machine image)  이미지를 사용하여 서버를 제공해주기에 매우 빠른시간에(수초) 서버 사용이 가능해진다. 
 

1. AWS 프리티어 계정에 로긴

프리티어 계정으로 로긴하자
서비스옆에 네모박스 클릭해서 자주가는 서비스를 별표 클릭하여 즐겨찾기 해놓자

 

2. EC2 인스턴스 시작 

상단의 EC2 를 클릭한 후 '인스턴스 시작' 을 클릭 

 
AWS 에서는 생성된 가상머신 하나 하나를 인스턴스라고 부르는데, EC2 인스턴스를 생성하자.
이름은 적당히 하나 정해서 만들자. 
이미 저장된 AMI 로 인스턴스를 생성할건데 나는 우분투 를 선택했다. 

 
인스턴스 유형은 디폴트를 선택했다. 

"새 키 페어 생성" 을 눌러 새로 키 페어를 생성한다.
팝업창에서 이름만 새로 지정해주고 생성한다.

 네트웍설정은 vpc 랑 서브넷은 기존에 있는거 잡아주고 퍼블릭 ip 만 활성화로 설정하자

소스유형은 내 ip를 알면 내IP 로 잡는게 좋다. 
 
스토리지는 프리티어는 최대 30까지 사용가능하다. 

 
인스턴스 시작을 눌러 ec2인스턴스를 시작하자.

 
3. EC2 에 연결하기 
AMI 로 인스턴스를 시작하는 것은 순식간이다. 
이제 생성된 인스턴스에 연결하자. 

 
 - EC2 instance connect 

콘솔에서 바로 연결하는 방법도 있다. 우측 하단의 연결 버튼을 클릭하자.

정상적으로 접속이 된 화면이다. 
 
- SSH 클라이언트
SSH 클라이언트로 연결하자. 

아까 키페어를 생성한게 있는데 그걸로 접속을 할것이다.
MobaXterm 이라는 툴로 ec2 에 연결하자. 없으면 설치하자. 무료다 

 
아까 생성한 키페어를 터미널 폴더에 카피한다.  

콘솔에 나온 명령어 ssh -i "ec2-xxxx" 카피해서 실행하면 접속이 된다. 

반응형
Posted by 돌고래트레이너
생계/AWS2024. 2. 17. 18:09

무과금으로 AWS RDS mysql 생성하기

본 포스팅의 목적은 무과금으로 AWS RDS db인스턴스를 생성함에 있다. 

실제 DB를 테스트 용도로 사용하려면 세부 옵션들의 변경이 필요함을 숙지하자. 

 

- 프리티어 가입

- RDS 생성

로그인 후 '서비스 옆 네모박스' -> 데이터베이스 -> RDS 클릭  

 

* RDS 옆에 별표시를 클릭해서 즐겨찾기 등록을 하자

 '데이터베이스 생성' 버튼을 누르자

아직 생성된 인스턴스가 없어서 0 개로 표시된다. 

 

표준생성 선택후  DBMS 는 mysql 로 선택을 하자 

 

엔진버전은 뭘 해도 상관없지만 나는 8.0.33 을 선택했다. 

샘플템플릿은 '프리티어'를 선택했다. 

 

DB 인스턴스 식별자를 적어준다. 

master 사용자 이름은 dbadm 으로 넣어줬다. root 를 사용하던 편한대로 넣어준다. 

 

프리티어에서 버스터블 클래스 만 선택이 가능하다. 

디폴트인 db.t3.micro 를 선택했다.  

과금이 무서우니까 스토리지 자동조정은 꺼놓자. 

아마존은 무서운 놈들이다. 

 

연결설정은 로컬pc에서 붙을수 있게 퍼블릭액세스에 '예' 를 선택한다.

 

 

 

데이터베이스를 생성 하자. 

추가 기능에 대한 팝업창이 뜬다. 

ElastiCache , RDS 프록시를 사용할것을 추천해준다. 

지금은 필요가 없으니 '닫기' 버튼을 누른다. 

화면으로 돌아오면 상태가 '생성중' -> '백업중' -> '사용가능'  으로 최종 완료된다. 

 

 

- client tool 로 접속하기 

위의 화면에서 db식별자를 클릭하면 아래 화면으로 이동한다. 

엔드포인트와 포트정보를 확인한다. 

 

 

반응형
Posted by 돌고래트레이너
생계/AWS2023. 11. 21. 15:07

 

 

인스턴스 유형 명명 규칙

Amazon EC2는 요구 사항에 가장 적합한 유형을 선택할 수 있도록 다양한 인스턴스 유형을 제공합니다. 
인스턴스 유형 이름은 패밀리, 세대, 프로세서 패밀리, 추가 기능 및 크기를 기준으로 지정됩니다. 
인스턴스 유형 이름의 첫 번째 자리는 인스턴스 패밀리를 나타냅니다(예: c). 
두 번째 자리는 인스턴스 세대를 나타냅니다(예: 7). 예를 들어 세 번째 위치는 프로세서 패밀리를 나타냅니다(예: g). 
마침표 앞의 나머지 문자는 인스턴스 스토어 볼륨과 같은 추가 기능을 나타냅니다. 마침표(.) 뒤는 인스턴스 크기(예: small 또는 4xlarge, 베어 메탈의 경우 metal)입니다.




# 인스턴스 패밀리
C – 컴퓨팅 최적화
D - 고밀도 스토리지
F - FPGA
G - 그래픽 집약적
Hpc – 고성능 컴퓨팅
I – 스토리지 최적화
Inf – AWS Inferentia
M – 범용
Mac – macOS
P – GPU 가속
R – 메모리 최적화
T – 버스트 가능한 성능
Trn – AWS Trainium
U – 고용량 메모리
VT - 비디오 트랜스코딩
X – 메모리 집약적

# 프로세서 패밀리
a - AMD 프로세서
g – AWS Graviton 프로세서
i - 인텔 프로세서

# 추가 기능
d – 인스턴스 스토어 볼륨
n - 네트워크 및 EBS 최적화
e - 추가 스토리지 또는 메모리
z - 고성능
flex – Flex 인스턴스

 

 

참조 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/instance-types.html#instance-type-names

 

Amazon EC2 인스턴스 유형 - Amazon Elastic Compute Cloud

Amazon EC2 인스턴스 유형 인스턴스를 시작할 때 지정하는 인스턴스 유형에 따라 인스턴스에 사용되는 호스트 컴퓨터의 하드웨어가 결정됩니다. 각 인스턴스 유형은 서로 다른 컴퓨팅, 메모리, 스

docs.aws.amazon.com

 

AWS instance class 에 따른 제약 사항 (r7g) 

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Performance.html 기반 편집

반응형
Posted by 돌고래트레이너
생계/AWS2023. 11. 6. 11:18

 

EC2 : Elastic Compute Cloud. Iaas 로 AWS에서 제공하는 서버형태

RDS : Relational Database Service. DBaas 로 AWS에서 제공하는 DB서비스  

EBS : (Elastic Block Store) : EC2용으로 제공하는 확장 가능한 고성능 블록 스토리지 서비스. 
AMI : (Amazon Machine Image)  EC2에 연결된 모든 EBS volume 의 동시 백업
Snapshot : 선택한 EBS volume 만을 백업 

프로비저닝 : 사용자 요구에 맞게 시스템 자원을 할당, 배치, 배포 해두었다가 필요시 즉시 사용가능 상태로 미리 준비해두는것 
S3 : (simple storage service)
AWS IAM : aws Identity and Access Management)
WAP : (wireless application protocol)
WAF : (web application firewall) 

ELB : elastic load balancer
 

베어메탈 : 가상화 기술을 사용하지 않고 물리적으로 분리된 CPU, 메모리 등의 컴퓨팅 자원을 단독으로 할당 받아 사용할 수 있는 고성능 클라우드 컴퓨팅 서비스

Elastic 이란 말이 자주 나오는데 찰랑이는 머릿결로 유명한 카피문구 "엘라스틴 했어요" 라는 말처럼

탄력있고 유연하게 서비스를 제공한다는 것이 클라우드 컴퓨팅의 가장 큰 레거시 환경과의 차이점이다. 

blue-green-deployment (블루그린 배포) : AWS에서 제공하는 무중단 배포 기법 (blue : product / green : staging)

cut-over : 신규 시스템으로 전환

리전(Region) : AWS 를 서비스 하는 단위 지역  ex) 서울

AZ (Availability Zone) : 가용영역, 하나의 리전 내에 위치한 IDC  ex) seoul 리전의 목동, 일산 등

Edge location : AWS의 CDN 서비스인 CloudFront 를 위한 캐시서버들의 모음

반응형
Posted by 돌고래트레이너