メインコンテンツまでスキップ

ExmentのDBを自動バックアップする

DBバックアップが必要な場合の簡易メモです。
メモなので抜けてたりコマンドミスがあったらry
Nextcloud版もあります。
そっちにはシェルスクリプト版も書いてます。

バックアップ先フォルダの作成と権限の設定

作成するバックアップ先は自由に変更してください。

sudo mkdir -p /var/backups/exment/db
sudo chown -R root:root /var/backups/exment
sudo chmod -R 750 /var/backups/exment

パスワードの設定ファイルを作成する

cron使うのでパスワード直書きを避けるためです。

sudo vi /root/.exment_db.cnf

以下を追加

[client]
user=exment
password="パスワードを入力してください"
host=localhost
sudo chmod 600 /root/.exment_db.cnf

バックアップテスト(接続確認)

設定ファイルを使ってバックアップが作成できるかテストします。
※テストファイルは確認後に消しても大丈夫です。

sudo mysqldump --defaults-extra-file=/root/.exment_db.cnf --single-transaction --default-character-set=utf8mb4 exment_database | gzip > /var/backups/exment/db/exment_db_test.sql.gz

Cronでやる場合

追加する

sudo crontab -u root -e

以下のように設定する

0 4 * * * mysqldump --defaults-extra-file=/root/.exment_db.cnf --single-transaction --routines --events --hex-blob --default-character-set=utf8mb4 exment_database | gzip > /var/backups/exment/db/exment_db_$(date +\%F_\%H-\%M-\%S).sql.gz

古いバックアップを自動削除する

古いバックアップの削除 (4:10に実行)

10 4 * * * find /var/backups/exment/db/ -name "exment_db_*.gz" -mtime +7 -delete