NCP + MS SQL in macOS
서론
최근 회사 업무로 인해 네이버 클라우드 플랫폼(이하 NCP)에 MS SQL DB를 구축해야 할 일이 생겼다. 이에 자료를 찾아보니 Window 환경에서 MS SQL을 구축하는 정보들은 다수 존재하나 macOS 환경에서 구축하는 글은 드물어 관련 경험을 기록하고자 한다.
본론
NCP 설정
기본적으로 MS SQL을 NCP에서 호스팅하기 위해선 2가지 방법이 존재한다.
Cloud DB for mssql
- MSSQL을 위한 DBMS 및 각종 툴들이 설치된 상태
- 별도의 데이터베이스 설정 없이 웹상에서 바로 모니터링 및 이용 가능
- 스탠다드 기준 한달 62만원 정도의 비용 발생
Basic Server
- 기본 Linux 서버로, MSSQL을 호스팅하기위한 별도의 설정이 필요함
- Ubuntu 18.04 환경
- 스탠다드 기준 한달 7만원 정도의 비용 발생
해당 데이터베이스 서버를 단순 데이터 수신으로만 사용할 예정이므로 Basic Server에 Mssql Docker를 띄운 상태로 테스트를 진행할 예정이다.
기존에는 비용적인 측면에서 NCP에서 1년간 무료로 제공하는 Micro Server를 통해 MS SQL을 호스팅하려 하였으나, 네이버 클라우드에서 무료로 제공하는 Micro Server의 경우 메모리 1GB를 제공하는 반면 MS SQL을 서비스하기 위해선 최소 2GB의 메모리를 필요로 한다. 따라서 Micro Server가 아닌 Standard Server를 기준으로 테스트를 진행하고자 한다.
추가로 본 글에서는 macOS 터미널을 통해 해당 클라우드 서버에 접속할 예정이다. NCP는 SSH
접속을 위한 22
번 포트를 외부에서 접근하는 것을 허용하지 않아 포트 포워딩을 해주어야 한다.
이후 20001
번 포트를 외부 IP에서 접근할 수 있도록 ACG에서 허용해주어야 한다. ACG는 일종의 방화벽으로, NCP에서 제공하는 IP 기반 필터링 기능이다. 본 글에서는 추가로 이후의 DB 접근을 위한 20002
번 포트를 개방해주었다.
SSH만을 이용해 해당 서버에 접근하여 이용할 경우는 서버 접속용 공인 IP
를 통해 접근해 이용하면 되지만, 외부에서 SSH가 아닌 DB에 직접 접근할 경우 공인 IP
할당을 필요로 한다. 다만 공인 IP
의 경우 추가로 비용이 발생하니 유의할 필요가 있다. 발급받고 부여하는 과정은 간단해 최종 이미지만 첨부하도록 하겠다.
MSSQL 설치
상기 과정을 통해 NCP 설정을 완료하였다면 이제 해당 서버로 접근할 수 있다. 접근을 위한 명령어는 다음과 같다.
1 | # SSH를 통한 서버 내 접근 |
최초 접근할 경우 패스워드를 필요로 하는데, 초기 패스워드는 콘솔에서 서버 생성시 활용한 인증키를 통해 확인할 수 있다.
이후 서버에 접근한 뒤 MS SQL 서버를 호스팅하기 위한 도커 & 도커 컴포즈를 아래 명령어를 통해 설치할 수 있다.
1 | # Docker 설치를 위한 명령어 |
1 | # Docker-Compose 설치를 위한 명령어 |
이후 MS SQL Docker를 위해 아래와 같이 docker-compose.yml
파일을 작성하였다. 해당 파일은 2019-latest
이미지를 활용하여 MS SQL Docker Container를 생성한다. 또한 데이터 처리를 도울 스크립트들과 데이터 보존을 위해 디렉토리들을 추가로 바운딩하였다.
1 | version: '3.7' |
이후 작성한 docker-compose.yml
파일을 통해 MSSQL Docker Container를 동작시킨 뒤 접속하였다. 해당 과정을 스크립트를 통해 자동화하였다.
1 | # restart_docker.sh |
1 | # Docker 활성화 |
MS SQL에 정상적으로 접근됨을 확인하였으니 테이블을 생성해보자. 다만 필자는 MS SQL 문법을 다루는데 미숙함이 있어 해당 과정 또한 스크립트를 통해 자동화하였다. 아래 코드의 경우 테이블 정보를 비롯한 내용들은 본인의 필요에 따라 대체해야됨에 유의하자.
1 | # your_own_table.sql |
1 | # create_table.sh |
이후 해당 스크립트를 실행함으로써 도커 내부로 진입 없이 테이블 생성을 할 수 있다. 마찬가지로 아래 스크립트를 통해 해당 테이블로부터 데이터 조회를 자동화하였다.
1 | # get_table_data.sh |
추가로 별도의 프로그램을 통해 해당 데이터베이스로의 접근을 희망할 경우, 아래 정보를 통해 본인의 클라우드 서버 내 MS SQL로 진입할 수 있다.
1 | Host : <공인 IP> |
참고 링크
Naver Cloud Platform (NCP) Server 생성, Putty 접속(https://seokd.tistory.com/40)
Mac Pro 터미널을 이용해서 Remote 서버 SSH 접속 하기(https://page-view.tistory.com/32)
네이버클라우드 적용기 - 공인 IP 생성 및 포트 포워딩, SSH 연결(https://catchdream.tistory.com/230)
네이버 클라우드 DB서버에 공인IP 없이 외부 원격 접속하기(https://prohannah.tistory.com/93)
Naver Cloud Platform 서버 세팅하기(https://eitu97.tistory.com/58)
Server 생성 후 SSH접속 및 Public IP 연결하여 외부 접속 방법(https://photofrontbboggi.tistory.com/entry/네이버클라우드플랫폼-Server-생성-후-SSH접속-및-Public-IP-연결하여-외부-접속-방법)
Ubuntu 18.04.x LTS에 docker 설치 하기(https://louky0714.tistory.com/131)
Docker로 MS-SQL Server 설치하기(https://www.lesstif.com/dbms/docker-ms-sql-server-113347394.html)
MSSQL을 Docker Compose로 띄우기(https://basketdeveloper.tistory.com/89)
MSSQL 기본 명령어 정리(https://kindmaster.tistory.com/188)