솔솔
Docker로 MySQL 데이터 덤프 만들고 다른 컨테이너에 복원하기 본문
반응형
설치환경
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 |