# mariabackup 백업 & 복구
내가 하는 업무가 다양해서 일관성이 없다 보니
예전에 했던 일들을 자꾸 까먹어서
블로그에 써놓으면 좀 낫지 않을까?란 생각으로 쓰는 포스트이다.
우선 백업부터 하자
# 풀백업
mariabackup \
--backup \
--defaults-file={mariadb config 경로} \
--target-dir={백업파일 저장 경로} \
--user=root \
--password='...' \
--no-lock
# 증분백업
mariabackup \
--backup \
--defaults-file={mariadb config 경로} \
--target-dir={백업파일 저장 경로} \
--incremental-basedir={이전 풀/증분백업 LSN 저장 경로} \
--user=root \
--password='...'
# prepare
mariabackup \
--prepare \
--target-dir={백업파일 저장 경로} \
--user=root \
--password='...'
--backup 백업이므로 이 옵션은 필수!
--defaults-file에는 mariadb config 파일 경로(my.cnf)를 명시한다.
--target-dir에는 백업파일 저장 경로를 명시한다.
--incremental-basdir에는 증분백업을 위한 이전 백업 파일의 저장 경로를 명시한다.
그리고 백업 도중 변경사항이 발생할 수 있다.
복원 전, --prepare 옵션을 통해서 백업 중 발생한 변경사항(redo로그)를 데이터 파일에 반영한다.
prepare를 하게 되면 xtrabackup_checkpoints 파일의 backup_type이
full-backuped -> log-applied로 변경된다.
백업 명령어를 실행하면 다음처럼 백업파일이 생성된다.
drwxr-xr-x 6 root root 4.0K 2022-02-11 18:15 .
drwx------ 4 root root 4.0K 2022-02-11 18:11 ..
-rw-r----- 1 root root 24K 2022-02-11 18:15 aria_log.00000001
-rw-r----- 1 root root 52 2022-02-11 18:15 aria_log_control
-rw-r----- 1 root root 326 2022-02-11 18:15 backup-my.cnf
-rw-r----- 1 root root 972 2022-02-11 18:15 ib_buffer_pool
-rw-r----- 1 root root 12M 2022-02-11 18:15 ibdata1
-rw-r----- 1 root root 2.5K 2022-02-11 18:15 ib_logfile0
drwx------ 2 root root 4.0K 2022-02-11 18:15 mysql
drwx------ 2 root root 4.0K 2022-02-11 18:15 performance_schema
drwx------ 2 root root 4.0K 2022-02-11 18:15 test
-rw-r----- 1 root root 25 2022-02-11 18:15 xtrabackup_binlog_info
-rw-r----- 1 root root 73 2022-02-11 18:15 xtrabackup_checkpoints
-rw-r----- 1 root root 553 2022-02-11 18:15 xtrabackup_info
drwx------ 2 root root 4.0K 2022-02-11 18:15 whatisyourname
여기서 xtrabackup_info 파일이 있다.
백업과 관련된 정보를 저장한 파일인데
복원의 목적이 slave서버를 구축하는 것이라면
binlog_pos 정보를 통해서 replication 설정을 하면 된다.
# cat xtrabackup_info
uuid = 3879b27e-8b1b-11ec-9fd1-6c2b59b09b40
name =
tool_name = mariabackup
tool_command = --defaults-file=... --user=root --backup --target-dir=...
tool_version = 10.4.11-MariaDB
ibbackup_version = 10.4.11-MariaDB
server_version = 10.4.11-MariaDB-log
start_time = 2022-02-11 18:15:54
end_time = 2022-02-11 18:15:56
lock_time = 0
binlog_pos = filename 'db-bin.000001', position '1766', GTID of the last change '0-1-7'
innodb_from_lsn = 0
innodb_to_lsn = 71865
partial = N
incremental = N
format = file
compressed = N
복원 명령어는 --copy-back 옵션을 사용하면 된다.
mariabackup \
--copy-back \
--target-dir={백업파일 저장 경로} \
--datadir={복원 data 디렉토리 경로} \
--user root \
--password '...'
data 디렉토리는 다른 이름으로 변경하여 놓자.
덮어쓰는 옵션은 있지만 미래는 모르는 일...
DB는 보수적으로...
난 나를 믿을 수 없다... ㅜㅡㅜ
[참고자료]
https://brush-describr.tistory.com/8
https://techblog.woowahan.com/2576/
https://m.blog.naver.com/anjae83/221749783199
https://semode.tistory.com/335
To be continued.........
Made by 꿩
'Database > RDBMS' 카테고리의 다른 글
[MySQL/MariaDB] my.cnf 메모리 설정 (0) | 2022.06.11 |
---|---|
[PostgreSQL] Architecture (0) | 2022.03.01 |
[MySQL/MariaDB] 계정 정보 추출 (0) | 2021.11.11 |
Transaction과 Isolation Level (0) | 2021.04.07 |
MVCC 동시성 제어 (0) | 2021.02.06 |