카이도스의 Tech Blog

Docker - Mysql 설치 본문

Docker

Docker - Mysql 설치

카이도스 2024. 3. 9. 23:22
728x90
반응형
# 볼륨 생성
sudo docker volume create mysql-data
sudo docker volume ls
DRIVER    VOLUME NAME
local     a210b1f888dd5a24a6d0617f8b9c9733fc8345741a9f8374235cf93d2b973a25
local     cafd5373fadda57ac195dbd0146b161091bc0d66113706ffbc65ea640c924fb2
local     mysql-data

# mysql 컨테이너 생성 : 도커 자체 볼륨 활용
sudo docker run -it -d --name=mysql-volume \
 -e MYSQL_ROOT_PASSWORD=xgtest!# \
 -e MYSQL_DATABASE=test \
 -v mysql-data:/var/lib/mysql \
 mysql:latest

# mysql 컨테이너 접속
sudo docker exec -it mysql-volume bash
## 아래부터는 mysql 컨테이너 내부에서 실행
------------------------------------
mysql -uroot -pxgtest!#

# 데이터베이스(=스키마) 확인
SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

# simple 데이터베이스 선택 하기
USE test;

# 테이블 생성
CREATE TABLE mytable (c1 int, c2 char);

# 테이블 확인
SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| mytable        |
+----------------+

# 테이블 필드와 타입 등 정보 확인
DESC test.mytable;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c1    | int     | YES  |     | NULL    |       |
| c2    | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

# 행(=데이터=레코드) 1개 넣기
INSERT INTO mytable VALUES (1, 'a');

# 조회
SELECT * FROM mytable;
+------+------+
| c1   | c2   |
+------+------+
|    1 | a    |
+------+------+
1 row in set (0.00 sec)

# 행 넣기
INSERT INTO mytable VALUES (2, 'b');
SELECT * FROM mytable;
+------+------+
| c1   | c2   |
+------+------+
|    1 | a    |
|    2 | b    |
+------+------+
2 rows in set (0.00 sec)
------------------------------------
# 도커 볼륨 정보 확인
sudo docker inspect --format="{{ .Mountpoint }}" mysql-data
/data/docker/volumes/mysql-data/_data

# 호스트 경로에서 확인
sudo tree /data/docker/volumes/mysql-data/_data -L 1
├── auto.cnf
├── binlog.000001
├── binlog.000002
├── binlog.index
├── ca-key.pem
├── ca.pem
├── client-cert.pem
├── client-key.pem
├── e18d7832f827.err
├── #ib_16384_0.dblwr
├── #ib_16384_1.dblwr
├── ib_buffer_pool
├── ibdata1
├── ibtmp1
├── #innodb_redo
├── #innodb_temp
├── mysql
├── mysql.ibd
├── mysql.sock -> /var/run/mysqld/mysqld.sock
├── performance_schema
├── private_key.pem
├── public_key.pem
├── server-cert.pem
├── server-key.pem
├── sys
├── test
├── undo_001
└── undo_002

sudo ls -al /data/docker/volumes/mysql-data/_data/test/
total 120
drwxr-x--- 2 systemd-coredump systemd-coredump     25 Mar  7 12:59 .
drwxrwxrwt 8 systemd-coredump systemd-coredump   4096 Mar  7 12:58 ..
-rw-r----- 1 systemd-coredump systemd-coredump 114688 Mar  7 13:00 mytable.ibd

  • 장애 재현 : 현재 컨테이너를 강제로 삭제 후 신규 컨테이너 재실행 시 도커 볼륨 연결 후 확인
# 컨테이너 삭제
sudo docker rm -f mysql-volume
sudo docker ps
sudo ls -al /data/docker/volumes/mysql-data/_data/test/

# mysql 컨테이너 다시 생성 : 기존 도커 자체 볼륨 연결
sudo docker run -it -d --name=mysql-volume \
 -e MYSQL_ROOT_PASSWORD=xgtest \
 -e MYSQL_DATABASE=test \
 -v mysql-data:/var/lib/mysql \
 mysql:latest

# mysql 정보 확인
sudo docker exec -it mysql-volume mysql -uroot -pxgtest -e status

# mysql 데이터 확인
sudo docker exec -it mysql-volume mysql -uroot -pxgtest -e "show databases;"
sudo docker exec -it mysql-volume mysql -uroot -pxgtest -e "SELECT * FROM test.mytable;"

# 실습 자원 삭제
sudo docker rm -f mysql-volume
sudo docker volume rm mysql-data
728x90
반응형

'Docker' 카테고리의 다른 글

Docker - Nginx 설치  (0) 2024.03.09
Docker - Postgresql 설치  (0) 2024.03.09
Docker - nGrinder 설치2(서버 다른 서버)  (0) 2024.03.09
Docker - nGrinder 설치1(단일 서버)  (0) 2024.03.09
Docker 설치  (0) 2024.03.09
Comments