Docker 서비스 중인 MariaDB/MySQL, MongoDB의 백업 및 복구 Computer Tip

Docker compose 로 서비스를 잘 하고 있었다면,
또 보통 RDB나 MongoDB와 같은 NoSQL을 사용하고 있었다면,
해당 DB의 내용을 백업 및 복구해야할 경우가 많습니다.

이런 경우를 위해 준비를 해 보았습니다.


1) MariaDB/MySQL 백업

Docker Host에서 다음과 같은 명령을  이용합니다.

docker exec {컨테이너이름_또는_ID} mysqldump -u {DB사용자} -p{암호} {DB명} > dump_$(date '+%d-%m-%Y_%H-%M-%S').sql

그러면 현재 폴더에 dump_03-05-2022_09-38-52.sql 과 같은 식으로 현재 시각이 붙어 백업됩니다.


2) MariaDB/MySQL 복구

Docker Host에서 다음과 같은 명령을  이용합니다.
(보통 이전 시각을 주었던 백업 파일 중에 하나를 symbolic link를 dump.sql 로 걸어줍니다.)

docker exec -i {컨테이너이름_또는_ID} mysql -u {DB사용자} -p{암호} {DB명} < dump.sql


3) MongoDB 백업

Docker Host에서 다음과 같은 2줄의 명령을  이용합니다.

docker exec {컨테이너이름_또는_ID} \
mongodump \
--host localhost:27017 \
--username {DB사용자} --password {암호} \
--archive=/tmp/dump.gz --gzip
docker cp {컨테이너이름_또는_ID}:/tmp/dump.gz dump_$(date '+%d-%m-%Y_%H-%M-%S').gz

그러면 현재 폴더에 dump_03-05-2022_09-38-52.gz 과 같은 식으로 현재 시각이 붙어 백업됩니다.
(만약 사용자와 암호를 안 주었다면 위에서 해당 옵션을 제외시키면 됩니다)

4) MongoDB 복구

Docker Host에서 다음과 같은 명령을  이용합니다.
(보통 이전 시각을 주었던 백업 파일 중에 하나를 symbolic link를 dump.gz 로 걸어줍니다.)

cat dump.gz | \
docker exec -i {컨테이너이름_또는_ID} \
mongorestore \
--host localhost:27017 \
--username {DB사용자} --password {암호} \
--archive --gzip

(만약 사용자와 암호를 안 주었다면 위에서 해당 옵션을 제외시키면 됩니다)


어느 분께는 도움이 되셨기를 ..

덧글

댓글 입력 영역

구글애드텍스트