솔솔

Docker로 MySQL 데이터 덤프 만들고 다른 컨테이너에 복원하기 본문

나의보물들/Docker

Docker로 MySQL 데이터 덤프 만들고 다른 컨테이너에 복원하기

솔솔하네 2024. 9. 27. 16:24
반응형
설치환경
Window 10 Pro

설치목록
Oracle VM VirtualBox
Mobaxterm
Ubuntu 22.04.5 LTS
Docker version 27.3.1


🍀 데이터베이스 덤프란?


데이터베이스에서 데이터를 추출하여 파일로 저장하는 과정을 의미하는데 이 과정은 데이터베이스의 상태를 기록하고, 백업, 마이그레이션, 또는 테스트 환경 구축 등의 목적으로 사용됨.

데이터베이스 덤프는 데이터 손실 시 해당 내용을 복원할 수 있도록 데이터베이스를 백업하는 데 가장 많이 사용됩니다 . 손상된 데이터베이스는 종종 덤프를 분석하여 복구할 수 있습니다.
wikipedia 참조 : https://en.wikipedia.org/wiki/Database_dump

 

🍀 Volume생성 및 MySQL 데이터 덤프 생성


1. 볼륨 생성

docker volume create volume_mysqldb

 

2. mysqldb라는 이름으로 도커 실행

docker run --name mysqldb -e MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD} -d -p 3306:3306 -v volume_mysqldb:/home/ mysql:latest

 

3.  mysqldb  컨테이너에 접속하여 Bash 셸을 실행

docekr exec -it {컨테이너 ID | 컨테이너 명} bash

 

4. mysql에 접속해서 스키마 생성 후 해당 스키마에 테이블 생성

mysql> select * from dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+

 

5.  덤프 파일 생성

# /home/database.dmp : 볼륨 루트랑 동일 한곳에 파일 생성
mysqldump -u root -p {DB 스키마 명} > /home/database.dmp

 

6. 덤프 파일 확인하게 되면 아래와 같은 정보들이 포함됨

  • 테이블 구조: 각 테이블의 CREATE TABLE 구문 (컬럼, 데이터 타입 등)
  • 데이터: 각 테이블의 데이터가 INSERT 문으로 포함됨
  • 인덱스 및 제약 조건: 테이블의 인덱스 및 제약 조건 정보
  • 기타 객체: 뷰, 스토어드 프로시저, 트리거 등의 정의

 

 

🍀 MySQL 데이터 다른 컨테이너에서 복원


1.  mysqldb2라는 이름으로 도커 실행

docker run --name mysqldb2 -e MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD} -d -p 3307:3306 -v volume_mysqldb:/home/ mysql:latest

 

2. mysqldb2 컨테이너에 접속해서 덤프 복원

# 볼륨 루트에 있는 database.dmp 파일을 덤프 복원
mysql -u root -p {DB 스키마 명} < /home/database.dmp

 

3. mysql 접속해서 확인 하면 mysqldb1에 있는 데이터가 mysqldb2로 복원되어 있는 것을 확인 할 수 있음

mysql> select * from dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+

'나의보물들 > Docker' 카테고리의 다른 글

[Docker] No space left on device 에러  (0) 2024.10.14
[Docker] Docker 명령어  (2) 2024.09.29