MySQL 8.0 setup with Docker

hansung.dev·2021년 2월 26일
2

MySQL 구축 및 운영

목록 보기
1/8
post-thumbnail

Docker-Compose를 사용하여 MySQL8 서버를 구성합니다.

Getting Started

실습 환경 정보는 아래와 같습니다.

OS : macOS Big Sur Ver 11.1
Docker : 20.10.2
MySQL : MySQL 8.0.23 (Debian GNU/Linux 10.8)

docker-compose 디렉토리 구조 및 파일을 살펴보도록 하겠습니다.

File Directory with Docker-Compose

mysql 구성에 필요한 폴더구조와 파일로 구성되어있습니다.

mysql-8.0.23
├── docker-compose.yml
└── mysql-01
    ├── conf
    │   └── my.cnf
    ├── data
    └── log

"docker-compose.yml", "my.cnf"를 살펴보도록 하겠습니다.

docker-compose.yml

MySQL 8.0.23 버전을 이미지를 사용합니다. 최신버전을 사용할려면 "mysql:latest"로 변경합니다.
MySQL의 root 비밀번호는 "root"로 설정합니다.
Docker가 종료되어도 데이터가 유실되지 않도록 데이터 및 로그, 설정 경로를 볼룸에 마운트 합니다.

version: '3'

services:
  mysql-01:
    container_name: mysql-01
    hostname: mysql-01
    image: mysql:8.0.23
    command: mysqld --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: root
    ports:
      - '3306:3306'
    volumes:
      - "${PWD}/mysql-01/data:/var/lib/mysql"
      - "${PWD}/mysql-01/log:/var/log/mysql"
      - "${PWD}/mysql-01/conf/my.cnf:/etc/mysql/conf.d/my.cnf"
    networks:
      - mybridge
networks:
  mybridge:
    external: true

my.cnf

MySQL의 my.cnf 파일입니다. 파일 및 로그 디렉토리 등 주요 설정을 합니다.

[mysqld]
log_bin                     = mysql-bin
binlog_format               = ROW
gtid_mode                   = ON
enforce-gtid-consistency    = true
server-id                   = 10
log_slave_updates
datadir                     = /var/lib/mysql
socket                      = /var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links              = 0

log-error                   = /var/log/mysql/mysqld.log
pid-file                    = /var/run/mysqld/mysqld.pid

report_host                 = mysql-01

[mysqld_safe]
pid-file                    = /var/run/mysqld/mysqld.pid
socket                      = /var/lib/mysql/mysql.sock
nice                        = 0

[client]
socket                      = /var/lib/mysql/mysql.sock

캐릭터셋은 utf8mb4로 설정하고 collation는 utf8mb4_unicode_ci로 설정합니다.

[mysqld]
# character
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

MySQL의 SlowQuery 설정을 합니다. 파일 및 파일위치, SLowQuery 기준 시간을 1초로 설정합니다.

[mysqld]
# Slow Query
slow_query_log              = 1
slow_query_log_file         = /var/log/mysql/mysql-slow.log
long_query_time             = 1

Docker Network 생성

# network create
docker network create -d bridge mybridge

# network ls
docker network ls

Setting up and running

Docker-Compos Run, Stop

docker-compose를 실행하여 Elastic Stack 및 Mysql 서비스를 시작합니다.

# run
docker-compose up -d

#stop
docker-compose stop

Connecting to mysql

DBeaver를 다운 받고 연결정보를 입력 후 접속합니다.

ip : localhost
port : 3306
user : root
password : root

mysql 접속 후 "select version()" 명령어로 mysql 버전을 확인 합니다. MySQL 버전이 "8.0.23"으로 표시된 부분을 확인할수 있습니다.

코드는 Github에서 확인 가능 합니다.

profile
Data Engineer

0개의 댓글