【CentOS Stream9】データベースの自動バックアップを設定する

この記事は約6分で読めます。

運用サーバプログラムが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 wrapper

mysqldumpを実行できるようにする

シェルスクリプトの作成

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.sh

cronの設定

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.sh

cronを再起動する

Bash
systemctl restart crond
管理人
管理人

今回は以上となります。お疲れ様でした。

コメント

タイトルとURLをコピーしました