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

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

1. 엔진

 

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

 

2. 설정 

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

 

3. 연결

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

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

 

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

 

4. 원격접속하기 

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

 잘된다. 

반응형
Posted by 돌고래트레이너
생계/PostgreSQL2024. 10. 23. 13:58

AWS RDS 로 Postgresql 생성하고 로컬에서 psql 로 접속하는 테스트 해보자 

 

1. Postgresql 설치

  AWS RDS 로 postgressql 인스턴스 생성하기 

 

2. client 설치

아래 링크에서 postgresql 을 다운받자

https://www.postgresql.org/download/

 

PostgreSQL: Downloads

 

www.postgresql.org

 DB서버를 로컬에 설치하진 않을거라 제외하고 나머지들만 선택해줬다. 

다운받고 설치가 끝나면 (재부팅이 요구된다. 조심하자) 환경변수를 편집해서 psql 을 사용할수 있게 수정하자.

 

3. psql 로 DB 원격 접속 

cmd 창을 열어 psql 명령어로 접속한다. 

psql -U 유저명 -d 디비명 -p 포트넘버 -h 호스트명 

 

4. psql 사용법 

## 데이터베이스 관련

- `\l` 또는 `\list`: 모든 데이터베이스 목록 표시
- `\c dbname` 또는 `\connect dbname`: 특정 데이터베이스로 연결

## 테이블 관련

- `\dt`: 현재 데이터베이스의 모든 테이블 목록 표시
- `\d tablename`: 특정 테이블의 구조 확인

## 사용자 관련

- `\du`: 모든 사용자(롤) 목록 표시

## 기타 유용한 명령어

- `\?`: psql 명령어 도움말 표시
- `\q`: psql 종료
- `\g`: 이전에 실행한 쿼리 다시 실행
- `\s`: 명령어 실행 기록 표시

## SQL 실행

- 일반적인 SQL 문은 그대로 입력하고 세미콜론(;)으로 끝내면 실행됩니다.

## 파일 실행

- `\i filename`: 파일에서 SQL 명령 실행

이 명령어들을 사용하여 PostgreSQL 데이터베이스를 효과적으로 탐색하고 관리할 수 있습니다. 필요에 따라 `\?` 명령어를 통해 더 많은 psql 메타 명령어를 확인할 수 있습니다.

반응형
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" 가 붙게 된다. 

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

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