mysql のデータベースバックアップ・リストアスクリプトを作成しました。
root でスクリプト作成・修正し実行して下さい。
#!/bin/bash
### このスクリプトは root で作成・修正し実行してください ###
# nano mysql_bakcup.sh
# chmod +x mysql_bakcup.sh
# ./mysql_bakcup.sh
### mysql dump ファイル作成・リストアスクリプト ###
### 動作確認 ###
# lsb_release -a
# No LSB modules are available.
# Distributor ID: Ubuntu
# Description: Ubuntu 22.04.1 LTS
# Release: 22.04
# Codename: jammy
### 環境に合わせた修正箇所ここから ###
# dump ファイルを保存する日数
PERIOD="1"
# dump ファイル保存ディレクトリ
BKP_DIR="backup/mysql"
# dump ファイル名を定義
FILEPREFIX="mysql-dump"
# mysql root パスワード
MYS_PASS="mysql_root_password"
### 環境に合わせた修正箇所ここまで ###
### ----------- 処理ここから ----------- ###
cd
FILEDATE=$(date +%Y-%m-%d_%H:%M:%S)
FILENAME=$FILEPREFIX"-"$FILEDATE
# dump ファイル保存ディレクトリがなければディレクトリ作成
if [ ! -d ~/$BKP_DIR ]; then
mkdir -p $BKP_DIR
echo $BKP_DIR "作成しました"
fi
# mysqldumpを実行しdumpファイルを出力
mysqldump -uroot -p$MYS_PASS --single-transaction --all-databases --events > $BKP_DIR/$FILENAME.sql
cp ~/$BKP_DIR/$FILENAME.sql ~/$BKP_DIR/$FILEPREFIX"_"last.sql
# dump ファイルでのリストア
if [ -f ~/$BKP_DIR/$FILEPREFIX"_"last.sql ]; then
mysql -uroot -p$MYS_PASS < ~/$BKP_DIR/$FILEPREFIX"_"last.sql
echo "RESTORED "$BKP_DIR"/"$FILEPREFIX"_last.sql"
fi
# 出力されたdumpファイルのパーミション変更
chmod 0700 ~/$BKP_DIR/$FILENAME.sql
chmod 0700 ~/$BKP_DIR/$FILEPREFIX"_"last.sql
# 削除対象年月日を取得
DELDATE=$(date --date="$PERIOD days ago" +%Y-%m-%d)
# 削除対象ファイル名を生成
DELFILE=$FILEPREFIX"-"$DELDATE
if [ -f ~/$BKP_DIR/$DELFILE* ]; then
# 削除実行
rm -f ~/$BKP_DIR/$DELFILE*.sql
echo "DELETED "$BKP_DIR"/"$DELFILE"*.sql"
fi
### ----------- 処理ここまで ----------- ###
### cron 設定例 ###
# crontab -e
# 以下1行追加 行頭の # は除きます 20時にスクリプト実行します
#00 20 * * * /path/to/mysql_bakcup.sh
### 参考にさせていただいたサイト ###
# https://leben.mobi/blog/mysql_auto_backup/linux/