Docker-Compose를 사용하여 MySQL8 서버를 구성합니다.
실습 환경 정보는 아래와 같습니다.
OS : macOS Big Sur Ver 11.1
Docker : 20.10.2
MySQL : MySQL 8.0.23 (Debian GNU/Linux 10.8)
docker-compose 디렉토리 구조 및 파일을 살펴보도록 하겠습니다.
mysql 구성에 필요한 폴더구조와 파일로 구성되어있습니다.
mysql-8.0.23
├── docker-compose.yml
└── mysql-01
├── conf
│ └── my.cnf
├── data
└── log
"docker-compose.yml", "my.cnf"를 살펴보도록 하겠습니다.
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
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
# network create
docker network create -d bridge mybridge
# network ls
docker network ls
docker-compose를 실행하여 Elastic Stack 및 Mysql 서비스를 시작합니다.
# run
docker-compose up -d
#stop
docker-compose stop
DBeaver를 다운 받고 연결정보를 입력 후 접속합니다.
ip : localhost
port : 3306
user : root
password : root
mysql 접속 후 "select version()" 명령어로 mysql 버전을 확인 합니다. MySQL 버전이 "8.0.23"으로 표시된 부분을 확인할수 있습니다.
코드는 Github에서 확인 가능 합니다.