안녕하세요, 남두오성입니다.

 

이런 저런 이유로...(전 API로 받아올 데이터를 쌓아 놓을 저장소가 필요해져서...)

 

MariaDB를 설치해야 하는 경우가 종종 있습니다.

 

필요한 이유는 각자 있으실테고...

 

이걸 Docker 에 설치하는 방법을 오늘은 알아보도록 하겠습니다.

 

(그렇게 어렵지 않습니다. 잘 사용하는 것이 더 중요할 뿐.....ㅎㅎ)

 

 

 


 

1. MariaDB 도커에 설치

 

Synology DSM에 접속하셔서

 

file station을 들어가서, docker 공유폴더 아래에 MariaDB 폴더를 만들고 그 하위에 또 설정폴더와 데이터 폴더를 만들어 줘야 합니다.

 

 

config, data 폴더를 각각 만들어 줍니다.

 

 

그리고 나서 이제 도커를 열어 봅니다.

 

레지스트리 메뉴를 찾아가서

 

"mariadb"를 키워드로 검색해서 아래 이미지를 다운로드 받습니다.

 

이미지가 다운로도 완료된 것을 확인하고...

(용량이 큰 이미지는 아니라서 금방 다운로도 될 듯)

 

바로 이미지 실행 (더블클릭!!)을 합니다.

 

그럼 아래처럼 컨테이너 생성 메뉴로 들어갑니다.

 

"높은권한을 사용하여 컨테이너 실행"을 체크해주고, 고급설정으로 들어갈게요.

"자동 재시작 활성화" 체크 (언제나 처럼...ㅎㅎ) 합니다.

특히 DB 프로그램은 NAS가 켜져 있다면 항상 켜져있어야 하기 때문에

이 설정 꼭 켜주세요.

 

"볼륨"메뉴에서 

 

폴더 추가를 해서 아까 만들었던 config, data 폴더를 매핑시켜줘야 합니다.

 

아래 스크린샷 처럼 하면 되는데,

 

config 폴더는 /etc/mysql/conf.d

data 폴더는 /val/lib/mysql

 

에 각각 마운트 시킵니다.

 

이제 네트워크 탭으로 가는데,

저는 그냥 3306 포트 (어차피 내부망에서만 데이터 I/O 가 일어날 예정이기도 하고 해서...)를

사용할 예정이라 그냥 "Docker Host와 동일한 네트워크 사용" 을 체크 했습니다.

이렇게 하면 디폴트 포트 3306 으로 통일됩니다.

 

 

이제 마지막으로 환경 탭으로 가서

TZ : Asia/Seoul

MY_SQL_ROOT_PASSWORD : DB 비밀번호 입력

두 항목만 추가해 주시면 끝.

자 이제 컨테이너를 구동시키면 초기 설정이 완료 됩니다.

 

 

도커에서 컨테이너 메뉴에 들어가 보면 mariadb 컨테이너가 생성되어 있을 확인할 수 있습니다.

 


 

2. utf8 형식 추가해서 한글 입력 받기

 

DB 프로그램은 잘 구동이 되었는데....이대로 하면 들어오는 데이터에 한글이 있을 경우,

한글이 전부 "????"로 뜨는 사태가 발생합니다.

(데이터 타입의 문제임)

 

그래서 데이터 타입을 넣어주는 작업을 수행해야 합니다.

(이게 난이도가 좀 있음. 터미널 열고 코드 입력 해야 하는...)

 

자...일단 시놀로지의 ssh 기능을 활성화 시킵니다.

 

제어판 -> 터미널 및 SNMP -> SSH활성화

를 클릭합니다.

 

포트는 그냥 22번으로 했습니다.

내부망에서만 접속할 예정이기도 하고 해서 그냥 디폴트로 합니다.

(혹시 외부에서도 터미널 접속하시려면...포트포워딩을 22번 말고 다른 포트로 하시기를...)

 

이렇게 하면 터미널을 통해서 synology에 접근 가능합니다.

 

이제 터미널을 열고

 

로그인을 합시다.

 

ssh [시놀로지관리자ID]@[시놀로지 내부망 IP]

 

이렇게 입력하면 비밀번호를 물어보게 되는데, 저 시놀로지 관리자 계정의 비밀번호를 입력해 주면 로그인이 됩니다.

 

 

그 다음에는, mariadb의 컨테이너 id를 알아야 하므로, 도커 명령어를 입력하여 아이디를 알아냅니다.

 

sudo docker ps

 

코드를 입력하면 현재 도커안에서 실행중인 컨테이너 리스트가 다 뜨고, 그들의 아이디를 다 확인할 수 있습니다.

 

 

컨테이너 아이디를 복사한 후,

 

아래 명령어를 통해서 mariadb 컨테이너 내부 터미널로 들어가야 합니다.

(도커는 각각의 컨테이너가 독립적인 세팅을 가지기 때문에, 이렇게 개별 컨테이너 내부 터미널에서 설정들을 잡아 줘야 합니다)

 

sudo docker exec -it [도커 컨테이너 ID] bash

 

명령어가 제대로 들어갔다면, 커맨트라인 처음이 root@mariadb1:/# 로 보이게 됩니다.

(이제 mariadb 도커 내부 터미널로 진입한 것임)

 

 

이상하게 저는 처음 도커 컨테이너를 실행한 상태에서

 

apt-get install vim 명령어가 듣지를 않아서 설치가 안되었었습니다.

 

에러 메세지가 대략 이랬습니다.

E: Unable to locate package vim

 

 

그래서 구글링을 열심히 하다보니 해결책을 찾기는 했네요.

 

여기에서  아래 코드를 차례로 입력하면

 

apt-get 이 도커 안에서도 인스톨 가능하게 업데이트가 됩니다.

apt-get update

apt-get install apt-file

apt-file update

apt-get install vim

 

 

이 업데이트를 거치고 나면 에디터 VIM을 mariaDB 도커 안에 설치가 가능해 집니다.

 

 

vim이 설치가 된 것을 확인하고

 

(쭈르르륵 설치되는걸 봤을때 엄청난 희열이...ㅋㅋㅋ)

 

 

 

자...이제 에디터가 컨테이너 안에 설치가 되었으니

진짜 본게임 utf8 설정을 해보도록 하겠습니다.

 

(vim 사용법은 일반적인 텍스트 에디터와는 조금 다르니....다른 vim 설명 글을 참조하시는 것을 추천)

 

 

/etc/mysql/my.cnf 이 파일의 설정을 수정해 줘야 하는 겁니다.

vi /etc/mysql/my.cnf

vim으로 my.cnf 파일 수정 진입!!

 

최종 수정 결과물은 아래와 같이 하면 됩니다.

 

 

추가해야 할 항목은 다음과 같습니다.

 

1. 클라이언트 설정

 

[client]

default-character-set = utf8

 

 

2. mysqld에 추가

 

[mysqld]

 

character-set-server = utf-8

init-connect = 'SET NAMES utf8'

collation-server = utf8_unicode_ci


 

3. mysqldump, mysql 항목에도 추가 추가

 

[mysqldump]

default-character-set = utf8

 

[mysql]

default-character-set = utf8



이렇게 항목 추가를 한 후,

esc (수정 모드에서 나간다는 뜻) -> :wq (저장하고 vim을 나간다는 뜻) 하면 완료!

 

 

자..이제 제대로 설정으 먹었는지를 확인하기 위해서

 

sql을 실행시켜 봅시다.

 

명령어를 입력하면, sql 비밀번호를 입력하라고 하는데, 도커 설치할 때 입력했던 MYSQL_ROOT_PASSWORD를 입력합니다.

mysql -u root -p

 

그리고 입력 변수들의 현황이 어떤지 확인하기 위한 명령어까지 입력해 봅시다.

 

show variables like 'c%';

 

그러면 아래 스크린샷 처럼 뜹니다.

 

 

utf8들이 막 보이는거 확인 되시죠...

이제 한글을 데이터로 받아도 깨지지 않습니다.

(그럴 것으로 예상됩니다. 저도 계속 사용해 보면서 이 글은 업데이트 / 수정 하도록 하겠습니다)

 

흐...힘들었다. db 세팅 끝!!

BELATED ARTICLES

more