반응형
데이터베이스의 데이터를 자동으로 백업할 수 있도록 스크립트를 작성했다.
#! /bin/bash
# backup directory
dir=$(echo /home1/test01/project01/db/backup)
# get backup file time and now time
customer_BackupFileDate=$(date -r $dir/backup_customer.sql '+%Y-%m-%d %H:%M:%S')
customer_BackupFileDateString=$(date -r $dir/backup_customer.sql '+%Y%m%d_%H%M%S')
# rename last backup file
mv $dir/backup_customer.sql $dir/backup_customer_$customer_BackupFileDateString.sql
# backup customer table from test01
sudo /home1/test01/db/mysql/bin/mysqldump -utest01 -p1q2w3e4r -S /home1/test01/db/mysql/tmp/mysql.sock test01 customer --where="create_date > '$customer_BackupFileDate'" --skip-add-drop-table > $dir/backup_customer.sql
sudo chown test01:test01 $dir/backup_customer.sql
해당 스크립트를 리눅스 작업 스케줄러(crontab)에 등록하여 반복적으로 실행되게 하면 된다.
본인은 직전에 백업된 파일이 생성된 일자 이후로 등록된 customer 정보만 백업하고자 위와 같이 작성했는데 전체 데이터를 다 백업하고자 한다면 where 절을 제거하고 사용하면 된다!
스트립트의 내용을 설명해보자면
# get backup file time and now time
: 기존에 생성된 백업파일이 생성된 시간을 획득하였다. 하나는 date 타입이고 하나는 string 타입인데 date 타입은 where절에 조건을 주기 위함이고, string 타입은 기존 백업파일의 파일명을 바꿔주기 위함이다.
# rename last backup file
: 마지막으로 생성된 백업파일의 파일명을 변경하였다. ( 위에서 획득한 string 타입의 일자 붙여줌)
# backup customer table from test01
: test01 데이터베이스의 customer 테이블의 데이터를 dump하기 위한 과정이다.
아래와 같이 상황에 따라 수정해서 사용하면 될듯!
- 전체 백업
mysqldump -u계정아이디 -p계정패스워드 -A > all.sql
- 특정 DB 백업
mysqldump -u계정아이디 -p계정패스워드 DB명 > DB명.sql
- 특정 DB의 특정 테이블 백업
mysqldump --u계정아이디 -p계정패스워드 DB명 table명 > DB명_table명.sql
728x90
반응형
'개발 > Linux' 카테고리의 다른 글
[Linux] 패스워드 없이 서버 간 파일 전송하기 : ssh-keygen (1) | 2022.05.18 |
---|---|
[Linux] OOM Killer란? Kill 대상에서 제외시키기 (0) | 2022.01.18 |
[Linux] netstat 명령어로 네트워크 상태 확인하기(+ TCP 상태 전이) (2) | 2021.12.29 |
[Linux] 방화벽 설정하기 / 특정 포트 방화벽 오픈 (1) | 2021.12.22 |
[Linux] 리눅스에서 Unix ODBC 사용하기 (0) | 2021.12.16 |
댓글