ちゃんと覚えておけよ?

忘れちゃいけない事のメモ、覚え書き

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

*