0%

Docker 기반 위의 MariaDB DB 백업하기 (SQLDump)

Docker 기반 위에서 동작하는 MariaDB 백업하기

전에 진행하던 프로젝트의 DB는 Docker 기반 위의 MariaDB를 사용하였다.
그런데 몇 가지 고민을 하던 것 중에 하나는 Docker 기반의 MariaDB를 백업하는 방법이었다.
그래서 방법을 찾아보았고, 이것을 포스팅하려 한다.


How to Backup?

명령어는 아래와 같다.

sudo docker exec CONTAINER /usr/bin/mysqldump -u root –password=root DATABASE > backup.sql

CONTAINER는 컨테이너 이름인데 mariadb 컨테이너를 설정한 이름을 적어준다.
root의 비번을 입력하고, DATABASE는 백업할 데이터베이스 이름을 입력한다.
backup.sql은 dump 파일이 저장될 위치를 지정한다.

그리고 이것을 쉘 스크립트로 만들어보았다.

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh

backupPath='/home/ec2-user/backup/db'
fileName='db_$(date +%Y%m%d)_$(date +%H%M%S).sql' #db_[년월일]_[시분초].sql

# 백업 디렉토리는 /backupPath/년월/일 을 체크하여 없는 경우 생성
if [ ! -d $backupPath/$(date +%Y%m)/$(date +%d) ]
then
mkdir -p $backupPath/$(date +%Y%m)/$(date +%d)
fi

sudo docker exec mariadb /usr/bin/mysqldump -u sample --password=tmppw db > $backupPath//$(date +%Y%m)/$(date +%d)/ttp_$(date +%Y%m%d)_$(date +%H%M%S).sql

그리고 이것을 크론탭으로 등록하여 사용하면 더 편리하다.


How to Restore?

복구는 그럼 어떻게 해야 하는가?
아래의 명령어를 참고하자.

cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root –password=root DATABASE

cat 명령어로 dump 파일 경로 및 .sql 파일명을 적어주고 파이프로 연결된 명령어를 알맞게 입력하면 된다.