WordPressのプラグインを使わずに、mysqlをcronで自動バックアップ
WordPressには「WP-DBManager」なる定期的にバックアップを取ってくれるプラグインがありますが、今回はcronでmysqlをバックアップするように設定します。
まず、バックアップディレクトリを作製します。
私の環境の場合、「/home/backup/mysql」に保存していきます。
mkdir -pv /home/backup/mysql
次に、cron.dailyにmysqldump を実行させるシェルスクリプトを作成します。
vi /etc/cron.daily/backup_mysql.sh
エディタを開いたら、下記内容を書き込みます。
#!/bin/sh
# 他のユーザからバックアップを読み込めないようにする
umask 077
# バックアップファイルを保存するディレクトリ
path='/home/backup/mysql'
# バックアップをとりたいデータベース名
db_name=("db_name_01" "db_name_02" "db_name_03")
date=`date +%y%m%d`
# 保存期間
date_old=`date --date "14 days ago" +%y%m%d`
for i in ${db_name[@]}
do
# mysqldump実行(ユーザー名とパスワードは任意に)
mysqldump --user=XXX --password=YYY --skip-lock-tables --no-create-db --single-transaction --databases ${i} > ${path}/${i}_${date}.sql
# パーミッション変更
chmod 700 ${path}/${i}_${date}.sql
# 保管期間を過ぎた古いバックアップファイルを削除
rm -f ${path}/${i}_${date_old}.sql
done
rootユーザー以外の閲覧を禁止にするためバックアップシェルスクリプトのパーミッションを変更する
chmod 700 /etc/cron.daily/backup_mysql.sh
試しにシェルを実行。
/etc/cron.daily/backup_mysql.sh
設定通りバックアップが取れているかを確認する
ls -l /home/backup/mysql
こうなっていればOK
db_name_01_170511.sql db_name_02_170511.sql db_name_03_170511.sql
Comment