* 주요 내용
: Maria DB의 백업 방식은 크게 두가지가 있다. SQL Dump, MariaBackup (Mysql의 XtraBackup에 근간을 둠) 호환성과 편의성은 SQL Dump가 좋지만 DB용량이 커지면 백업과 복구에 무지막지한 시간이 들어간다. 실례로 8기가 정도의 백업파일을 복구하는데 있어 1시간 가량 소요 되어 다른 백업, 복구 방법을 찾던 중 MariaBackup을 알 수 있었다. 파일 복제 기반의 백업이라 정말 빠르다.
* 주요 포인트
: Docker Container 기반의 MariaDB인 경우 Mariadb Backup방법이 온프렘 기반의 시스템과는 많이 다르다. 이 부분이 주요 포인트이다.
* 테스트 시나리오
1. Maria DB Docker Container 생성 (source)
2. source db 백업
3. source db stop
4. target db(임시 Mirror)를 통해 복원
5. target db 컨테이너 생성
* 테스트 용도의 Maria DB Docker Container 생성
docker run --name testdb -v D:\mariabackup\datadir:/var/lib/mysql -v D:\mariabackup\backup:/tmp/backup -e MARIADB_ROOT_PASSWORD=passw0rd -p 3306:3306 -d mariadb:10.9.3
* Source DB 백업
: 컨테이너 내부에 접속하여 아래 명령어 실행
: 백업 경로는 /tmp/backup
# 백업
mariabackup --backup --user=root --password=passw0rd --target-dir=/tmp/backup
# 단일 파일로 압축 백업
mariabackup --backup --user=root --password=passw0rd --target-dir=/tmp/backup | gzip > 파일명.gz
mariabackup --prepare --target-dir=/tmp/backup
* Source DB STOP
$ docker stop testdb
* Target 폴더에 복원
docker run --name testdb_backup --user=root -v D:\mariabackup\newdatadir:/var/lib/mysql -v D:\mariabackup\backup:/tmp/backup -e MARIADB_ROOT_PASSWORD=passw0rd -p 3306:3306 -d mariadb:10.9.3 mariabackup --copy-back --target-dir=/tmp/backup
* Target 폴더를 바라보는 새 DB 컨테이너 생성
docker run --name newtestdb -v D:\mariabackup\newdatadir:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=passw0rd -p 3306:3306 -d mariadb:10.9.3
* 참고자료
- 압축 백업 가이드 : https://runebook.dev/ko/docs/mariadb/using-encryption-and-compression-tools-with-mariabackup/index
- docker container 에서 vim 설치 : https://javacpro.tistory.com/75
- 도커 마리아디비 공식 페이지 : https://hub.docker.com/_/mariadb
- 마리아디비 대소문자 구분 해제 : https://m.blog.naver.com/zzang9ha/221989693170
'Database' 카테고리의 다른 글
[MSSQL] 백업 및 로그 파일 축소 (0) | 2023.02.28 |
---|---|
[MariaDB] Slow query 수집 (0) | 2023.01.27 |
[MariaDB] MariaDB sqldump로 배치(Cron) 만들기 (0) | 2023.01.26 |
[MariaDB] Proxy SQL 셋팅 (on Docker) (0) | 2023.01.12 |
[MariaDB] Replication 구성 (on Docker) (0) | 2023.01.11 |