MySQL バックアップ自動化(USBメモリ)

2010年05月08日 21時55分 MySQL • Tags: ,



LinuxでのオンラインバックアップでのMySQLのバックアップ自動化方法のメモです。
バックアップ先はUSBメモリです。

バックアップの準備
バックアップを行うための権限の追加を行います。

[~]# mysql -u root -p
mysql> grant all on db_name.* to user_name@localhost;
mysql> grant file on *.* to user_name@localhost;
mysql> flush privileges;
mysql> quit;
[~]# mysqldump -u user_name -p db_name > dump_file

 
バックアップの自動化
1週間分のバックアップファイルを残します。
バックアップファイルはFATでフォーマットされたUSBメモリにもコピーします。

backup_mysql.sh

#!/bin/bash

DBUSER=${1}
DBPASSWD=${2}
DBNAME=${3}
BKPATH=${4}
BKNAME=${5}
BKUSBDIR=${6}

BKWEEKNO=`date +%w`
BKFILE=${BKPATH}/${BKNAME}
BKFILE_DUMP=${BKFILE}.dump
BKFILE_TGZ=${BKFILE}.tar.gz
BKFILE_TGZ_WEEK=${BKFILE}.week${BKWEEKNO}.tar.gz

mysqldump -u $DBUSER -p${DBPASSWD} --opt $DBNAME > $BKFILE_DUMP

(cd ${BKPATH} ; tar cvzf $BKFILE_TGZ ${BKNAME}.dump)
cp -p $BKFILE_TGZ $BKFILE_TGZ_WEEK

rm -f ${BKFILE_DUMP}

mount -t vfat /dev/sda1 /mnt/usb
mkdir -p /mnt/usb/${BKUSBDIR}

cp -p $BKFILE_TGZ /mnt/usb/${BKUSBDIR}
cp -p $BKFILE_TGZ_WEEK /mnt/usb/${BKUSBDIR}

umount /mnt/usb

 
ローカルとUSBメモリにコピーされ、保存されていることを確認し、CRONに設定します。

[~]# chmod 700 /usr/local/bin/shell/backup_mysql.sh
[~]# /usr/local/bin/shell/backup_mysql.sh db_user db_password db_name /backup/mydb/db backup_mydb mydb/db  > /dev/null 2>&1
[~]# ls /backup/mydb/db
backup_mydb.tar.gz  backup_mydb.week1.tar.gz
[~]# mount -t vfat /dev/sda1 /mnt/usb
[~]# ls /mnt/usb/mydb/db
backup_mydb.tar.gz  backup_mydb.week1.tar.gz
[~]# umount /mnt/usb
[~]# crontab -e
0 5 * * * /bin/sh /usr/local/bin/shell/backup_mysql.sh > /dev/null 2>&1


Leave a Reply

preload preload preload