백업 정책 수립
일간 백업 설정을 위해서 설정파일을 common 디렉토리에 복사한다.
cd /etc/mysql-zrm; mkdir common; cp mysql-zrm.conf common/;
정책 파일에는 비밀번호등이 저장 되므로 인가된 사용자 외에는 볼 수 없게 권한을 제한한다.
chmod -R 700 common
정책 파일을 수정한다.
vi common/mysql-zrm.conf
백업 형태를 지정한다. 0은 전체 백업, 1은 증분 백업이다.
증분백업을 하면 바이너리 로그를 저장하고, flush log를 실행해서 로그 파일을 변경한다.
# Backup level. It can be full or incremental # Use 0 for full and 1 for incremental backups # This parameter is optional and default value is full backup. # backup-level=1
증분백업을 하려면 바이너리 로그의 경로를 지정해야 한다.
# Directory where MySQL binary logs can be found. The parameter is optional. # mysql-binlog-path="/var/log/mysql"
mysql에서 바이너리 로그를 활성화 하려면 mysql의 my.cnf 파일의 log_bin 설정을 수정해야 한다.
my.cnf 파일은 보통 /etc/my.cnf나 /etc/mysql/my.cnf 에 위치한다.
log_bin = /var/log/mysql/mysql-bin.log
mysql에서 바이너리 로그를 활성화 했다면 DB를 새로 시작해야 한다.
/etc/init.d/mysql restart
논리적 백업을 할지 raw백업을 할지 선택한다.
논리적 백업은 mysqldump의 결과로 만들어지는 백업이고, raw백업은 데이터 파일과 dump 파일을 저장한다.
증분백업을 하면 이 설정을 무시하고 바이너리로그만을 저장한다.
(참고)
# Backup method # Values can be "raw" or "logical". Logical backup are backups using # mysqldump(1) tool # This parameter is optional and default value is "raw". # backup-mode=logical
백업을 저장할 기간을 지정한다. 아래는 각 백업을 10일간 저장 하도록 설정한 예
# Specifies how long the backup should be retained. The value can be # specified in days (suffix D), weeks (suffix: W), months (suffix: M) or # years (suffix Y). 30 days in a month and 365 days in a year are assumed # This parameter is optional and the default is the backups are retained # forever. # retention-policy=10D
백업 결과를 압축할 것인지를 지정
# This parameter should be set to 1 if backups should be compressed. If this # parameter is set, gzip(1) command is used by default. If different # compression algorithm should be used, it must be set in "compress-plugin" # parameter. Default: There is no data compression. compress=1
데이터베이스 전체를 백업 대상으로 지정
# This parameter should be set to 1 if all databases are part of this backup set all-databases=1
백업을 실행할 mysql 사용자의 아이디와 비밀번호를 지정
# MySQL database user used for backup and recovery of the backup set. # This parameter is optional. If this parameter is not specified, values from # my.cnf configuration file. # user="backup-user" # MySQL database user password. # This parameter is optional. If this parameter is not specified, values from # my.cnf configuration file or no password is used. # #password="pass123"
백업결과를 통보 받을 이메일을 지정
# After a backup run the backup report is emailed to the mailto address # This parameter is optional and default behavior is not to send mail # notifications. # mailto="codingeverybody@gmail.com"
백업실행
즉시 실행
mysql-zrm-scheduler --now --backup-set common
스케줄링
매일 오후 1시 35분에 common 설정을 사용해 백업한다.
mysql-zrm-scheduler --add --interval daily --start 13:35 --backup-set common
매주 화,수요일에 백업한다.
mysql-zrm-scheduler --add --interval weekly --day-of-week 2-3 --backup-set common
매월 10일에 백업한다.
mysql-zrm-scheduler --add --interval monthly --day-of-month 10 --backup-set common
매일 13:35분에 실행되는 스케줄을 삭제
mysql-zrm-scheduler --delete --interval daily --start 13:35
매주 화,수요일에 실행되는 스케줄을 삭제
mysql-zrm-scheduler --delete --interval weekly --day-of-week 2-3 --backup-set common