티스토리 뷰
운영하면서 반드시 필요한 것 중 하나가 데이터 백업이다.
아래는 백업을 위한 쉘 스크립트이다.
참고로 대량의 데이터를 다룬다면 이런 방식 말고 스토리지 백업 솔루션들을 써야한다.
이거는 가볍게 백업하기 위한..
FOO 라는 이름의 DB를 백업한다고 해보자.
SQL 파일 생성
select_table.sql
select table_name from information_schema.tables where 1=1 and table_schema='FOO' |
쉘 스크립트
db_backup.sh
1 #!/bin/bash 2 BACKUP_PATH=/backup 3 CURR_TIME=$(date +"%Y%m%d") 4 FULL_PATH=${BACKUP_PATH}/${CURR_TIME} 5 FILE_NAME=tables_${CURR_TIME}.list 6 7 source /etc/profile 8 9 mkdir -p ${FULL_PATH} 10 mysql -u root FOO < ${BACKUP_PATH}/select_table.sql > ${FULL_PATH}/${FILE_NAME} 11 sed -i 1d ${FULL_PATH}/${FILE_NAME} 12 for table in `cat ${FULL_PATH}/${FILE_NAME}`;do 13 mysqldump -u root FOO $table > ${FULL_PATH}/${table}_${CURR_TIME}.sql 14 done 15 16 cd ${BACKUP_PATH} 17 tar -zcvf ${CURR_TIME}.tar.gz ${CURR_TIME} 18 rm -rf ${BACKUP_PATH}/${CURR_TIME} 19 20 #mysqldump -u root --no-create-info FOO > foo_data_${CURR_TIME}.sql |
해당일에 테이블별 백업을 하기 위한 쉘 스크립트이다.
Line 7 에서 프로파일을 적용하는 이유는 해당 프로파일에 mysql 명령어를 위한 PATH가 잡혀 있는데 크론탭으로 돌릴 경우 PATH가 안잡히는 경우가 생겨서이다.
Line 10 에서 FOO DB에서 위에 만들어놓은 select_table.sql 파일을 수행하여 백업할 테이블명들을 조회한다.
이렇게 하는 이유는 테이블이 추가/삭제가 될 경우가 있어 따로 관리하기 힘드므로 카탈로그 테이블에서 조회하는게 가장 정확하다.
Line 11 은 위 SQL로 테이블명을 가져오면 OUTPUT에 컬럼명이 추가되는데 이걸 지워주기 위함.
Line 12 부터 Line 14 까지가 실제 dump를 받는 명령어인데 위 SQL로 가져온 테이블명이 담긴 파일을 읽어와서 테이블별로 백업을 하는 방식이다.
Line 17 로 압축을 진행
Line 20 은 전체 백업을 받고 싶을 때 사용하면 된다.
크론탭 설정
crontab -e 명령으로 편집
평일만 매일 22시에 백업을 수행.
# DB Backup
0 22 * * 1,2,3,4,5 /backup/db_backup.sh >> /backup/backup.log 2>&1
'Programming & Solution > Linux' 카테고리의 다른 글
[Linux] nc 명령어로 포트 오픈 확인 (feat. telnet 없을 때) (0) | 2021.04.01 |
---|---|
[Linux] Redis 오프라인 설치 (0) | 2019.09.10 |
[Linux] Java 오프라인 설치 (0) | 2019.09.10 |
- Total
- Today
- Yesterday
- kubernetes
- gRPC
- 비트코인
- Bitcoin
- 스프링
- Blockchain
- 블록체인
- SpringBoot
- Vue.js
- 암호화폐
- vuejs
- 동적계획법
- 사토시 나가모토
- 백준
- DP
- excel parsing
- white paper
- Nealford
- 아키텍처
- CARDANO
- Bruteforce
- 카르다노
- architecture
- Spring
- Java
- 스프링 시큐리티
- 알고리즘
- leetcode
- k8s
- Redis
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |