
運用サーバプログラムがKUSANAGI 9になり、ベースOSもCentOS Stream9になりました。
それにより、データベースバックアップの自動化設定にも変更点があったので、その覚え書きです。
環境
Bash
kusanagi -V
KUSANAGI Version 9.6.6-1
mysql -V
mysql Ver 15.1 Distrib 10.11.10-MariaDB, for Linux (x86_64) using EditLine wrappermysqldumpを実行できるようにする
シェルスクリプトの作成
cronで実行するシェルスクリプトを作成し、毎日バックアップを作成するように、日付を付与してバックアップを残せるようにします。
backup_db.sh
Plaintext
#!/bin/sh
# -------------------------------------------------------
#
# [環境設定]
#
# バックアップファイルを保存するディレクトリパス
dirpath='/dump_backup'
# バックアップを保存する日数
period=14
# -------------------------------------------------------
#
# [バックアップ取得処理]
#
# ファイル名を定義 ※「mysql-dump-yymmdd.sql」となるようにします
fileprefix="wordpress"
filedate=`date +%Y%m%d`
filename=$fileprefix$filedate
# mysqldumpを実行しdumpファイルを出力
mysqldump -u db_user -p db_apss_--single-transaction --flush-logs wordpress | gzip > $dirpath/$filename.dump.gz
# 出力されたdumpファイルのパーミション変更
chmod 700 $dirpath/$filename.dump.gz
#
# [ローテーション処理]
#
# 削除対象年月日を取得
olddate=`date --date="$period days ago" +%Y%m%d`
# 削除対象ファイル名を生成
oldfile=$fileprefix$olddate
# 削除実行
rm -f $dirpath/$oldfile.dump.gzスクリプトに実行権限を付与する
Bash
chmod u+x backup_db.sh動作確認
動作確認
Bash
/dump_backup/backup_db.shcronの設定
Bash
vi /etc/crontab
crontab -e最下行に00 05 * * * ./backup_db.shを追記します。
Plaintext
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 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
00 05 * * * sh /dump_backup/backup_db.shcronを再起動する
Bash
systemctl restart crond
管理人
今回は以上となります。お疲れ様でした。


コメント