본문 바로가기

Side Project

[GCP] MySQL 환경 구축

생성한 VM에 직접 MySQL 설치하고 사용하면 되지 않을까?

왜 이렇게 해야되는지 무슨 장점이 있는지 의문을 가졌었다.

 

[결론]

VM에 직접 MySQL을 설치하여 관리하면 모니터링, 알람, 백업, HA(Hardware Architecture) 구성을 모두 직접해야한다. GCP에서 지원하는 SQL 기능은 모니터링, 알람, 백업, HA 기능들을 모두 지원하는 '관리형 서비스'로 개발자는 개발에만 집중할 수 있게 지원하는 편리한 서비스이다. 

 

DB 하나 하나를 VM Instance로 관리할 수 있고, DB 용량 Scale도 자유롭게 조정이 가능하다.

추가로 MySQL 2세대는 기존 DB Migration도 아주 편리하게 할 수 있다.

 

GCP Database CPU Usage Monitoring

 

1. MySQL Instance 생성: [SQL] > [데이터베이스] > [인스턴스생성] > [MySQL] 

+ DB Instance ID, DB root 권한 password 설정 

 

 

2. 생성된 DB Instance 내 Schema 만들기 : [SQL] > [데이터베이스] > 생성한 VM 선택 > [데이터베이스 만들기]

* 생성한 VM이란 1번 과정에서 생성한 VM을 의미하고, 이 VM을 선택하면 된다.

 

 

3. DB에 접속할 사용자 만들기 : [SQL] > [사용자] > [사용자 계정 생성]

root 계정을 사용해도 된다.

하지만 추후 개발할 서비스에서 MSA를 적용할 것이고, 이때 사용자에 따라 접속 가능한 DB Schema를 다르게 하기 위해 추가로 사용자 계정을 생성하고 관리한다.

 

 

4. DB 방화벽 설정 : [SQL] > [연결] > 생성한 VM 선택 > 네트워크 추가 > DB에 접근할 PC 및 VM의 외부 IP 주소 추가 > 저장

소개하는 방식은 허용된 IP만 접근 가능하도록 설정하는 방식이다.

 

PuTTY 접속 설정과 같이 Public & Private Key로 설정해도 무방하다.

하지만 내가 사용하는 IntelliJ의 DB Browser Plugin 에서는 SSL 옵션이 비활성화 되어 있었다.

 

그리고 허용된 IP만 접근 가능하도록 하는 방식에서 Netmask 설정도 가능하여,

관리 입장에 용이하다고 생각하기에 이 방식을 택했다.

(e.g. 192.168.1.0 / 16)

 

내가 사용하는 데스크탑 IP주소와 배포할 서비스 VM IP 주소 2개를 추가해두었다.

 

 

5. DB 정상 접속 여부 확인

 

    5-1. [4. 방화벽 설정]에서 등록한 IP 중 GCP VM에서 MySQL 서버 접속

 

* MySQL 서버 접속이 되지 않는다면 [4. 방화벽 설정] 과정에서 IP등록 과정이 잘못되었을 수 있으므로 [4] 과정 재수행

* GCP에서 MySQL Server 포트 정보 변경은 불가능한 것으로 보인다.. default port인 3306을 사용

[MySQL] 서버에 접속할 MySQL Client 설치
92phantom@webservice:~$ sudo apt-get install mysql-client -y

[MySQL] 서버에 접속
92phantom@webservice:~$ mysql -h MYSQL 설치 IP주소 -P 3306 --user='등록한 DB사용자 ID' --password

 

    5-2. 테이블 조회 및 생성

 

[생성한 DB Schema 접근]
mysql > use springboot-webservice

[TEST 1-1 : 테이블 생성]
mysql > CREATE TABLE test ( \
	id bigint(20) not null auto_increment, \
    content varchar(255) default null, \
    primary key(id) \
    ) ENGINE = InnoDB
    
[TEST 1-2 : 생성된 TABLE에 INSERT]
mysql > INSERT \
	INTO test(content) \
    VALUES ('test');
    
[TEST 1-3 : INSERT한 VALUE Query]
mysql > SELECT * \ 
	FROM test;

 

 

Summary.

정리하면 등록한 MySQL 방화벽 구조는 아래 그림과 같다.

 

MySQL Server allowed Firewall architecture 

 

 

여기까지 GCP MySQL 설정 과정이 마무리 되었고,

다음 과정에서 개발한 웹서비스와 연동하여 데이터가 정상적으로 적재 + 조회 되는지 여부를 확인할 예정이다. ! 

 

 

* GCP VM 생성 관련 참고 : https://92phantom.tistory.com/12?category=372350

 

[GCP] 서버 환경 구축

'스프링 부트와 AWS로 혼자 구현하는 웹서비스' 책을 보며 공부하고 있는데, 개인적으로는 AWS보다는 GCP가 끌려서 다른 클라우드로 접근해 실습해보았다. (그냥 구글이 끌렸다..ㅋㅋ) [Local PC Environment] - O..

92phantom.tistory.com