MariaDB Automatically Daily Dump(매일 백업하기)


우선 아래와 같은 쉘 스크립트를 만든다. 아래의 스크립트는 DBMS에 있는 모든 DB에서 특정 DB를 제외한 DB를 덤프하는 스크립트다.

#!/bin/bash

# Database credentials
user="user_name"
password="password"
host="localhost"

# Other options
backup_path="/your/path/to/backup"
date=$(date +"%Y-%m-%d")

# To create a new directory into backup directory location
mkdir -p $backup_path/$date

# get a list of databases
db_names=`mysql -u$user -p$password -e "SHOW DATABASES;" | grep -Ev "(information_schema|test|performance_schema|mysql)"`

# Dupm database into SQL file
for db_name in $db_names; do
        mysqldump --add-locks --add-drop-table --force --user=$user --password=$password --host=$host $db_name | gzip > $backup_path/$date/$db_name.sql.gz
done

# Delete files older than 10 days
find $backup_path/* -mtime +10 -exec rm {} \;

스크립트를 다 만들었으면 crontab에 등록을 한다.(crontab이 설치가 안돼있을 경우에는 설치부터, 설치 과정은 생략) 크론은 CentOS 7 기준으로 /etc/cron.d/ 디렉토리에 등록하면 된다.

# For Details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

0 1 * * * user_name /your/path/to/script/script.sh

이렇게 하면 매일 오전 1시에 크론이 위의 스크립트를 실행하여 DB를 덤프한다.