macOSのAutomatorアプリでDBサーバーを自動バックアップする
macOSのAutomatorアプリでDBサーバーを自動バックアップする方法を作ったので、まとめました。
公開日: 2025.1.20
流れ
MySQL DBサーバーのバックアップとしては、通常サーバー自体でmysqldumpを実行して、どこからに保存をすることが多いですが、今回はシンプルにMacBookでmysqldumpをして、iCloudドライブにクラウド保存する方法にしました。
MySQLデータベースは200MB程度の小さなDBですが、圧縮すると1/10程度まで小さくなるため、5GBと小さなiCloudドライブでも十分にバックアップストレージとして役に立ちます。
流れとしては、
- Automatorアプリでmysqldump & Gzip & 直近7日以外のファイルを削除するスクリプトを作る
- カレンダーアプリで提示実行
という感じです。簡単で、プログラムの知識があまりなくてもできるのがメリットです。
Automatorでアプリを作成
まずは、Automatorでアプリを作ります。
- Automatorアプリを開く
- アプリケーションをクリック
- 左カラムの「ライブラリ」からユーティリティ -> シェルスクリプトを実行を選択
- 以下のコードを挿入して、保存
#!/bin/bash
# MySQL 接続情報
DB_HOST=""
DB_USER=""
DB_PASSWORD=""
DB_NAME=""
DB_PORT=""
DATE=$(date +'%Y-%m-%d_%H-%M-%S')
# iCloudドライブの書類フォルダをバックアップ先に指定
BACKUP_DIR="$HOME/Documents/Backups/directus-db"
# バックアップディレクトリが存在しない場合は作成
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
# mysqldumpを使ったバックアップ実行
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_backup_$DATE.sql"
mysqldump -h"$DB_HOST" -P "$DB_PORT" -u"$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "$BACKUP_FILE"
# 実行結果を確認
if [ $? -eq 0 ]; then
echo "Backup successful: $BACKUP_FILE"
# 圧縮処理
gzip "$BACKUP_FILE"
if [ $? -eq 0 ]; then
echo "Backup compressed: ${BACKUP_FILE}.gz"
else
echo "Failed to compress the backup file."
exit 1
fi
else
echo "Backup failed. Please check your credentials or connection."
exit 1
fi
# 7日前を超えた圧縮ファイルを削除
find "$BACKUP_DIR" -type f -name "${DB_NAME}_backup_*.sql.gz" -mtime +7 -exec rm {} \;
mysqldumpが必要になるので、brewでインストールしておきましょう。
brew install mysql
iCloudドライブ の書類はローカル書類と同期しているので、そこに保存すれば自動でiCloudドライブに保存されます。
Automatorファイルをカレンダーアプリで提示実行
macOS標準のカレンダーアプリは、ファイルの実行も可能です。
- 実行したい時間に予定を作成
- 普通に予定を作る
- 「通知」を「カスタム」にして、「ファイルを開く」を選択
これで、cronと同じ感覚で実行ができます。
ということで、macOSのAutomatorアプリでDBサーバーを自動バックアップする方法を開設しました。
AutomatorもカレンダーアプリもどちらもmacOSの標準アプリで、使いこなすと非常に強力なアプリです。
ぜひ使ってみてください。